Houdini 20.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 paint capture weights on geometry interactively. It’s similar to 3D painting tools like Attribute Paint, except it only modifies the boneCapture attribute. This attribute is used in character workflows to deform a mesh along with a rig.

This node has a variety of brushes and options to edit 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’s optimized to paint on high point count meshes as well.

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

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

  • Press Copy Input 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 the 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 the Paint mode.

To box select multiple joints:

  1. Presss Z to enter persistent mode.

  2. Press-hold CTRL to make your box selection on your joints.

Display 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 F to reveal the radial menu.

  2. Select your desired brush operation from the menu.

Apply brush operation to all selected

In the Joint Capture Paint parameter tab, click Apply To All.

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

Use groups for masking

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

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

    Any selection you make populates the group field. This can be useful to use edge selections to isolate parts of the mesh for painting.

Access quick smooth or inverse brush operation

To use the quick smooth operation, do the following:

  • In the Joint Capture Paint viewport state, press-hold ⇧ Shift.

To use the inverse brush operation, do the following:

  • In the Joint Capture Paint viewport state, press-hold ⌃ Ctrl.

    Note: Not every brush operation has an inverse.

Change brush radius from the Joint Capture Paint viewport state

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

Change the brush falloff from the Joint Capture Paint viewport state

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

Parameters

General

Group

Specifies a subset of points to affect. If this is blank, all points are affected. 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.

Set All Weights to Root

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

Normalization

Interactive

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

Post

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

Target Joint

The joint the brush operation acts on. For example, if the Brush Operation is Add, the specified joint is the one you add weight to while painting.

Unlocked Joints

When painting with Normalization set to Interactive, this controls which joints have their weight values affected by the normalization. It gives you greater control over how weights get redistributed.

Brush

Radius Type

Determines how it calculates 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 takes 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 the points by the value and then blends that result into the current weights. Often used to reduce 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 connects to the geometry’s components onto the current value.

To use this brush, click on the geometry’s components. This is useful to set 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 next set of points on the next sample.

Radius

Determines how many points are affected by the brush operation.

Value

Determines the value for the current brush operation.

Opacity

Acts as a multiplier on the strength of the brush operation.

Falloff

Determines 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

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

Use Pen Pressure

Turn on to modify 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

Deform the geometry based on the capture weights while in the viewer state.

Display Joints

Displays a rig visualizer while in the viewer state.

Display Target Joint Indicator

Highlights the current target joint in the rig visualizer.

Display Unlocked Joint Indicators

Marks the currently unlocked joints with a ring icon.

Display Color

Colors the points based on their capture weights.

Color Mode

All Joints

Colors the points based on all the joints. One color represents each joint.

Target Joint

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

Use Existing Joint Color

Takes the color to represent each joint from the Cd attribute of the joints. Only applies when Color Mode is set to All Joints.

Color Falloff

Determines how to visualize the weight of the target joint. Only applies when Color Mode is set to Target Joint.

Infra-Red

Uses the infra-red color ramp.

Grayscale

Uses the grayscale color ramp.

Custom

Uses a custom color ramp.

Color Ramp

The custom color ramp visualizes the weights of the Target Joint. Only available when Color Falloff is set to Custom.

Mirroring

Mirror Weights

Copies the weights from one side of the mesh to 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 by in Find Tokens. This depends on the naming of the input.

Set the parameter to Start if you have the following naming

left_upperarm, left_lowerarm, left_hand

}}}

Set the parameter to End if you have the following naming:

upperarm_left, lowerarm_left, hand_left

If Find Tokens is blank, the first token in Replace Tokens adds 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

Looks for a set of tokens at the position in Token Position from the input points' name. You can use this with Replace Tokens.

Replace Tokens

Replaces the tokens you provide 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

This 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

Takes the visualization geometry and makes it the first output. This is useful for seeing the visualization geometry while working on a different node.

An example is to 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, since this can deform the geometry twice.

Paint on Displayed Node

Allows you to display another node in the network and 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.

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 then set the weights of the entire selection at once.

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

Inputs

Rest Geometry

The skin geometry to paint weights on.

Capture Pose

The pose the capture attributes creates. The geometry deforms when this node’s viewport tool is active and the Display Deformed Geometry parameter is on. This uses the Capture 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 and Animated Pose to show a preview of how it deforms with the painted weights.

Attributes

boneCapture

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

See also

Geometry nodes