Skip to main content

plug

Creates, edits, or deletes attributes (plugs) on rig nodes.

The plug modifier is the primary tool for managing the interface of your controllers. It allows you to expose custom attributes for animators, set default values, manage min/max limits, or lock/hide transform channels to clean up the Channel Box.

Parameters

Core Parameters

ParameterTypeDefaultDescription
node / nodesnode / list[node]The target node(s) on which the plugs will be edited or created.
<plug_name>dict / valueThe name of the attribute to create or edit. See Plug Configurations below.

Plug Configurations

To define a plug, add its name directly as a key within the plug dictionary (e.g., my_attr: or t.x:). Its value can be a direct value (shorthand for setting its value) or a dictionary of configurations:

OptionTypeDefaultDescription
(Direct Value)float / int / boolShorthand syntax. Directly assigns the value to the plug.
typestrfloatThe data type. Required only if the plug doesn't exist yet. Valid values: float, int, bool, enum.
setfloat / int / bool / listAssigns the plug a value. If setting a vector plug (t, r, s), provide a list of 3 values [x, y, z].
keyable / k / showbooloffMakes the plug visible and keyable for animation in the Channel Box.
hidebooloffHides the plug from the Channel Box and makes it non-keyable.
lock / lbooloffLocks the plug to prevent any editing.
minfloat / intSets a minimum value limit.
maxfloat / intSets a maximum value limit.
nice_namestrUI-friendly display name for the Channel Box.
enumlist[str] / dictList of values for enum plugs (e.g., ['A', 'B']). Also accepts a dict to map specific integer indices to strings.
flipbooloffAutomatically multiplies set, min, and max values by -1 when executed on mirrored branches.
proxyplugCreates a proxy attribute, sharing the exact value of the target plug without creating a separate connection.

Examples

Channel Box Cleanup

A standard operation to lock and hide scales and visibility on a controller. Notice the shorthand syntax for vis.

plug:
node: my_ctrl::node
s.x: { lock: on, hide: on }
s.y: { lock: on, hide: on }
s.z: { lock: on, hide: on }
vis: off

Set value

The simplest way to edit an attribute of an object in the rig.

plug:
node: msh_wonderbra->xfo
vis: off

Vector Expansion

You can target vectors directly (e.g., t, r, s). The modifier will automatically expand them to their .x, .y, and .z components.

plug:
node: offset::roots.0
t: [ 0, 5.5, 0 ]

Custom Animated Attributes

Creates custom floating-point attributes with limits, making them keyable for the animator.

plug:
node: shp_face::node
m_open: { type: float, k: on }
m_close: { type: float, k: on }
t.x: { set: 2, min: 0, max: 5, k: 0 }

Enum Menus

Creates a dropdown enum menu for controllers.

plug:
node: camera::ctrls.camera
mask:
type: enum
enum: [ '16/9', '4/3', '2.35' ]
keyable: on

Proxy Attributes

A proxy attribute allows a controller to display and drive an attribute that physically lives on another node, acting as a direct shortcut.

plug:
node: source::ctrls.0
weight:
type: float
k: on

plug:
node: target::ctrls.0
weight:
type: float
proxy: source::ctrls.0@weight