Houdini 21.0 Nodes Geometry nodes

Shot Sculpt 2.0 geometry node

Interactive tool for creating and managing time-based deformations.

On this page
Since 21.0

This tool allows you to create geometric deformations and manage how they change/blend across time. The viewport state for this node grants access to the full set of brushes from the Sculpt SOP, allowing you to interactively sculpt your deformations.

Poses and Clips

The main interface for this tool is the Shot Sculpt Pane - an editor that organizes your deformations within a timeline. Sculpt edits are saved as Poses, each of which is assigned to a single frame. Poses represent snapshots of what the resulting geometry should look like at that frame, and can be thought of as keyframes that represent a shape/deformation.

Clips act as the main container for Poses. A Clip can house more than one, and across the frame range between adjacent Poses, the left-most Pose will blend into the right-most. Clips also have designated frame ranges before and after the first and last Pose, allowing control over how they ease in and out, respectively.

Note

Each Clip will impose one deformation upon your input geometry. This deformation will always be some linear combination of the shapes associated with the Poses within this Clip.

At the Clip level, you can specify the reference frame that your deformations should be applied within. There are options for World Space, Tangent Space, and Joint Space. Note that for Joint Space to function, the input geometry must have a boneCapture attribute, and you must provide an Animated Pose.

Tracks

Tracks are an organizational tool, allowing you to group your Clips together. There is also an animatable float parameter at the Track level, whose value weights the overall deformation a Clip will impose.

Track Types

  • Sculpt Tracks grant access to the full set of brushes from the Sculpt SOP, allowing the interactive manipulation of point positions that become baked into Poses.

  • Mask Tracks constrain your viewport interaction to the Attribute Paint brush, which paints a point float attribute on your geometry. The values of this attribute are also baked into Poses and thus interpolate across time. This attribute is present on the output geometry, allowing you to drive downstream effects with a time-dependent point attribute.

  • Blendshape Tracks require the specification of a Blendshape Target, which can be any geometry with the same point count as the geometry you are Shot Sculpting. They are identical to Mask Tracks in that your viewport interaction is constrained to the Attribute Paint brush. But rather than being present on the output geometry, the attribute values are used directly to blend points between their current positions, and their corresponding positions within the Blendshape Target.

How Shot Sculpt Works

There is an invisible Stash parameter on this node, called deformation_stash. This detail contains one packed primitive per Pose that exists within the node. Each packed primitive represents the shape/deformation this Pose is associated with.

Accessing Shapes

Note that throughout Shot Sculpt’s implementation, geometry is processed as clusters as a performance optimization. As such, each shape is stored as a subset of the clusters representing the input geometry.

Unpacking an entry in the deformation_stash will yield this subset of clusters representing a Pose’s shape- each cluster is a packed primitive itself. Unpacking these clusters and merging them will yield an overestimate of the sculpted shape, and if you blast any points whose diff attribute is {0, 0, 0}, you will get the minimal representation of it.

The _idx attribute on points within clusters maps them to their original point number within the input geometry. Once clusters are unpacked and merged, any points with matching _idx values should be fused if a continuous surface is desired.

Cooking Process

Shot Sculpt first determines which Clips the playhead is currently intersecting with, encoding this data within a dictionary attribute where each entry represents a Clip that should impose a deformation.

We iterate over each entry, and for each, identify the shapes within the deformation_stash we must unpack, and apply the appropriate linear combination of these shapes upon the input geometry.

Clips are applied in their Track order, and within a Track, we use the Clip order from left-to-right (using the Clip’s left-edge).

Tips

  • When sculpting while the Track Weight is below 1, the internally recorded deformation will be a magnified version of your sculpt edit. Such that when the Track Weight is then applied to lessen your deformation’s presence, the post-processed result in the viewport matches the shape you had just sculpted.

    If you later increase the Track Weight, you will see the magnified version of your shape. If this is undesired, try using the Blend To Rest Viewport Slider to lessen the deformation’s presence, the result of which will propagate to what is recorded internally.

Options for Non-Sculpted Deformations

  • Although the main agent available for creating deformations is the Sculpt SOP, there may be certain edits that are unfeasible to produce via sculpting. There are two options for introducing deformations coming from other SOPs into the Shot Sculpt interpolation scheme— Blendshape Tracks and Imported Poses

Note

A main distinction between Blendshape Tracks and Imported Poses is the lifetime of Shot Sculpt’s dependency on the SOP providing the edit.

Blendshape Tracks

Within Blendshape Tracks, the painted attribute’s values are used to interpolate point positions between their current values, and their corresponding values within the Blendshape Target. This interpolation occurs dynamically, each time Shot Sculpt cooks.

This means that any changes made to the Blendshape Target will propagate to the Blendshape Track's resulting deformation, even after Clips and Poses have been created. Further, moving a Clip within a Blendshape Track will indeed query point positions within the Blendshape Target across the Clip's new frame range. This also means that Blendshape Targets will cook whenever Shot Sculpt cooks, potentially hindering performance.

Imported Poses

Conversely, when importing a Pose, the shape diff between Shot Sculpt’s input and the import target is only computed at the time this acion takes place, and is thus static.

Future edits to the import target will not propagate to Shot Sculpt, and moving Clips will not recompute the shape diff across the new frame range. Effectively, the imported deformation is understood internally as if you had manually sculpted it.

Reference Frames

  • Once the Animated Pose and boneCapture attribute have been provided, any existing deformations will still be unable to use Joint Space. Only future edits will have this capability.

  • Tangent Space may perform poorly around areas where geometry creases, potentially resulting in artifacts such as interpenetration. The best alternative is to use Joint Space, but if an Animated Pose is unavailable, Blendshape Tracks are another option.

    For example, say you used the Smooth Brush on a character’s armpit, and the deformation is not translating well in Tangent Space across adjacent frames. A Blendshape Track whose Blendshape Target is the Smooth SOP will replicate this, but will eliminate Tangent Space’s artifacts by querying the smoothed point positions at every frame rather than transforming 3D displacements.

Rest Poses

  • Rest Poses are identical to Poses, but are not associated with any deformation. These act as a way to specify frames within a Clip’s interpolation scheme, towards which adjacent Poses should blend out.

    You can think of Clips as being automatically delimited by Rest Poses, allowing the first and last Poses to ease in and out, respectively.

Custom Blend Curves

  • As of now, there is no means of managing custom blend curves across a Clip’s Frames In, Frames Out, or a Poses’s Blend To Next. Although there are multiple preset curves that can be selected from, if you require more intricate control, the best option would be to set the Clip’s Blend In and Blend Out to Hold, and animate the Track Weight manually.

Parameters

General

Selected Track

The currently selected Track. Any edits created through viewport interactions will be assigned to a Pose within this Track. Similarly, pasting copied objects, importing Poses, and the creation of Rest Poses all apply to the Selected Track.

Create Rest Pose

Creates a Rest Pose at the playhead within the Selected Track. If the playhead is intersecting an existing Clip, the Rest Pose will be appended to it. Otherwise, a new Clip will be created. If the playhead is intersecting an existing Pose, the Rest Pose will replace it.

Note

A Rest Pose is identical to any other Pose, but is not associated with a deformation. These act as a way to specify frames within a Clip’s interpolation scheme, towards which adjacent Poses should blend out.

Import Pose

Allows the importing of deformations created outside the Shot Sculpt node. Clicking this button will open a Node Picker dialogue. Upon selecting a SOP whose geometry has the same point count as Shot Sculpt’s input geometry, the shape diff between the two will be inserted as a Pose, at the playhead and within the Selected Track.

If the playhead is intersecting an existing Clip, the Imported Pose will be appended to it. Otherwise, a new Clip will be created. If the playhead is intersecting an existing Pose, the Imported Pose will replace it.

Note

This introduces a means of employing Shot Sculpt’s interpolation scheme to manage deformations that are unfeasible/undesirable to create with the Sculpt SOP’s set of brushes.

Color Visualization

Mode

Colors are assigned at the Track, Clip, and Pose level. This menu allows the specification of how deformations being applied upon your geometry should be colored in the viewport. The colors of entities within the Shot Sculpt Pane will also align with the option selected from this menu.

Track Color

All deformations will be colored using their corresponding Track’s color.

Clip Color

All deformations will be colored using their corresponding Clip’s color.

Pose Color

Each deformation will be colored using its Pose color. Across the frame range between adjacent Poses, the left-most’s color will blend into the right-most’s color.

Selected Track

This toggle specifies whether deformations resulting from the currently Selected Track should appear colored in the viewport.

Other Tracks

This toggle specifies whether deformations resulting from currently unselected Tracks should appear colored in the viewport.

Track Parameters

Enable

This toggle specifies whether deformations resulting from this Track should be applied upon your geometry.

Name

Allows you to give your Track a title. There is no requirement for uniqueness amongst Track names.

Color

The color associated with this Track.

Type

The type of this Track. Please see the above section describing Track Types.

Note

Poses created within Sculpt Tracks are understood to manipulate point positions, and if moved to Blendshape Tracks or Mask Tracks, will result in an error state and thus won’t be applied upon your geometry. Similarly, Poses created within Blendshape Tracks or Mask Tracks cannot be moved to Sculpt Tracks. However, Poses within Blendshape Tracks and Mask Tracks can be interchanged.

Note

Within Blendshape Tracks and Mask Tracks, when the playhead intersects a region of Clip overlap, the maximum attribute value per-point will be used, no matter which Clip it results from.

Locked

This toggle specifies whether this Track should be locked. Locked Tracks cannot be edited, meaning any viewport interaction done while a locked Track is selected will be rejected. Similarly, pasting copied objects, importing Poses, and the creation of Rest Poses will all be rejected if the Selected Track is locked.

Weight

A float parameter whose value weights all deformations on this Track, as well as their associated colors within the viewport.

Note

When sculpting while the Weight is below 1, the internally recorded deformation will be a magnified version of your sculpt edit. Such that when the Weight is then applied to lessen your deformation’s presence, the post-processed result in the viewport matches the shape you had just sculpted.

If you later increase the Weight, you will see the magnified version of your shape. If this is undesired, try using the Blend To Rest Viewport Slider to lessen the deformation’s presence.

Clip Parameters

Name

Allows you to give your Clip a title. There is no requirement for uniqueness amongst Clip names.

Color

The color associated with this Clip.

Blend In

This menu allows specification of the curve that is used to blend in the first Pose within this Clip. The function is evaluated across a specific number of frames preceding the first Pose, specified by Frames In, and the resulting value is used to weight the first Pose.

Linear

Hold

Smooth

Ease In

Ease Out

Blend Out

This menu allows specification of the curve that is used to blend out the last Pose within this Clip.

The function is evaluated across a specific number of frames following the last Pose, specified by Frames Out, and the resulting value is used to weight the last Pose.

The menu options are identical to those within the Blend In parameter.

Frames In

The number of frames preceding the first Pose over which Blend In will be applied.

Frames Out

The number of frames following the last Pose over which Blend Out will be applied.

Edit Reference Frame

Determines the space within which sculpt edits will be applied at other frames.

When a sculpt edit is captured, the per-point 3D displacements are relative to the geometry’s state at that frame. As such, when applying this deformation upon adjacent frames, you may want the 3D displacements to be transformed to achieve more consistent results.

Note

No matter what reference frame you are using, when your playhead lies directly upon a Pose, its associated 3D displacement will remain untransformed.

World Space

The delta remains untransformed

Tangent Space

The delta is transformed by the change that occurred to a point’s tangent plane/normal vector.

Note

Tangent Space may perform poorly around areas where geometry creases, potentially resulting in artifacts such as interpenetration. The normal data in these regions can be highly volatile, and unreliable to act as the basis for transforming 3D displacements.

Joint Space

The delta is transformed by the change that occurred to a point’s associated joints.

Note

To use Joint Space, the input geometry must have a boneCapture attribute, and you must provide an Animated Pose. Upon providing this data, any existing deformations will still be unable to use Joint Space. Only future edits will have this capability.

Note

Comparing World and Tangent Space

Comparing Tangent and Joint Space

Pose Parameters

Blend To Next

This menu allows specification of the curve that is used to blend in the next Pose within this Clip.

This menu will be disabled for the last Pose within a Clip (applicable to Clips with only one Pose), as it is the Blend Out parameter at the Clip level that dictates how the last Pose eases out.

The menu options are identical to those within the Blend In parameter at the Clip level, with the exception of Hold, which is unavailable in the Blend To Next menu.

Sculpt Frame

The frame that this Pose is assigned to. When the playhead is on this frame, the associated shape will be weighted at 100%.

Color

The color associated with this Pose.

Note

This parameter is hidden for Rest Poses, which are colored white.

Jump to Frame

When pressed, the playhead will jump to this Pose’s Sculpt Frame.

Sculpt

This tab contains the full set of parameters from the Sculpt SOP. Please see Sculpt’s Help Card for more information on the Sculpt parameters.

Defaults

This tab contains certain parameters that exist within the Track, Clip, and Pose multiparms. Here, you may set preferred default values that will apply to any newly created objects.

Tracks

Type

Clips

Blend In, Blend Out, Frames In, Frames Out, Edit Reference Frame

Poses

Blend To Next

Miscellaneous

Viewport Sliders

These viewport sliders can be used on any frame and are similar to the sliders in the Animation Toolbar, but adjusted for Shot Sculpting.

Each slider will create a Pose at the current frame, within the Selected Track. If a Pose already exists at this frame, it will be replaced. For each slider, the value acts as a blend weight between a source and a target.

Bias From Current

Source: The geometry at the current frame

Target: An adjacent Pose. When the value is positive, it is the following Pose in the timeline. When the value is negative, it is the preceding Pose.

Bias From Rest

Source: A Rest Pose

Target: An adjacent Pose. When the value is positive, it is the following Pose in the timeline. When the value is negative, it is the preceding Pose.

Blend To Rest

Source: The geometry at the current frame

Target: A Rest Pose

Inputs

Geometry to Deform

The geometry to perform Shot Sculpting upon.

Note

To have the reference frame for a sculpt edit be in Joint Space, the geometry to deform must contain the boneCapture point attribute.

Animated Pose

The geometry’s Animated Pose. Only required if you intend to use Joint Space as the reference frame for a sculpt edit.

Outputs

Deformed Geometry

The input geometry with all deformations applied on top.

Geometry nodes