Houdini 20.5 Nodes Geometry nodes

Skin Solver Vellum geometry node

Computes the dynamics simulation for the skin pass using Vellum.

On this page
Since 19.0

This node creates a series of constraints on the geometry (skin surface and skin solid) generated by the Skin Solify SOP, uses the settings defined by the Skin Properties SOP to drive them, and then computes the skin simulation (second pass tissue) using the Vellum solver.

When simulating the Skin pass (Skin Surface Layer and Skin Solid Layer), it is important to understand the following constraint relationships it has with the Tissue Surface Layer:

Parameters

Solver

Reset Simulation

Clears the entire skin simulation cache from memory.

Initialization Frame

Sets the frame on the Houdini playbar at which the skin simulation should begin.

Integration

Determines how points are integrated forward by their velocities during the simulation when curved motions (like swinging pendulums) are mispredicted and damped by the constraint projections.

First Order

Use first order prediction for integrating points. First order prediction avoids excessive bouncing. If the solver detects collisions during the simulation, then it will fall back to using first order prediction.

Second Order

Use second order prediction for integrating points. Second order prediction recovers more curved motion and maintains more energy in the system.

Solve Iterations

Time Scale

Specifies a scale multiplier for the effective time of the Vellum solve. You can use this value to create bullet time-like effects where the physics of the Vellum solver runs at a different rate than the Houdini playbar. A value of 2 will cause the skin to fall twice as fast, and a value of 0.1 will slow the skin down to a tenth its speed.

Substeps

Specifies the number of substeps each frame of the simulation is divided into. For fast moving collisions or sudden forces, you should use additional substeps.

Tip

If your skin is too stretchy, then try raising the substeps to see if that helps.

Constraint Iterations

Specifies the number of passes that are taken by the constraint enforcement operations within each substep. Stiff constraints may require a greater number of iterations to converge. Constraint iterations use a Gauss-Seidel approach that is fast to converge. However, if it does not fully converge due to too high stiffness or impossible configurations, then bad looking triangles may be produced.

Smoothing Iterations

Specifies the number of passes that are taken by the smoothing operations within each substep. Smoothing iterations use a Jacobi approach that is slower to converge but leaves error spread out in a more attractive fashion. The default Smoothing Iterations value of ten passes helps smooth out error, but you might need to increase it if the Constraint Iterations value is very high.

Collisions

Enable Collisions

When on, enables external and self-collisions for the skin. Only the Skin Surface Layer does the colliding.

Collision Radius Scale

Specifies the scale multiplier value for the space between the tissue and the skin. You can view this space in the viewport with the Visualize ▸ Tissue Collision Radius parameter on the Tissue Solver Vellum SOP node.

Ground Plane

When on, creates a collision ground plane. This is useful when you have a creature with a big floppy tail hitting the floor. If a flat plane is not sufficient, you can use the External Collisions parameters to introduce an external collider.

Ground Position

Specifies the XYZ world position of the ground plane and allows you to offset it.

Collision Passes

Specifies the number of collision passes to perform for the simulation. These passes are interleaved between the constraint iterations. Since collisions are expensive, we recommend that you use these passes sparingly. A Collision Passes value of 10 works in most situations, but we recommend that you use substeps instead. Substeps are a better solution for increasing quality.

Post Collision Passes

Specifies the number of final-round collision detection passes that are performed

Polish Passes

When on, specifies the number of additional collider-pair passes to run. In any collision pass, any colliding pair may not fully resolve. These passes will run until all the unresolved colliding pairs are resolved. Since these passes are only performed on active colliders and no new collision searches are done, this operation is very inexpensive.

External Collisions

When on, you can use external collision objects with the skin.

Collider

Specifies the network path to the external collision objects.

Primitive Group

Specifies the geometry group (or groups) that contains the collider primitives.

Rest Position

These attributes inform the solver which attribute to use as the rest position when establishing constraints. Typically, a tpose attribute exists both on the simulation geometry and on the second input geometry.

T-Pose Attribute

Specifies which attribute to derive the rest position or t-pose from for the character when establishing its skin constraints. This attribute is usually found on this node’s the simulation geometry.

Attach Geometry T-Pose Attribute

Specifies which attribute to derive the rest position or t-pose from for the character when establishing its skin attachment constraints. This attribute is usually found on this node’s the second input geometry.

Forces

Gravity

Specifies the uniform gravity force to apply to the skin.

Drag

Specifies the amount of points that are dragged by the wind force.

Simulation Cache

Cache Simulation

When on, the skin simulation is cached to memory.

Allow Caching To Disk

When on, the skin simulation is cached to disk.

Cache Memory (MB)

Sets the maximum size of the memory cache.

Advanced

Rigid Group

Specifies the name of a rigid skin point group to include in the skin simulation. When you need parts of your skin to attach as rigidly as possible to the tissue’s surface layer and ignore sliding, you can create a Group SOP node, connect it to the Skin Solidify SOP node, and then use it to define a rigid skin point group for your skin network. If you define a rigid skin point group like this, then type the Group Name you defined on the Group SOP in this parameter field.

Rigid Stiffness

Determines how tightly or loosely the rigid points attach to the attach geometry (tissue surface).

Rigid Damping Ratio

Determines how much energy is lost when applying the attach constraint. This allows you to control how freely or how sluggishly the rigid points are attached.

Tip

If your rigid points exhibit high frequency jittering, you can reduce this jitteriness by increasing the Rigid Damping Ratio or by decreasing the Rigid Stiffness.

Sliding Method

Specifies the sliding method that is used for finding the next closest position on the Tissue Surface Layer’s geometry when sliding the Skin Solid Layer.

Closest Point

Choose the closest point on the target geometry to the projected sliding position. This approach is fast but can improperly jump across concavities in the Tissue Surface Layer’s geometry.

Traverse Polygons

Start from the current tissue surface layer primitive and successively walk outwards, finding the closest point on the surrounding primitives. This approach is more expensive but handles concave tissue surface layer geometry better.

Traverse Triangles (Optimized)

Similar Traverse Polygons with its improved handling of concavities, but can be many times faster as it uses specialized triangle distance functions.

Dual Sliding Method Mask

When enabled, specifies the name of a point attribute that acts as the dual method mask. Points with mask attribute values of zero or less will employ Closest Point sliding; mask values greater than zero will employ Traverse Triangles sliding. If the mask attribute cannot be found, the mask value will be assumed to be zero and therefore Closest Point will be used.

ARAP Volume Preservation (Optimized)

When on, an optimized volume preservation is applied to the skin using the Scale-Invariant ARAP model. This means that the incoming skin Volume Stiffness (solidvolumestiffness attribute) is ignored and an infinite stiffness is applied to the volume as primitives undergo changes in shape. When off, the solver takes on the extra expense of an additional Volume Constraint (making the solve less efficient) and this may cause anomalies when Volume Stiffness is weaker than Shape Stiffness. ARAP Volume Preservation (Optimized) is on by default.

Warning

We strongly recommend that you keep this parameter turned on, otherwise erratic skin behavior may occur, especially when Shape Stiffness exceeds Volume Stiffness.

Relax Internal Geometry

By default, the internal attach geometry (usually the tissue’s exterior surface) supplied by this node’s second input (input 2) is treated as rigid, static deforming geometry and a hard attach relationship (pin) is established to its animated position. However if you enable the Relax Internal Geometry parameters, then the internal attach geometry will instead establish a soft attach (spring) relationship to its animated position. This allows the simulated skin geometry to exert forces and cause the internal attach geometry to react dynamically.

Pin Stiffness Multiplier

Specifies the name of the attribute you can use to mask the soft vs. hard attach relationship that the internal attach geometry has with its animated positions. Where this point attribute has a value of 0, there is zero attachment between the skin’s interior surface and the internal attach geometry’s animated positions. The internal attach geometry will be free to react to any and all forces (including Gravity). Where this point attribute has a value of 1.0, the spring stiffness to the the internal attach geometry’s animated position is very high and it is similar to using a hard pin constraint.

This parameter is only available when Relax Internal Geometry is turned on.

Solid Stiffness

When allowed to act dynamically, internal geometry consisting of tetrahedrons (like the tissue solid layer) will use this stiffness value to affect its shape.

Solid Damping

When allowed to act dynamically, internal geometry consisting of tetrahedrons (like the tissue solid layer) will use this damping ratio to resist changes to its shape.

Surface Stiffness

When allowed to act dynamically, internal geometry consisting of triangles (like the tissue exterior surface layer) will use this stiffness value to affect its shape.

Surface Damping

When allowed to act dynamically, internal geometry consisting of triangles (like the tissue exterior surface layer) will use this damping ratio to resist changes to its shape.

Multi-Pass

Enable Multi-Pass

When on, these options allow a substep to be repeated until certain conditions are met. The current conditions are designed to fix issues that are caused by disabled points causing geometry to be caught and causing the non-disabled points to generate stretching. Since collisions always pre-empt constraints, the result is skin stretching. Points adjacent to auto-disabled points will also be disabled if too much stretching is detected. The solve step will then be repeated in the hopes that this frees up the geometry.

Maximum Passes

Specifies the maximum number of times to repeat the substep. If no new points need to be disabled, the process will stop immediately.

Disable Stretch Ratio

The amount of stretch at the end of a solve step that will trigger points to be eligible for disabling. This is to detect when failed collisions are pulling the skin apart. By failing additional points, the skin can usually be released and this often results in better results than continuing to stretch.

Visualize

Internal Attach Geometry

When on, shows the Tissue Layers and Core Layers inside of the Skin pass in the viewport state.

Attachment Vector

When on, shows the attachments between the Skin Surface Layer and the Tissue Surface Layer as pink vector lines, and the Skin Solid Layer and the Tissue Surface Layer as green vector lines.

Collision Geometry

When on, all external collision objects (even the ground plane) are highlighted blue in the viewport state.

Outliers

When on, all muscle and tissue points that lie outside (poke through) the Skin Surface Layer appear as pink spheres in the viewport.

Tip

If you have muscle or tissue points that poke through the surface of the skin, then you can adjust the following until you no longer have any outliners:

Outlier Scale

Specifies the scale multiplier for the size of the Outlier pink spheres in the viewport state.

Inputs

Input 1

Skin geometry. This includes: the Skin Surface Layer (polygons) and the Skin Solid Layer (tetrahedra).

Input 2

Internal attach geometry. The tissue simulation cache.

Outputs

Output 1

Skin simulation point transform data.

See also

Geometry nodes