Share

arm_module

A rigging module that defines a two-bone arm with a variable number of twists joints, all driven by IK and FK controls. This module requires at least three pins:

  • shoulder The rest position of the shoulder.
  • elbow The rest position of the elbow.
  • hand The rest position of the hand.
  • hand_aim (Optional) The rest position of the hand tip, used to orient the hand joint and controls.

Inputs

inputs

The Rigging::Module::Inputs struct of this module, containing all input setup and input animation data to drive this module. inputs is expected to be exposed to the host application.

  • 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 on 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 double4x4 operator matrices to drive the control transforms. Operators are automatically applied on transforms before the user_animation solve.
  • animation.joint_operator_matrices An array of double4x4 operator matrices to drive the joint transforms. Operators are automatically applied on transforms before the user_animation solve.
  • 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 solve.
  • animation.custom An object containing any custom data setup data to be used within the user_animation solve.

parents

The parent modules' outputs, 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 standard parameters of a rigging module.

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.

state

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

  • Animation Sets the transforms in their full animation states. Transforms are fully affect by movement from parent modules, by their operators, and animation solve.
  • Rest (Relative) Sets the transforms in their relative rest states. Transforms are still affected by movement from parent modules, but not by their operators, nor the animation solve.
  • Rest (Absolute) Sets the transforms in their absolute rest states. Transforms are not affected by movement from parent modules, their operators, or animation solve.

Diagnostics

Displays this module's resulting pins, controls, joints and transforms upon enabling the D Terminal 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 1px wide.

  • 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, profile 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 force_setup_evaluation is enabled before tweaking these parameters, otherwise the setup will not be re-evaluated until something forces it to recompute.

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 a the first transform that contain 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 parent control found will be used as the parent of the first arm FK 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 parent control found will be used as the parent for the two arm IK controls.

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 parent joint found will be used as the parent of the first arm joint.

primary_axis

Specifies the transform axis that should be aligned with the direction from each transform to its predecessor. For example, if this is set to [0, 0, 1], then the Z axis of each transform will point towards the next transform in the chain.

secondary_axis

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

up_vector

The up vector onto which the secondary_axis of the transforms should align.

upper_twist_joint_count

The number of upper twist joints to generate. Upper twist joint positions are interpolated between the shoulder and elbow joints.

lower_twist_joint_count

The number of lower twist joints to generate. Lower twist joint positions are interpolated between the elbow and hand joints.

FK_control_shape

The shape of the FK controls.

FK_control_color

The color 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's control.

IK_target_control_color

The color of the IK target's control shape.

IK_target_control_rotation

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

IK_target_control_scale

The relative scale of the IK target's control shape.

IK_pole_target_control_shape

The shape of the IK pole target's control.

IK_pole_target_control_color

The color of the IK pole target's control shape.

IK_pole_target_control_rotation

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

IK_pole_target_control_scale

The relative scale of the IK pole target's control shape.

joint_color

The color of the arm joints.

joint_radius

The radius of the arm joints.

Outputs

outputs

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

Was this information helpful?