Houdini 22.0 Nodes Geometry nodes

APEX Rig Merge geometry node

Adds rig functionality, skeleton joints, and shapes to an APEX character.

On this page
Since 22.0

This node combines an existing character with a rig or character part. For example, you can add a rigged wing to a character, mirror it to the other side, or create several copies along a skeleton. You can also extend an existing rig with additional APEX nodes and connections.

Connect the character you want to modify to the Character A input. Connect the rig or character part you want to add to the Character B input. Use the Rig, Skeleton, and Shape toggles to choose which parts to combine. Character inputs use a character folder structure, with separate elements for the rig graph, skeleton, and shapes.

The Fuse Mode determines how the incoming rig connects to the existing rig:

If you only need to add graph functionality, you can connect an unpacked APEX graph to Character B. You can also leave Character B disconnected and author the incoming graph using this node’s APEX graph view.

Combining rigs

Automatic connections

In Automatic mode, nodes in the incoming graph that match existing nodes act as connection points. The node reuses the existing nodes and transfers the incoming graph’s connections to them. Nodes that do not match are added to the rig.

For example, an incoming wing rig can include a node named C_chest_ctrl with the wing’s root connected to it. If Character A already has a node with that name, the wing attaches to the existing chest control. You do not need to enter the same connection in the Parent multiparm.

The skeleton is processed similarly. If an incoming joint has the same name as a joint already in Character A, its children are attached to the existing joint and the duplicate incoming joint is removed. This preserves the existing joint’s transform while extending its hierarchy.

Manual connections

In Manual mode, use the Rig tab to specify how to attach the incoming rig:

  • Use Transform Nodes > Parent to attach incoming transform nodes to existing parents. The parenting table also applies to the incoming skeleton when Skeleton is turned on.

  • Use Other Nodes > Connect to connect other graph nodes, including individual sub-ports on variadic ports.

The incoming graph’s promoted parameters are added to the combined rig’s inputs.

Mirroring and duplication

Mirror adds both the original part and a mirrored copy. The From and To patterns rename the mirrored joints and graph nodes, and the mirror plane determines their placement. For example, L_* and R_* rename L_wingRoot to R_wingRoot on the mirrored copy. Use patterns that match the whole name, including the * wildcard.

Duplicate creates named copies of the incoming part. You can place the copies at joints in a skeleton, or arrange them using offsets. Each copy is processed as a segment. If Mirror is also turned on, each segment has an original and mirrored copy.

The transforms in the Settings tab apply to the incoming part. They affect its shape, joints, and rig control rest transforms together. The existing character provides the attachment points for the new part.

Skeletons and control rest transforms

The character’s skeleton and the rig’s control hierarchy can contain different points. The skeleton selected in the Skeleton tab contains the joints used by the character, such as joints used for skin capture. Control rest transforms describe the positions and hierarchy of the rig’s controls, including controls that are not capture joints.

Rig Merge uses this control rest information to place and parent the merged graph’s transform nodes. Turning off Skeleton lets you add rig functionality without adding joints to the character’s skeleton.

Parameters

Fuse Mode

Specifies how to connect the incoming rig to the existing character.

Automatic

Uses the Fuse Graph workflow to reuse matching nodes and connect the rig using the incoming graph’s wiring. Incoming skeleton joints that match existing joints are used as attachment points. The manual Parent and Connect tables are not used.

Manual

Merges the incoming graph and gives you finer control over connections and reparenting through the Parent and Connect tables in the Rig tab. Use these tables to choose which nodes to connect and where to attach incoming transform nodes and skeleton joints.

Rig

When turned on, combines the rig graphs selected in the Rig tab.

Skeleton

When turned on, adds the selected joints from Character B to Character A’s skeleton. This parameter is available when Character B is connected.

Shape

When turned on, adds, replaces, or merges the shapes specified in the Shape tab. This parameter is available when Character B is connected.

Show Graph

Selects the graph shown when you dive into this node’s APEX graph view. This changes the graph used for inspection, not the character output.

Final Rig

Shows the combined rig after the merge.

Input Rig B

Shows the incoming graph. When Character B is disconnected, use this view to author the graph stored on the node.

Reset Input Rig

Clears the graph edits stored on this node. This parameter is available when Character B is disconnected. You can dive to the internal graph by double clicking the given APEX Rig Merge node.

Settings

Transform

Translate

The translation applied to the incoming part before mirroring and copy placement.

Rotate

The rotation, in degrees, applied to the incoming part before mirroring and copy placement.

Scale

The scale applied to the incoming part before mirroring and copy placement.

Mirror

When turned on, also adds a mirrored copy of the incoming part. The original part is retained. Mirroring is applied after the part’s transform and copy placement.

From

The naming pattern for the authored side. For example, L_* matches names beginning with L_.

Direction

The normal of the mirror plane. For example, (1, 0, 0) mirrors across a plane perpendicular to the X axis.

Origin

A position on the mirror plane. With Direction set to (1, 0, 0) and Origin set to (0, 0, 0), the part is mirrored across the YZ plane through the world origin.

Duplicate

When turned on, creates multiple copies of the incoming part. The naming and placement settings in this section apply to each copy.

Source Segment

The source naming pattern used to identify the segment in the incoming part’s names. This is replaced with each copy’s segment name. Specify a source segment when duplicating so the copies can be given distinct names.

New Segment

The base name for the new segments. A numeric index starting at 00 is appended for each copy. For example, wing produces segments named wing00, wing01, and so on. The default, $OS, uses this node’s name.

Copy Mode

Specifies how to place the copies.

Copy To Joints

Places a copy using each target joint’s transform from Skeleton Path.

Copy and Offset

Creates the specified Total Number of copies and places them using the offset parameters.

Skeleton Path

The skeleton element in Character A that provides the copy locations and orientations. This parameter is available when Copy Mode is Copy To Joints.

Joints

The joints to copy to in Skeleton Path. This parameter accepts APEX path patterns. Leave it empty to use all joints. This parameter is available when Copy Mode is Copy To Joints.

Copy and Offset

Total Number

The number of copies to add. This includes the first copy. When Mirror is turned on, a mirrored copy is also added for each of these copies.

Offset Translate

The translation step between copies. The first copy uses a zero translation offset, the second uses this value, the third uses twice this value, and so on.

Offset Rotate

The rotation, in degrees, applied to the copies about Offset Pivot, in addition to the rotation in the Transform section.

Offset Pivot

The pivot for Offset Rotate.

Rig

The parameters in this tab are available when Rig is turned on.

Rig A

The rig graph in Character A to add to. The default is Base.rig.

Rig B

The rig graph in Character B to add. The default is Base.rig.

Nodes

The nodes to include from the incoming rig. This parameter accepts APEX path patterns. Leave it empty to include all nodes.

Transform Nodes

These parameters are available when Fuse Mode is Manual.

Connect to Existing Point Transform

When turned on, connects the incoming transform nodes that drive a skel::SetPointTransforms node to the corresponding node in the combined rig. The connections use the resolved joint names, including segment and mirror renaming, as sub-port names.

Point Transform Name

The name of the existing SetPointTransforms node to connect to. This is the text field beside Connect to Existing Point Transform.

Parent

Specifies parenting relationships for the incoming transform nodes and skeleton joints. Add an entry for each group that needs a new parent.

Enable

When turned on, applies this parenting entry.

Nodes

The incoming nodes or joints to reparent. This parameter accepts APEX path patterns. The pattern is resolved for the current segment and mirrored side.

New Parent

The existing node or joint to parent to. This parameter accepts APEX path patterns and uses the first match. If the parent is not found, the entry is skipped.

Other Nodes

These parameters are available when Fuse Mode is Manual.

Connect

Adds connections between ports in the combined rig. Each entry connects one source to the matching targets. Use these entries for connections beyond transform parenting, such as connecting a control’s translation to a math node.

Enable

When turned on, applies this connection entry.

Source Node

The node providing the output value. This parameter accepts APEX path patterns and uses the first matching node.

Port

The source output port name, without an [out] suffix. For example, enter xform for a TransformObject’s transform output.

Sub-Port

The sub-port name when the source is a variadic port. Leave this empty to use the specified port directly.

Target Node

The nodes receiving the source value. This parameter accepts APEX path patterns. The connection is made to every matching target node.

Port

The target input port name, without an [in] suffix. For example, enter t to drive a TransformObject’s translation input.

Sub-Port

The sub-port name when the target is a variadic port. For example, specify a joint name when connecting to a SetPointTransforms node’s transforms port. Leave this empty to use the specified port directly.

Skeleton

The parameters in this tab are available when Character B is connected and Skeleton is turned on.

Skeleton A

The skeleton element in Character A to add joints to. The default is Base.skel.

Skeleton B

The skeleton element in Character B that supplies the incoming joints. The default is Base.skel.

Joints

The joints to include from Skeleton B. This parameter accepts APEX path patterns. Leave it empty to include all joints. When a joint is excluded, its retained children are reparented to retained ancestors.

Shape

The parameters in this tab are available when Character B is connected and Shape is turned on. Shapes are geometry elements in the character folder structure, such as the character’s skin.

Shape A

The shape element in Character A to add to or replace. The default is Base.shp.

Shape B

The shape element in Character B to add. The default is Base.shp.

Shape Operation

Specifies how to combine the shapes after applying transforms and mirroring to the incoming shape.

Add or Replace

Adds the incoming shape at the destination path, or replaces the shape already at that path. Use separate destination paths to retain separate shapes.

Merge

Combines the incoming shape’s geometry with the existing shape at the destination path. Use this option to collect several parts in one shape element.

Update Captureweights

When turned on, remaps the incoming shape’s capture regions when merging captured shapes. This keeps the incoming points' weights associated with the correct joints, including renamed joints on duplicated or mirrored parts.

This option is used when Shape Operation is Merge. Add or Replace uses the incoming shape directly and does not perform the capture-weight remapping.

Add Extra Shapes

Specifies additional shape pairs to process. Each entry has its own destination, source, operation, and capture-weight setting.

Shape A

The destination shape element in Character A.

Shape B

The source shape element in Character B.

Shape Operation

Adds or replaces the destination shape, or merges the source geometry into it.

Update Captureweights

When turned on, remaps capture regions for this shape pair when Shape Operation is Merge.

Inputs

Character A

The character to modify, in a character folder structure.

Character B

The character part to add, containing the rig, skeleton, and shape elements needed for the enabled operations. For graph-only additions, this input can be an unpacked APEX graph. Leave it disconnected to use the incoming graph authored on this node.

Outputs

Character

Character A with the selected rig functionality, joints, and shapes added or updated.

See also

Geometry nodes