Share

arm_module

A module that generates a two-bone arm with with a variable number of twist joints. It supports IK/FK blending, bendy controls, and squash and stretch. This module requires three pins:

  • shoulder: The base of the arm.
  • elbow: The middle of the arm.
  • wrist: The end of the arm.

Inputs

inputs

The inputs struct of this module, containing all input setup and input animation data to drive this module. After you have defined the default pins, expose this port to the host application by connecting it to the graph's input node (going upward through any parent compounds as necessary).

  • setup.pins: An array of pins. Pins are helpers transforms acting as guides, usually used to define the rest transformation of controls and joints. Default pins for this port can be set in the Parameter Editor.
  • setup.custom: An object containing any custom data setup data to be used within the user_setup.
  • animation.control_operator_matrices: An array of operator matrices to drive the control transforms. Operators are automatically applied to transforms before the user_animation solver.
  • animation.joint_operator_matrices: An array of operator matrices to drive the joint transforms. Operators are automatically applied to transforms before the user_animation solver.
  • animation.attribute_data: Arrays of data for the control attributes. Attributes generated by this module are created on the host application's controls from the outputs. Their values are connected back to the inputs in order to be used within the user_animation solver.
  • animation.custom: An object containing any custom data setup data to be used within the user_animation solver.

parents

The outputs of parent modules, if any. Parents are primarily used to define parent controls and parent joints, under which the controls and joints generated by this module will be parented.

General

The parameters shared by all rigging modules.

name

Defines the name of this module. This is primarily used to identify this module, but can also be used as a prefix for control and joint names. The name is also automatically added as the first tag in the tag list of all entities produced by this module.

state

The state of this module's control and joint transforms.

  • Animation: Sets the transforms to their full animation states. Transforms are affected by movement from parent modules, by their operators, and animation solver.
  • Rest (Relative): Sets the transforms to their relative rest states. Transforms are affected by movement from parent modules, but not by their operators, nor by the animation solver.
  • Rest (Absolute): Sets the transforms to their absolute rest states. Transforms are neither affected by movement from parent modules, their operators, nor by the animation solver.

Diagnostics

Displays this module's resulting pins, controls, joints and transforms upon enabling the terminal diagnostic flag.

display_pins

If enabled, displays the pins as red points.

display_controls

If enabled, displays the control shapes as either strands or meshes, depending on the specified control shapes.

display_joints

If enabled, displays the joints as a mix of points and strands.

display_transforms

If enabled, displays the transforms of the enabled diagnostic entities. For example, if display_pins is enabled but not display_controls and display_joints, only the transforms of the pins will be displayed.

axes_shape

The type of geometry shader to apply on the resulting transform axes.

  • Wire: Displays the strands as thin lines.
  • Ribbon: Displays the strands as strips, with a width relative to the scales of the transforms, and the axes_scale, arrowhead_size_ratio, and stem_width_ratio values.
  • Tube: Displays the strands as thick tubes, with a radius relative to the scales of the transforms, and the axes_scale, arrowhead_size_ratio, and stem_width_ratio values.

axes_scale

A multiplier to increase or decrease the scale of the transform axes to display.

Evaluation

profile_evaluation

If enabled, profiles this module, as well as the individual setup and animation computation. The result of the profiling can be seen in the host application's profiler.

edit_mode

Controls whether the module operates in an "editing" or "performance-optimized" mode by managing the evaluation of both the user_setup and the lookup computations of find_* nodes in the user_animation. This should always be enabled while editing the inside of this module or while tweaking parameters that directly affect the setup. Once editing is complete, it is highly recommended to disable this mode to maximize performance.

  • When enabled, The user_setup of this module will be evaluated every time the graph evaluates, ensuring that changes to the module's setup are applied immediately. The lookup computation of the find_* nodes within the user_animation area will be forced to update every time the graph evaluates.

  • When disabled, The result of the setup will be cached and only updated if the inputs setup data is dirty or if any parent module's setup is dirty. The result of the lookup will also be cached and reused to retrieve the target data, optimizing performance by avoiding unnecessary re-evaluations. It will only be updated if this module's setup becomes dirty. Note that you can still force the lookup computation of individual find_* nodes by enabling their force_lookup_evaluation parameters.

Setup

The parameters affecting the user_setup area of this module. Make sure that edit_mode is enabled before tweaking these parameters, otherwise the setup will not be re-evaluated until something forces it to recompute.

side

Specifies which side of the body the module belongs to and controls mirroring behavior.

  • Left: Uses the primary_axis and secondary_axis exactly as defined.
  • Right: Mirror orientations by negating the primary_axis and secondary_axis internally.

create_FK_controls

If enabled, creates all FK controls.

create_IK_controls

If enabled, creates all IK controls.

create_bendy_controls

If enabled, creates all bendy controls. This requires either create_FK_controls or create_IK_controls to be enabled.

Parenting

Defines how entities in this module are parented under entities from other modules. Connections made to the parents port determine which modules can be queried for potential parent entities.

search_method

The method to search for entities from parent modules to be used as parents for the entities of this module.

  • By Name: Searches an entity using a pattern expression.
  • By Tags: Searches an entity using a comma-separated list of tags.

find_all_tags

If search_method is set to By Tags, and if enabled, the transforms to find must contains all the tags specified above. For example, if a, b, c are specified, the search will select the first transform that contains all three a, b, and c tags. If disabled, the search will select a transform that contains any of the tree tags to find.

FK_control_parent

A name expression if search_method is set to By Name, or a comma-separated list of tags if search_method is set to By Tags, to search on parent module controls. The first matching entity will be used as the parent of the FK shoulder control.

IK_control_parent

A name expression if search_method is set to By Name, or a comma-separated list of tags if search_method is set to By Tags, to search on parent module controls. The first matching entity will be used as the parent of the IK target and pole target controls.

bendy_control_parent

A name expression if search_method is set to By Name, or a comma-separated list of tags if search_method is set to By Tags, to search on parent module controls. The first matching entity will be used as the parent of the first upper bendy control.

joint_parent

A name expression if search_method is set to By Name, or a comma-separated list of tags if search_method is set to By Tags, to search on parent module joints. The first matching entity will be used as the parent of the shoulder joint.

Naming

Defines the naming patterns for generating entity names. You can use tokens to automatically derive parts of a name from the module context or entity index.

  • <module_name>: Replaced with the current module's name.
  • <index>: Replaced with the zero-based index of the entity (e.g., 0, 1, 2…). Only applies when multiple related entities are created.
  • <number>: Replaced with the one-based index of the entity (e.g., 1, 2, 3…). Only applies when multiple related entities are created.

FK_shoulder_control_name

The full name of the FK shoulder control.

FK_elbow_control_name

The full name of the FK elbow control.

FK_wrist_control_name

The full name of the FK wrist control.

IK_target_control_name

The full name of the IK target control.

IK_pole_target_control_name

The full name of the IK pole target control.

upper_bendy_control_names

The full name of the upper bendy controls.

middle_bendy_control_name

The full name of the middle bendy control.

lower_bendy_control_names

The full name of the lower bendy controls.

hook_control_name

The full name of the hook control.

shoulder_joint_name

The full name of the shoulder joint.

upper_twist_joint_names

The full name of the upper twist joints.

elbow_joint_name

The full name of the elbow joint.

lower_twist_joint_names

The full name of the lower twist joints.

wrist_joint_name

The full name of the wrist joint.

Orientation

primary_axis

Specifies the control and joint transforms axis that should aim toward the next entity's position in the chain. For example, if this is set to [0, 0, 1], then the Z axis of the controls and joints will point toward the next entity's position.

secondary_axis

Specifies the control and joint transforms axis that should be aligned with the up_vector. For example, if this is set to [0, 1, 0], then the Y axis of the transform will try to align itself with the direction specified by the up_vector.

pole_target_fallback_offset

A position offset in world space, relative to the elbow. It is applied when the pole target position cannot be derived reliably. For example, when the shoulder, elbow, and wrist are aligned in a straight line and the pole direction becomes undefined.

align_IK_target_to_world

If enabled, align the IK target's transform's orientation to world coordinates.

Twist Joint Count

upper_twist_joint_count

The number of upper twist joints to generate. Their positions are evenly interpolated along the segment between the shoulder and elbow joints.

lower_twist_joint_count

The number of lower twist joints to generate. Their positions are evenly interpolated along the segment between the elbow and wrist joints.

Bendy Control Count

upper_bendy_control_count

The number of upper bendy controls to generate. Their positions are evenly interpolated along the segment between the shoulder and elbow joints. The count cannot exceed the number of upper twist joints.

lower_bendy_control_count

The number of lower bendy controls to generate. Their positions are evenly interpolated along the segment between the elbow and wrist joints. The count cannot exceed the number of upper lower joints.

Transform Settings

FK_control_rotation_order

The rotation order of the FK control transforms in the host application.

FK_control_lock_translation

Locks the X, Y and Z translation of the FK control transforms in the host application.

FK_control_lock_rotation

Locks the X, Y and Z rotation of the FK control transforms in the host application.

FK_control_lock_scale

Locks the X, Y and Z scale of the FK control transforms in the host application.

FK_control_lock_shear

Locks the X, Y and Z shear of the FK control transforms in the host application.

IK_control_rotation_order

The rotation order of the IK control transforms in the host application.

IK_control_lock_translation

Locks the X, Y and Z translation of the IK control transforms in the host application.

IK_control_lock_rotation

Locks the X, Y and Z rotation of the IK control transforms in the host application.

IK_control_lock_scale

Locks the X, Y and Z scale of the IK control transforms in the host application.

IK_control_lock_shear

Locks the X, Y and Z shear of the IK control transforms in the host application.

bendy_control_rotation_order

The rotation order of the bendy control transforms in the host application.

bendy_control_lock_translation

Locks the X, Y and Z translation of the bendy control transforms in the host application.

bendy_control_lock_rotation

Locks the X, Y and Z rotation of the bendy control transforms in the host application.

bendy_control_lock_scale

Locks the X, Y and Z scale of the bendy control transforms in the host application.

bendy_control_lock_shear

Locks the X, Y and Z shear of the bendy control transforms in the host application.

Display

FK_control_shape

The shape of the FK controls.

FK_control_color

The color of the FK control shapes.

FK_control_translation

The relative translation of the FK control shapes.

FK_control_rotation

The relative rotation of the FK control shapes, in degrees.

FK_control_scale

The relative scale of the FK control shapes.

IK_target_control_shape

The shape of the IK target control.

IK_target_control_color

The color of the IK target control shape.

IK_target_control_translation

The relative translation of the IK target control shape.

IK_target_control_rotation

The relative rotation of the IK target control shape, in degrees.

IK_target_control_scale

The relative scale of the IK target control shape.

IK_pole_target_control_shape

The shape of the IK pole target control.

IK_pole_target_control_color

The color of the IK pole target control shape.

IK_pole_target_control_translation

The relative translation of the IK pole target control shape.

IK_pole_target_control_rotation

The relative rotation of the IK pole target control shape, in degrees.

IK_pole_target_control_scale

The relative scale of the IK pole target control shape.

bendy_major_control_shape

The shape of the bendy major control.

bendy_major_control_color

The color of the bendy major control shape.

bendy_major_control_translation

The relative translation of the bendy major control shape.

bendy_major_control_rotation

The relative rotation of the bendy major control shape, in degrees.

bendy_major_control_scale

The relative scale of the bendy major control shape.

bendy_minor_control_shape

The shape of the bendy minor controls.

bendy_minor_control_color

The color of the bendy minor control shapes.

bendy_minor_control_translation

The relative translation of the bendy minor control shapes.

bendy_minor_control_rotation

The relative rotation of the bendy minor control shapes, in degrees.

bendy_minor_control_scale

The relative scale of the bendy minor control shapes.

joint_color

The color of the joints.

joint_radius

The radius of the joints.

Animation

squash_profile

The fCurve to modulate the scaling along the arm when squashing occurs.

stretch_profile

The fCurve to modulate the scaling along the arm when stretching occurs.

Outputs

outputs

The outputs struct of this module, containing all the data generated by this module. This is expected to be exposed to the host application.

Was this information helpful?