|On this page|
This node can be used to interpolate deforming geometry, calculate point velocities, and create VDB Signed Distance volumes for fast and accurate DOPs collisions, in particular with solvers such as FLIP that require substepping and properly interpolated sub-frame geometry. It is usually used in conjunction with a Static Object DOP as set up by the Deforming Object shelf tool.
If the input geometry is deforming, it must have a consistent number and ordering of points for proper interpolation to sub-frames. The output of this node is a combination of named geometry and VDB volumes.
If a collision object has both deforming SOP-level geometry and transformations at the Object-level, it can be helpful to create a separate non-transformed Geometry object and Object Merge the collision object into it, with the Transform parameter on the Object Merge set to Into This Object. By baking the Object-level transformations into the geometry this way, it is easier to visualize the point velocities and ensure they are correct before use in simulations.
Specifies the primitives for which to generate collision geometry and collisions.
Include the geometry in the output of this node.
Display the output geometry in the viewport. Turning this option off can make it easier to visualize just the output volumes.
The primitives in the output geometry will have a
name attribute set
to this value.
Blend Between Frames
Cooks the input geometry at the start and end of the nearest integer frames, then blends between the two geometries according to the fractional position within the frame. This option can be used to interpolate geometry that is defined only at whole frames, to be used with solvers that require sub-frame geometry. See the TimeBlend SOP for more information.
Hold First Frame
Determines if the first frame should be clamped. If so, any evaluations before this frame value will instead evaluate at this frame value.
Hold Last Frame
Determines if the last frame should be clamped. If so, any evaluations after this frame value will instead evaluate at this frame value.
Cache Geometry in Memory
Geometry interpolation and point velocity calculation require cooking of the input geometry at several different points in time. When this option is enabled, a few frames of the input geometry surrounding the current frame are cached, accelerating these computations at the cost of extra memory.
The method used to compute point velocity values.
No point velocities are calculated.
Calculate velocities using the difference between the previous frame and the current frame.
Calculate velocities using the difference between the previous frame and the next frame. This method is generally the most accurate.
Calculate velocities using the difference between the current frame and the next frame.
When computing velocity the resulting velocity will be scaled by this
constant. Note there is an internal scale of
$FPS to convert the
measured change over a frame into a change over a second.
Compute Angular Velocity
The difference in orientation of successive frames will be used to
compute an angular velocity,
w, for the points.
For deforming collisions, DOPs reads velocities from the nearest points to any collision event. If the input geometry consists of large primitives with few points (e.g. a large box), the nearest input point might not be a good sample of the object’s velocity. Enabling this option will scatter points on the input geometry to better represent the point velocities, to the accuracy controlled by Density Scale.
Show the scattered points.
Measure the current point density then scale the scattering density so there are approximately this many points per volume voxel as specified by the Voxel Size parameter.
Create a VDB Signed Distance volume from the input geometry primitives and include it in the output of this node.
Show the volume in the viewport. Turning this option off can make it easier to visualize just the output geometry.
The VDB volume will have a
name attribute set to this value.
The size in world space of the voxels in the output VDB volume.
How many voxels outside the surface to fill in the generated VDB.
Fill all voxels inside the surface with
1, not just the voxels near
the surface. This requires an airtight surface and takes considerably
more memory and time.
The geometry from which to interpolate and create VDB volumes.