Houdini 20.5 Nodes Geometry nodes

Rest Position geometry node

Creates rest attributes on the geometry so procedural textures stay put on the surface as it deforms.

On this page

This node creates an attribute to track the initial, or rest, position of the geometry. This allows procedural operations to work on the deformed geometry in the initial undeformed space.

The Rest SOP is often applied before deforming. In this case, no additional inputs are needed as the current positions can be stored as the rest values. If the geometry has already been deformed, the second input can be used to specify the rest. A Time Shift SOP on the second input can get the rest value from a specific reference frame.

While this SOP does allow reading a file for the rest position, this is primarily for backward compatibility - it is likely cleaner to make this an explicit File SOP into the second input.

The topologies of the two geometries must match. Missing rest positions will repeat the last point of the reference geometry.

Some primitives have internal transformations, such as circle, tube, sphere, metaball, volume, vdb, and packed primitives.

Note

For information about the Muscle & Tissue system’s Set T-Pose and Extract T-Pose SOP nodes, please see their respective node docs.

Parameters

Mode

The Rest SOP can both store to a rest attribute and also retrieve from the rest attribute. If the rest attribute does not exist the operation will always be Store. Thus you can “Swap” even if there are no rest attributes yet - it will just create a matching set of rest attributes.

Store Rest

Create the rest attributes and copy the current positions and transforms into them.

Extract Rest

Retrieve the current rest values from the attributes and update the positions and transforms from them. This will cause the geometry to restore to the original rest setup and not affect the rest state.

Swap Rest

Swap the rest positions and transforms with the current positions and transforms. The geometry will be replaced with the rest position, but the current deformation will be stashed into the rest. This is useful for switching in and out of rest space.

Rest Attribute Name

Name of the rest position point attribute to create. If blank, no rest position updates are done.

Assign From File

Geometry file path to use positions from. When this is blank, the positions are taken from the node inputs instead (with the second input having precedence).

Rest Normals

Create a rest normals point attribute. This copies the point normal attribute. Note that normals are often vertex-based, and are not handled by this.

No Normals

Do not generate the attribute.

Add If Polygon/Mesh/Soup Exist

Only generate when polygon, mesh, or polygon soup primitives are present.

Add Normals

Always generate the attribute. When point normals do not exist, then a default method is used to generate them.

Rest Normal Attrib

Name of the rest normals point attribute to create.

Primitive Transforms

Create a rest transform primitive attribute. This 3×3 matrix attribute is only meaningful for primitives that have transforms such as primitive spheres, metaballs, etc. For all other primitive types, the attribute will be left unchanged.

No Transform Matrices

Do not generate the attribute.

Add If Transforming Primitives Exist

Only generate if primitives that have transforms are present.

Add Transform Matrices

Always generate the attribute.

Transform Attrib

Name of the transforms primitive attribute to create.

Full Primitive Transforms

Create a rest full transform primitive attribute. This 4×4 matrix attribute is only meaningful for primitives that have transforms such as primitive spheres, metaballs, etc. For all other primitive types, the attribute will be left unchanged.

Note

This transform includes the position. So operations like Swap will double-swap position if rest position attributes are also present!

No Full Transform Matrices

Do not generate the attribute.

Add If Transforming Primitives Exist

Only generate if primitives that have transforms are present.

Add Full Transform Matrices

Always generate the attribute.

Full Transform Attrib

Name of the full transforms primitive attribute to create.

Precision

Precision to create rest attributes with. 64-bit provides higher accuracy, especially for transforms.

The auto mode will switch between 32-bit and 64-bit depending on the preferred precision of the incoming geometry. When run in 64-bit precision, any created attributes will be 64-bit. When run in 32-bit any created attributes will be 32-bit. Use Attribute Cast to change the preferred precision. If the incoming point attribute is 64-bit, the Auto mode will generate 64-bit attributes regardless of the preferred precision.

Examples

BasicRest Example for Rest Position geometry node

The Rest Position SOP creates an attribute based on the surface normals that allows a shader to stick to a deforming surface.

All primitives support the rest attribute, but, in the case of quadric primitives (circle, tube, sphere and metaball primitives), the rest position is only translational. This means that rest normals will not work correctly for these primitive types either.

Use the Rest Position SOP only when you are deforming your geometry and you are assigning volumetric or solid materials/patterns in your shader.

Rest normals are required if feathering is used on polygons and meshes in Mantra. NURBs/Beziers will use the rest position to compute the correct resting normals.

It will be necessary to render the setup in order to see the effect.

Geometry nodes