Radial Basis Function Interpolation

Volume Deformation

Overview of the volume deformation network

Well, I’m kinda lying here as we’re not going to truly deform a volume. Volumes are regular grids so we can’t just move voxels around, we’d have to construct a new grid containing the deformed positions and do an inverse lookup (from the deformed position back to the voxel containing the info we want). Since I haven’t found a way to do the inverse RBF lookup properly we’ll just create points representing the voxel centers and deform those instead, then rebuild the volume. Sounds terrible but it actually works!

The former can be done with the VDB Visualize Tree SOP by asking it nicely to create center points for the active voxels with a respectively named attribute (@density in my case). Then we create a new volume from this point cloud with the VolumeRasterizeAttribute SOP, telling it to sample @density. Particle scale should be adjusted to be equal to voxel size, the other params are fine by default (their effects are demonstrated over on cgwiki).



RBF as a force
The deformation can also be applied as a velocity attribute in various dynamic solvers. Use a SOP Solver DOP to deform your simulation geometry, adding the deformation vector to @v instead of @P. Depending on your visual needs it might be useful to normalize this vector.
Here’s an example of the captured bend deformer driving a vellum cloth sim of improperly pressurized pigs:



You can explore all of the stuff shown above in the attached scene file, including a stream modified for a vector4 attribute (orient).

Leave a Reply

Your email address will not be published. Required fields are marked *