VDB Resample

The Ultimate Houdini node reference

Visit the Node Bible

To learn more, please log in or sign up for free to explore the Node Bible.
Write your awesome label here.

VDB Resample

The VDB Resample is useful for changing the resolution of a vdb volume and/or fixing non-square voxels.
Drag to resize


    The settings in this node represent multiple ways of changing the resolution of the incoming voxels.  In order to keep track of the resolution, you can always middle-click the node itself, use a VDB Visualization SOP, or a Volume slice.  The first input expects the volume to be resampled and the second expects a reference VDB for controlling the vdb resolution if the "Define Transform" is set as "To Match Reference VDB."

Drag to resize

Main Parameters:


--  This allows you to specify which incoming vdb field you'd like to resample.  You'll need to use the syntax: @name=foo or simply just use the dropdown menu to choose which field you'd like to affect.


-- This is the same thing as the Group mentioned above - except this time you'll be selecting which VDB filed to use from the second input.  This is only applicable if the "Define Transform" is set as "To Match Reference VDB."


--  This section provides different filters for sampling voxel positions.

--  Nearest Neighbor =  This selects the volume from the nearest voxel.  This is fast but can cause aliasing artifacts.

--  Linear =  According to the docs, "Matches what Volume Mix and volumesample do."  This, sadly, is not helpful at all though.  So if you like the results, then sure.

--  Quadratic =  This will be smoother than the Linear, but operates more slowly.  In general, I usually set this to Quaderatic unless there's a ton of voxels involved.

Define Transform:

--  To Match Reference VDB =  This allows you to specify the new voxel size by looking at a VDB field plugged into the second input.  

--  Explicitly =  According to the docs, "Define an explicit transform to resample with. Note that this is specified in index space, not SOP space, so the translation amounts will scale with voxel size."  In other words, this will not change the voxel size.  Instead, this basically acts as a transform for the VDB values.  The reason why this is part of the VDB Resample is because it needs to create new active voxels.  Unlike geometry, you can't just "move around" voxels.  Instead, you have to re-sample active values and that's why this is here.  Transforms follow the conventions mentioned in the Transform SOP Node Bible entry.

--  Using Voxel Size Only =  This allows you to specify the voxel size in meters

--  Using Voxel Scale Only =  This will scale the existing voxel size up or down.  

Transform Vectors:

--  According to the docs, "When Define transform is "Explicitly", apply the transform to the voxel values of vector-valued VDBs according to its Vector Type."  In general, if you are transforming a vector field which is trying to express relative position data, then it's worth turning this on... especially if you end up rotating the vdbs.

Prune Tolerance:

-- According to the docs, "After building the VDB grid there may be undetected constant tiles. This tolerance is used to detect constant regions and collapse them. Such areas that are within the background value will also be marked inactive." It's unclear what "constant tiles" are based off of this description, but the defaults ought to work fine in most situations. Basically put, if you have some strange vdb values just hanging out in places they shouldn't be, then the prune tolerance might clean them up.