On this page |
|
Overview ¶
Capture is Houdini’s method of creating weights on geometry for skin deformation. Capture weights are created on geometry and weighted to skeleton joints. When the joints move, the geometry is deformed according to the capture weights and the position of the joints.
Houdini’s capture process differs from other DCC software that perform weight creation and deformation in one step. In Houdini, weight creation is separate from deformation. In this way, you can procedurally skin geometry using Houdini’s extensive node networks, and work in a non-destructive workflow.
Capture weights are created and modified using the following SOP nodes.
Create Capture Weights |
Description |
---|---|
Creates smoothed-out capture weights based on joint position and volume. Works well for softer, non-mechanical, organic deformation. |
|
Creates capture weights based on the geometry point’s distance to joints. This is a much quicker and less computationally-intensive operation than the Joint Capture Biharmonic SOP, but results in weights that are not as evenly distributed or smoothed out, especially for organic surfaces. The Joint Capture Proximity SOP could work well for rigging simple geometry like a tube. |
|
This is a rigid weighting method where geometry pieces are assigned to a given joint with 100% weighting. |
|
Allows you to interactively paint capture weights on geometry. |
Modify Capture Weights |
Description |
---|---|
Attaches geometry to joints, with the geometry influencing the capture result. |
|
Joint Capture Paint SOP |
Can be used to paint capture weights on geometry that have existing weights. |
Create capture weights ¶
A basic workflow for creating capture weights and deforming geometry involves the use of the Joint Capture Biharmonic SOP to create capture weights on geometry based on joint positions, and the Joint Deform SOP to move the points on the geometry according to the capture weights.
Set the display flag on the Joint Capture Biharmonic SOP to view the geometry regions affected by each joint. In the example below, the geometry points in the red region follow the position of joint_0, the purple region follows joint_1, and the blue region follows joint_2:
The Rig Pose SOP can be used to modify the pose of the skeleton, and the deformed geometry can then be viewed in the viewport:
-
Select the Rig Pose SOP.
-
Set the display flag on the Joint Deform SOP.
-
In the viewport, select Show Handle on the left toolbar or press Enter in the viewport. You are now in the Rig Pose viewer state where you can select and move joints, and see the deformed geometry.
Capture attributes ¶
Capture weights are stored on the boneCapture
attribute created by the joint capture nodes (Joint Capture Biharmonic SOP, Joint Capture Proximity SOP, Joint Capture Paint SOP). The boneCapture
attribute can be in a “packed” or “unpacked” format.
The boneCapture
attribute generated by the joint capture nodes are in a packed format, which is easier to read and move around. The unpacked format exists to allow for easier manipulation of the boneCapture
attribute using VEX.
Packed capture attribute ¶
In the previous example, biharmonic capture was performed on a tube geometry. Point 110 on the tube geometry is mostly affected by joint_1 of the skeleton, and less affected by joint_0.
The packed format of the boneCapture
attribute is a point index-pair attribute - for each point on the geometry, a pair of values is stored for every joint that has an affect on the point. The pair of values consists of the joint capture region and its corresponding weight. The weight values are normalized between the capture regions.
The geometry spreadsheet displays the boneCapture
attribute for each point on the tube geometry:
-
Select the Joint Capture Biharmonic SOP.
-
In the geometry spreadsheet, select Points from the top toolbar.
In the geometry spreadsheet below, we can see that point 110 is affected mostly by joint_1 (it has a higher weight), as well as joint_0 to a lesser degree.
Unpacked capture attribute ¶
The index-pair attributes can be “unpacked” into array attributes, which are easier to manipulate with VEX. The boneCapture
array attributes consist of detail and point attributes, and can be obtained from the index-pair attributes using the Capture Attribute Unpack SOP.
Unpacked Array Attributes |
Attribute Type |
Description |
---|---|---|
|
Detail |
An array that contains the rest transforms of the capture region at the time of capturing. |
|
Detail |
An array that stores the joints that are used in the capturing process. |
|
Point |
An array that stores the indices to the |
|
Point |
An array that stores the weights associated with each joint referenced by |
The array attributes can be viewed in the geometry spreadsheet:
-
Select the Capture Attribute Unpack SOP.
-
In the geometry spreadsheet, select Detail or Points from the top toolbar.
The weight values in boneCapture_data
match those in the packed index-pair boneCapture attribute.
Unpacked boneCapture
array attributes can be packed into index-pair attributes using the Capture Attribute Pack SOP.
Modify capture weights with capture geometry shapes ¶
The Attach Joint Geometry SOP can be used to attach geometry to skeleton joints, with the geometry affecting the results of the capture weight creation in the Joint Capture Biharmonic SOP downstream.
The process for creating geometry shapes to influence biharmonic capture is:
-
Create the capture geometry shapes.
-
Assign the capture geometry shapes to skeleton joints.
-
Apply the capture geometry shapes to the biharmonic capturing process.
The example in this file demonstrates the use of attaching geometry to joints to influence the result of biharmonic capturing.
Create capture geometry shapes ¶
In the network editor, create the geometry to use as capture shapes at their world space positions inside the volume of the character. Only the points of the capture geometry inside the volume are considered for the biharmonic calculations. To modify the size or shape of the capture geometry, use SOP nodes like the Edit SOP or Transform SOP.
Warning
Only use polygonal geometry for the capture shapes. Nurbs do not work properly.
Node |
Notes |
---|---|
|
This Merge Packed SOP merges the capture geometry to create a library of shapes. In the Merge Packed SOP:
Warning After you assign shapes to joints using the Attach Joint Geometry SOP downstream, do not click the Reload Node Names button on the Merge Packed SOP. This will invalidate all your shape-joint assignments by reverting the shapes' names to their defaults. |
Assign capture geometry shapes to joints ¶
Use the Attach Joint Geometry SOP to assign the capture geometry shapes to skeleton joints. This links the shape to the joint, and designates the shape as the joint’s capture object.
Node |
Notes |
---|---|
|
This Attach Joint Geometry SOP attaches geometry to the input skeleton joints. Make the following network connections:
In the Attach Joint Geometry SOP, set the Role parameter to Capture Geo so that the attached geometry is used to influence the result of the biharmonic capture. |
To assign the capture geometry shapes to the character’s joints:
-
Select the Attach Joint Geometry SOP, and click Show Handle on the left toolbar or press Enter in the viewport. You are now in the Attach Joint Geometry viewer state.
-
In the viewer state’s toolbar, choose Mode ▸ Assign Shapes to set the interaction mode to shape assignment, and turn on Assign in World Space. The world space shapes appear in blue.
-
In the viewer state, click a joint in the skeleton, hold G, and click the shape you want to assign to the joint.
In the parameter editor, Add Shapes tab, a new Assign Shapes multiparm for the joint appears with the following parameters:
-
Group - The selected joint.
-
Shape Name - The capture geometry shape.
-
Keep Shape World Transform is turned on.
A blue ring appears around the joint indicating that it has a shape assigned to it. The capture geometry shape in the Shape Name parameter is now assigned to the joint in the Group parameter. The world space shape’s position (in world space and relative to the character) does not change.
You could also create a new Assign Shapes multiparm by either clicking the Create New Group button in the viewer state toolbar or manually adding the multiparm in the parameter editor.
-
Tip
-
If you want to remove a joint from a shape assignment, hold ⌃ Ctrl and click the joint in the viewer state.
-
If you want to re-assign a joint to a new multiparm, choose the joint and press G again. The joint is automatically removed from its old multiparm and added to a new multiparm.
Apply capture geometry shapes to capture process ¶
The Joint Capture Biharmonic SOP takes the updated skeleton with the capture geometry shapes assigned to joints, and creates capture weights on the character geometry. The character geometry is then deformed by the Joint Deform SOP.
Node |
Notes |
---|---|
|
Attaches geometry to the input skeleton joints. The skeleton that is output (with the attached geometry) goes into the skeleton input (2nd input) of the Joint Capture Biharmonic SOP. |
|
This Joint Capture Biharmonic SOP creates capture weights on the geometry. The Capture Geo Role parameter is set to Capture Geo by default, which causes the capture geometry to influence the result of the biharmonic capture. |
|
This Joint Deform SOP moves the points on the geometry according to the point capture weights. |
Mirror capture geometry shapes ¶
If capture geometry shapes have been assigned to one side of the skeleton, the Skeleton Mirror SOP can be used to mirror the shapes on the other side of the skeleton. The mirrored shapes are then transferred to the input skeleton using another Attach Joint Geometry SOP.
Node |
Notes |
---|---|
|
This Delete Joints SOP deletes the joints from one side of the skeleton in order to have a cleaner starting point in the subsequent mirroring step (when both the capture shapes and joints are mirrored). For example, if capture shapes were added to the left side of the skeleton, you would delete all the joints on the right side of the skeleton. In the subsequent Skeleton Mirror SOP, the joints and capture shapes, both on the left side of the skeleton, are mirrored back to the right side. In the Group parameter, specify the set of joints you want to delete. |
|
This Skeleton Mirror SOP duplicates the points on the skeleton in a mirrored fashion. The output of the Skeleton Mirror SOP is a skeleton with joint shapes mirrored on both sides of the character. Set the Find Tokens parameter to match the prefix/suffix of the skeleton joints. The mirrored joint names have the original joint names with the prefix/suffix replaced with the Replace Tokens parameter. For example, if Find Tokens = Adjust the other parameters based on the specifics of the skeleton. |
|
Transfers the mirrored shapes to the skeleton. Connect the output of the Skeleton Mirror SOP to the Shape Template input (3rd input) of this Attach Joint Geometry SOP. In the Add Shapes tab, set Role to Capture Geo. In the Shape Template tab, specify how to transfer the mirrored shapes to the skeleton:
See shape templates for information on how to assign the shapes in the capture geometry library to the skeleton as a shape template. |
Shape templates ¶
The Shape Template input (3rd input) on the Attach Joint Geometry SOP allows you to automatically assign shapes from the capture geometry library to skeleton joints.
Node |
Description |
---|---|
|
This Attribute Promote SOP converts the primitive Set the following parameters:
|
|
Connect the Attribute Promote SOP to the Shape Template input (3rd input) of this Attach Joint Geometry SOP. In the Add Shapes tab, set Role to Capture Geo. In the Shape Template tab, specify how to transfer the shapes in the shape template to the skeleton:
|
Paint capture weights ¶
The Joint Capture Paint SOP allows you to interactively paint capture weights on geometry. It can be used to create new capture weights on geometry, or modify capture weights that already exist on geometry.
See the Joint Capture Paint SOP for more information on how to paint capture weights on geometry.
Associated nodes ¶
The following SOP nodes are used to create, edit, paint, and work with capture weights.
Node |
Description |
---|---|
Attaches geometry to joints to influence the result of the biharmonic capture. This can be more efficient than purely joint position-based biharmonic capture (Joint Capture Biharmonic SOP) and weight painting (Joint Capture Paint SOP). It gives you more control on influencing areas per joint. |
|
Takes a set of array attributes and uses a naming convention to convert it into a single index-pair attribute. |
|
Takes an index-pair attribute and uses a naming convention to convert it into a set of array attributes. |
|
Mirrors capture weights from one half of a character to the other half. |
|
Sets a joint to control an entire piece of geometry. This is mainly used for rigidly deformed parts of a character. |
|
Creates smoothed-out capture weights on geometry based on joint position and volume. The geometry is then deformed by the Joint Deform SOP. Works well for softer, non-mechanical, organic deformation. |
|
Allows you to interactively paint capture weights on geometry. |
|
Creates capture weights based on the geometry point’s distance to joints. This is a much quicker and less computationally-intensive operation than the Joint Capture Biharmonic SOP, but results in weights that are not as evenly distributed or smoothed out, especially for organic surfaces. The Joint Capture Proximity SOP could work well for rigging simple geometry like a tube. |
|
Works in conjunction with joint capture nodes (Joint Capture Biharmonic SOP, Joint Capture Proximity SOP, Joint Capture Paint SOP) to deform geometry. |