Skip to content
weSkelDOCUMENTATION
Documentation/Rigging/Controller Shape Editor

Controller design

Controller Shape Editor

Edit, transfer and save controller shapes.

NURBSPresetsPreview

Controller Shape Editor edits controller NURBS curves: shapes, color and line width, without changing controller TRS values. It supports module controls and standalone transforms, including multiple curves per controller.

Controller Shape Editor

In the weSkel shelf, click Controller Shape Editor.

From Python
from weSkel.src.tools import controller_shapes
controller_shapes.show_dockable(floating=True) # Floating window; dock where you prefer.
# controller_shapes.show() # Alternative: standalone floating window.

Maya may restore a saved docking state.

Controller Shape Editor · Poseidon theme.
Panel Function
Targets on the left Load a module or follow Maya selection, then select the rows to edit.
XY / XZ / YZ Three local projections shared by all tabs, independent of scene cameras.
Edit Shape transforms, appearance and shape catalog.
Transfer Explicit mirroring, copying, adding and swapping between controllers.
Library Controller or module presets: save, share and apply.

The status bar at the bottom shows the result or reason for refusal. Disabled buttons explain their prerequisite in a tooltip.

Action or setting Effect
Module Initial mode. Choosing a module loads it automatically. The green button refreshes modules and reloads the current one.
Selection The list follows Maya selection. Shapes and components resolve to their transform, without duplicates. An empty transform can receive Paste.
Row selection Click for one row; Ctrl / Shift for multiple rows; Ctrl+A in the list for all visible rows. “Selected” actions use these rows unless Maya is explicitly mentioned.
Filter controllers… Filters by name and deselects hidden rows. The counter shows selected rows against the loaded total.
Right-click → Select Selects the chosen rows in Maya. Right-clicking an unselected row selects that row alone.
Show CVs Shows pink CVs in all three projections; initially off. The counter reports controllers, CVs and any empty destinations.

In Module mode, changing Maya selection does not replace the loaded list. Multiple rows overlay their shapes in local space. Choosing a preset or Copy from Maya previews its source shape without applying it.

XY / XZ / YZ · Show CVs · Poseidon theme.

Select rows, then adjust the shape. Transforms act on local CVs, not controller channels.

1Mirror 2Transforms 3Pivot / Flip 4Appearance 5Shape 6Session state
Edit · Poseidon theme.
Guide Function
1 · Mirror On by default when a counterpart exists. Propagates transforms, flips, centering, color, width and shape choices.
2 · Transforms Move / Rotate (deg) / Scale / Shear edit the shape live. Freeze keeps the result as the new baseline; Reset removes current live offsets.
3 · Pivot / Flip Choose the controller origin or local CV bounds center for Rotate, Scale, Shear and Flip.
4 · Appearance Pick color… applies color to sub-shapes on confirmation; cancelling changes nothing. Width edits their line width live.
5 · Shape The menu immediately replaces geometry with a built-in or personal shape. Open catalog opens the visual picker.
6 · Session state Save state / Restore state remember and restore geometry, color and width during this session.
Action Effect
Move / Rotate / Scale / Shear Offsets from the editing baseline: neutral values 0 / 0 / 1 / 0. Negative scale is supported; a component of 0 is rejected. Shear X / Y / Z correspond to the XY / XZ / YZ planes.
Freeze Keeps the current shape and resets fields to 0 / 0 / 1. This is not Maya Freeze transforms.
Reset Removes live offsets from the latest baseline. After Freeze, it does not return to the original historical shape. Undo restores the edited shape.
Center shapes Moves the CV bounds center to the local origin without moving the transform.
Flip X / Y / Z Local reflection around the chosen axis and pivot. Mirror can propagate the result to the counterpart.
Save state / Restore state Save replaces the remembered state; Restore returns each target to its own state, including counterparts with Mirror. An initial baseline is captured automatically on first selection or edit.

Changing targets, pivot or Mirror resets the fields while retaining the current shape. Session states are cleared when closing or changing scenes; use presets to keep designs.

Wheel, mirroring and appearance
Setting Behavior
Wheel Move / Scale: 1, or 0.1 with Ctrl. Rotate: 5°, or 1° with Ctrl. Shear: 0.1, or 0.01 with Ctrl.
Mirror Modules pair by roles; standalone controls pair by l_ / r_ names in the same namespace and rig context. Unpaired controls remain editable alone. If both sides are selected, the active row drives the pair once.
Mirror plane Axis, offset and reference come from Transfer. Its Colors / Line widths switches do not control Edit: each operation propagates the property it changes.
Width (mixed) Multiple widths are present. Editing Width makes them uniform. Reset explicitly applies 2, not Maya’s inherited default.
Shape Destination colors and widths are retained. Variants are named, such as clavicle_fk (square) and (rounded); personal controller presets carry (user).

In Edit → Shape, click Open catalog. The catalog includes built-in shapes and your personal controller presets.

1Targets 2Actions 3Search 4Shapes
Controller Shape Catalog · Poseidon theme.
Guide Function
1 · Targets Apply to identifies target rows and Mirror state. The window stays open while you change targets in the editor.
2 · Actions Show CVs is independent of the editor. Add selected… saves a personal shape; the green button reloads personal shapes.
3 · Search Search shapes… filters cards; the counter reports matches. Clear the field to see all shapes.
4 · Shapes Each card shows XY / XZ / YZ and the curve count. Use shape immediately applies to selected rows with Mirror, preserving color and width.

Select exactly one row in the editor → Add selected… → enter Shape name. All local curves are saved in user_data. The shape appears in the catalog, Library and the Shape menu. Existing names are rejected; cancelling creates no file.

Module presets remain in Library. Tool operations refresh the open catalog; after adding a file externally, use the green button or Open catalog. The catalog closes with the editor.

1Options 2Mirror 3Copy / Paste 4Swap
Transfer · Poseidon theme.
Guide Function
1 · Options Geometry is always transferred. Colors / Line widths, initially off, include source properties; otherwise each destination retains its own.
2 · Mirror Mirrors in the current pose, using the axis, offset and reference. Work in a symmetric pose.
3 · Copy / Paste Copy from Maya captures one source. Paste Replace / Paste Add target selected editor rows.
4 · Swap Swap selected exchanges local shapes between two rows with shapes, without mirroring.
Setting Effect
Axis / Plane offset Default X means the YZ plane; Y means XZ; Z means XY. Offset positions the plane along that axis in the reference space; default 0.
Use Maya selection / World One transform selected in Maya becomes the reference: its axes and origin define the plane. World resets to world space.
Left → Right / Right → Left The switch sets the direction of the next Mirror click: Left → Right by default. Changing direction alone does not edit shapes. The source side is explicit, even when the selected row is on the destination side. One row per pair is enough; a lone center controller has no counterpart.

Select one controller in Maya → Copy from Maya → choose destination rows → Paste Replace or Paste Add. In Selection mode, destinations follow Maya selection; an empty group such as null1 is accepted.

Action Effect
Copy from Maya Captures all local curves of one controller and keeps that snapshot in this window. Copy source identifies the source.
Paste Replace Replaces all destination curves with the copied curves.
Paste Add Adds copied curves without removing existing curves.
Swap selected Exactly two rows. One Undo step for the exchange; Colors / Line widths follow Transfer options.

Paste and Swap work in local space, without world projection or implicit mirroring through the Edit toggle. The clipboard does not survive closing.

Curves with history

On a Maya circle with construction history, Replace detaches the generation input of replaced curves; Undo also restores that connection. Add preserves existing curves and history. Incompatible connections are rejected before modification.

1Presets 2Apply preset 3Save preset
Library · Poseidon theme.
Guide Function
1 · Presets Search, select, import or export a preset. The list shows its type and provenance; selecting does not edit the scene.
2 · Apply preset Choose Geometry / Colors / Line widths, check the mapping, then apply.
3 · Save preset Save the selected controller or the entire loaded module.
Action Effect
Save controller… One selected row with shapes. Enter a name to save all its local curves and display properties.
Save module… Module mode only. Saves all loaded module controls by role, even with a partial selection or filter.
Export preset… Exports the selected preset, not the scene directly. The suggested folder is user_data/controller_shapes/exports/; another destination may be chosen.
Import JSON… Validates and copies JSON into the library. Selects and previews the imported preset without applying it. File collisions are rejected.
Search presets… Filters visible name, type and provenance. The green button reloads JSON files. Save / Import / Rename / Duplicate clear the filter and reveal the resulting preset.
Setting Behavior
Controller preset Applies to each selected row. Destinations must already have shapes; use Paste for an empty transform.
Module preset Maps roles across the entire loaded scope, independently of selected or filtered rows. Type, revision and roles must be compatible. Source names do not dictate destination names.
Geometry / Colors / Line widths Geometry starts on; Colors and Line widths start off. Apply geometry, display only, or both.
Mapping / Show long name Mapping updates automatically: role → short name, with separate errors. Show long name displays full DAG paths.
Inspect mapping Revalidates against the current scene, useful after external changes. Does not apply anything.
Apply preset Revalidates and applies chosen properties in one Undo step. Unavailable without destinations, with mapping errors or with no active property.
Rename, duplicate and delete
Action Effect
Right-click → Rename… Renames the label and file. Rejects collisions or a file changed since it was read.
Right-click → Duplicate… Creates a separate file under a new name, suggested as “name copy”.
Right-click → Open folder Opens the effective preset folder. Also available from empty list space.
Delete preset… Confirm the name and file; Cancel is the default. Removes only that library JSON, not scene shapes or exports. Maya Undo cannot restore the file.

To share a module: Save module… → Export preset…, then on a compatible module Import JSON… → mapping → Apply preset. Library changes also refresh the Shape menu and the open catalog.

Topic Behavior
Undo / Redo Scene edits support Undo/Redo: one step per action, with numeric adjustments grouped by gesture. Preset file writes and deletions are not Maya Undo operations.
Module design Custom shapes are stored as design data for save/reopen and compatible rebuilds. The backend retains control of transforms, animation and ownership.
Personal data Presets: user_data/controller_shapes/presets/.
Suggested exports: user_data/controller_shapes/exports/.
Both splitter proportions: user_data/ui/controller_shapes.ini.
Temporary state Current selection, Edit fields, clipboard and Session state do not persist on closing. Splitter proportions and presets do.
Scope NURBS geometry only; no mesh or joint editing. Standalone transforms need no _ctrl suffix. Instancing, references, locks, incompatible connections or invalid ownership may block editing.
user_data location and JSON format

The root follows weSkel’s resolver: explicit_root when supplied, otherwise WESKEL_USER_DATA_ROOT, otherwise user_data in the installed package. Presets use V2 with provenance; V1 is still readable. Missing provenance is identified, never inferred from the current rig.