Houdini 22.0 Nodes Geometry nodes

Joint Capture Paint

Lets you paint capture weights directly onto geometry.

On this page
Since 19.5

Overview

This node allows you to interactively paint capture weights on geometry. It is similar to 3D painting tools like the Attribute Paint SOP, except that it only modifies the boneCapture attribute, which is used in character workflows to deform a mesh along with a rig.

This node has a variety of brushes and options for editing the capture weight attribute. It supports methods to visualize capture weights such as deforming the mesh with the animated pose or representing the weight values as color. It is also optimized to paint on high point count meshes.

If you make any changes to the mesh’s point count, you have to do one of the following to continue painting:

  • Undo the upstream change that caused the point count to change.

  • Press Copy Input in the parameter editor, which creates a new snapshot attribute with the same point count as the new mesh.

To...Do this

Set the current target joint

  1. In the Joint Capture Paint viewport state, press A and select your joints from the rig visualizer.

  2. Press A again to confirm your selection and return to Paint mode.

Set the current unlocked joints

  1. In the Joint Capture Paint viewport state, press Z and select your joints from the rig visualizer.

  2. Press Z again to confirm your selection and return to Paint mode.

To box select multiple joints:

  1. Press Z to enter persistent mode.

  2. Hold CTRL to make a box selection on the joints.

Display the deformed geometry

In the Joint Capture Paint viewport state, turn on Display Deformed Geometry from the viewport toolbar.

Change the current brush operation

  1. In the Joint Capture Paint viewport state, press C to bring up the radial menu.

  2. Select the desired brush operation from the menu.

Apply the brush operation to all selected

In the parameter editor, click Apply To All.

You can also press Y in the Joint Capture Paint viewport state.

Use groups for masking

  1. In the Joint Capture Paint viewport state, press S to enter the group selection state.

  2. Select the desired sections and press S to confirm your selection.

Any selection you make populates the Group parameter. This can be useful for using edge selections to isolate parts of the mesh for painting.

Access the quick smooth or inverse brush operation

To use the quick smooth operation, hold ⇧ Shift.

To use the inverse brush operation, hold ⌃ Ctrl.

Note

Not every brush operation has an inverse.

Change the brush radius

In the Joint Capture Paint viewport state, hold ⌃ Ctrl + ⇧ Shift and drag to change the brush radius.

Change the brush falloff

In the Joint Capture Paint viewport state, hold M and drag to change the brush falloff.

State

Viewer State Toolbar Parameters

Brush Look

Determines the look of the brush cursor drawable.

Simple

Displays the cursor as a circle.

Complex

Displays the brush as a flattened sphere.

Spreadsheet

Opens a spreadsheet for precise weight editing. This respects the group selections, the Normalization parameter, and the Unlocked Joints parameter. You can select rows and columns in the spreadsheet and set the weights of the entire selection at once.

Note

If you need to set exact weight values, change Normalization to Post to avoid automatic normalization.

Parameters

Group

A subset of points to affect. If this is blank, all the points are affected. This can be used as a mask for painting operations.

Group Type

The type of geometry to use in the group. If the group has one type of geometry, you can use Guess from Group to figure out the geometry type from the group’s content.

Copy Input

Updates the snapshot stash with the topology and weights (if present) of the Rest Geometry (first input).

Set All Weights to Root

Sets all the points to be fully weighted to the root joint.

Normalization

Specifies whether to keep the weights normalized while painting.

Interactive

Keeps the weights normalized while painting. Only the weights for joints in the Unlocked Joints and Target Joint are affected.

Post

Doesn’t normalize the weights while painting. When you paint weights for a Target Joint, only the weights for that joint are affected.

Target Joint

The joint that the brush operation acts on. For example, if the brush Operation is Add, the weights are added to the specified joint while painting.

Unlocked Joints

When painting with Normalization set to Interactive, the specified joints' weight values are affected by the normalization. This gives you greater control over how weights get redistributed.

Brush

Radius Type

Determines how to calculate the distance between the points on the geometry and the brush center.

Volume

Uses the absolute world space distance between the point and the center of the brush.

Surface

Uses the distance along the surface of the mesh between the point and the center of the brush.

Operation

Determines how the paint strokes affect the geometry’s weights. Most operations take Opacity, Falloff, and Spacing into account.

Set

Sets the weights of the brushed points to the current value.

Add

Adds the value to the weights of the brushed points.

Subtract

Subtracts the value from the weights of the brushed points.

Scale

Multiplies the weights of each point by the value and blends the result into the current weights. This is often used to reduce the weight, as an alternative to Subtract.

Smooth

Blurs the weights of each point with the neighboring points' weights.

Fill

Sets the point’s weights that are connected to the geometry’s components to the current value. To use this brush, click on the geometry’s components. This is useful for setting disconnected rigid pieces of a mesh to a specific weight value.

Smudge

Samples the point’s weights beneath the brush and blends them into the set of points on the next sample.

Apply To All

Applies the Operation to all the points in the Group.

Radius

Determines how many points are affected by the brush operation.

Value

The value for the current brush operation.

Opacity

A multiplier on the strength of the brush operation.

Falloff

The range of the brush radius to apply the Falloff Curve. A value of 1 applies the curve to the entire brush. A value of 0 applies the curve to none of the brush.

Spacing

The distance between brush splats. A lower spacing creates a stronger brush by putting down more brush splats along the stroke.

Use Pen Pressure

When turned on, modifies the opacity of the brush operation with the pressure of a pen stylus.

Falloff Curve

Allows you to control the shape of the brush intensity.

Visualization

Display Deformed Geometry

When turned on, deforms the geometry based on the capture weights while in the viewer state.

Display Joints

When turned on, displays a rig visualizer while in the viewer state.

Display Target Joint Indicator

When turned on, highlights the current target joint in the rig visualizer.

Display Unlocked Joint Indicators

When turned on, marks the currently unlocked joints with a ring icon.

Display Color

When turned on, colors the points based on their capture weights.

Color Mode

Specifies how to color the points - with one color per joint, or color based on the Target Joint weights.

All Joints

Colors the points such that one color represents each joint.

Target Joint

Colors the points based on their weight for the current target joint.

Use Existing Joint Color

When Color Mode is set to All Joints, uses the Cd attribute of the joints to color each joint.

Color Falloff

When Color Mode is set to Target Joint, this determines how to visualize the weight of the target joint.

Infra-Red

Uses the infra-red color ramp.

Grayscale

Uses the grayscale color ramp.

Custom

Uses a custom color ramp.

Color Ramp

When Color Falloff is set to Custom, this color ramp visualizes the weights of the Target Joint.

Mirroring

Mirror Weights

Copies the weights from one side of the mesh to the opposite side. This uses Token Position, Find Tokens, and Replace Tokens to determine the copied weights.

Token Position

The location in the point name to look for the tokens specified in Find Tokens. This depends on the naming of the input points. For example, set this parameter to Start if you have point names like “left_upperarm, left_lowerarm, and left_hand”. Set this parameter to End if you have point names like “upperarm_left, lowerarm_left, and hand_left”.

If Find Tokens is blank, the first token in Replace Tokens is added to the input point’s name at Start or End.

Note

If Find Tokens is blank, the behavior for Middle is the same as End.

Find Tokens

The set of tokens to look for in the input points' names at the position specified in Token Position. You can use this with Replace Tokens.

Replace Tokens

Replaces the tokens in Find Tokens.

Direction

The direction to perform the mirroring operation. You can see this as the plane’s normal in the viewport.

Origin

The plane’s origin for mirroring.

Advanced

Modified Group

When turned on, the node outputs a group that adds all the points you specify. This can be useful for painting weights on geometry sections and layering them together afterwards. An example is to have a node for each section and create an attribute mask to blend the weights into the original mesh.

Output Visualization Geometry

When turned on, takes the visualization geometry and makes it the first output. This is useful for seeing the visualization geometry while working on a different node. For example, you can use an upstream Rig Pose SOP to adjust the animation while visualizing the deformation and weight colors on this node.

Warning

Make sure to turn this off before you add it to a Bone Deform SOP, since this can deform the geometry twice.

Paint on Displayed Node

When turned on, displays another node in the network and allows you to use its geometry to paint on. This can be useful if the weights are in a complicated deformation process and you want to view its results.

Note

This may slow down painting operations.

Attributes

boneCapture

This required attribute defines the rest transforms and skinning weights for the deformation.

Inputs

Rest Geometry

The skin geometry to paint weights on.

Capture Pose

The pose the capture attributes create. The geometry deforms when this node’s viewport tool is active and the Display Deformed Geometry parameter is on. This uses the Capture Pose and Animated Pose to show how it deforms with the painted weights.

Animated Pose

The pose to deform the rest of the geometry. The geometry deforms when this node’s viewport tool is active and the Display Deformed Geometry parameter is on. This uses the Capture Pose and Animated Pose to show a preview of how it deforms with the painted weights.

See also

Geometry nodes