spine_module
A rigging module that generates transforms on a spline. It generates a variable number of FK controls driving the IK controls, and a variable number of joints driven by the IK controls. It also support length preservation, and squash and stretch controlled by attributes placed on the IK end controls. This module requires five pins, acting as the control points of the generated spline:
base: The base of the spine.base_handle: The handle after the spine base.middle: The middle of the spine.end_handle: The handle before the spine end.end: The end of the spine.
Inputs
inputs
The inputs struct of this module, containing all input setup and input animation data to drive this module. This 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 in the Parameter Editor.setup.custom: An object containing any custom data setup data to be used within theuser_setup.animation.control_operator_matrices: An array of operator matrices to drive the control transforms. Operators are automatically applied to transforms before theuser_animationsolver.animation.joint_operator_matrices: An array of operator matrices to drive the joint transforms. Operators are automatically applied to transforms before theuser_animationsolver.animation.attribute_data: Arrays of data for the control attributes. Attributes generated by this module are created on the host application's controls from theoutputs. Their values are connected back to theinputsin order to be used within theuser_animationsolver.animation.custom: An object containing any custom data setup data to be used within theuser_animationsolver.
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 theaxes_scale,arrowhead_size_ratio, andstem_width_ratiovalues.Tube: Displays the strands as thick tubes, with a radius relative to the scales of the transforms, and theaxes_scale,arrowhead_size_ratio, andstem_width_ratiovalues.
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_setupof 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 thefind_*nodes within theuser_animationarea 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
inputssetup 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 individualfind_*nodes by enabling theirforce_lookup_evaluationparameters.
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.
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.
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 FK control, or all IK controls if no FK controls exist.
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 first 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'sname.<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.
IK_base_control_name
The full name of the IK base control.
IK_base_handle_control_name
The full name of the IK base handle control.
IK_middle_control_name
The full name of the IK middle control.
IK_end_handle_control_name
The full name of the IK end handle control.
IK_end_control_name
The full name of the IK end control.
FK_control_names
The full name of the FK controls.
hook_base_control_name
The full name of the hook base control.
hook_end_control_name
The full name of the hook end control.
joint_names
The full name of the joints.
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.
up_vector
The up vector to align the secondary_axis of the transforms with.
Spline
resampling_mode
The type of resampling to perform:
Linearperforms linear interpolation between IK control transforms.Catmull-Romperforms Catmull-Rom interpolation between IK control transforms.B-Splineperforms B-Spline interpolation between IK control transforms.
spacial_resampling
If enabled, the resampled transforms will be distributed evenly. Otherwise, the resampling is performed parametrically.
Entity Counts
FK_control_count
The number of FK controls to generate along the spine.
joint_count
The number of joints to generate along the spine.
Transform Settings
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.
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.
Display
orient_shapes_to_world
If enabled, the control shape geometries are aligned to world coordinates and do not inherit the orientation of their respective transforms.
IK_control_shape
The shape of the major IK controls.
IK_control_color
The color of the major IK control shapes.
IK_control_translation
The relative translation of the major IK control shapes.
IK_control_rotation
The relative rotation of the major IK control shapes, in degrees.
IK_control_scale
The relative scale of the major IK control shapes.
IK_middle_control_shape
The shape of the middle IK control.
IK_middle_control_color
The color of the middle IK control shape.
IK_middle_control_translation
The relative translation of the middle IK control shape.
IK_middle_control_rotation
The relative rotation of the middle IK control shape, in degrees.
IK_middle_control_scale
The relative scale of the middle IK control shape.
IK_handle_control_shape
The shape of the IK handle controls.
IK_handle_control_color
The color of the IK handle control shapes.
IK_handle_control_translation
The relative translation of the IK handle control shapes.
IK_handle_control_rotation
The relative rotation of the IK handle control shapes, in degrees.
IK_handle_control_scale
The relative scale of the IK handle control shapes.
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.
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 spine when squashing occurs.
stretch_profile
The fCurve to modulate the scaling along the spine 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.
