VDB

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

Write your awesome label here.

The VDB Sop creates empty vdb fields and defines various quality/visualization parameters

Drag to resize

Summary:

    If you're new to VDBs, then please check out the VDB lesson at Houdini For the New Artist II.  At first glance, you might think that the VDB Sop is how you will create new vdb fields.  And that is correct!  But very confusing at first because nothing shows up in the viewport.  The thing is this - you need to use this node along with other vdb nodes to create "active" vdbs which hold values.  VDBs are fast because they don't need to think about all the voxel values like traditional volumes do.  Instead, if something isn't considered "active" then it takes on the background value.  With the VDB Sop, you're basically creating these background values along with all the other settings (like quality, viewport visualization, etc) without any of the active voxels being made.

    In order to create "active" voxels, use either the VDB Activate or VDB From Polygons SOPs.  Other nodes might also use the information provided on this VDB node to affect the voxel size of something, so it basically gets used to tell other vdb nodes what to do.  The first input is an "Optional VDB to Set Voxelsize From."  This means that if you plug in another vdb node with fields, then it will take the resolution of that vdb and use it for this node.  The reason why many vdb nodes have this "Optional VDB to Set Voxelsize From" is because vdb operations work better when everything is set to the same voxel size.  For more info on that, be sure to visit the VDB Combine Node Bible entry at some point.  

Drag to resize

Main Parameters:


Number of Grids:

-- This allows you to remove/add vdb fields.

Type:

-- This whole section deals with what kind of VDB field you'd like to create.

Name:

-- This will become the name of the VDB Field that you'd like to generate.

Class:

-- Fog Volume = This gets used to indicate the presence of something. Positive values mean that something is there. A value of 0 is associated with nothing-ness.

-- Other = The "class" of a VDB field is simply just a tag which says how the values ought to be organized. If a Fog, Staggered Vector Field, or Level Set do not properly define the set of values that you'd like to represent, then you can choose other. But don't choose "other" unless you actually have a good reason to do so.

-- Level Set = This gets used to define SDF/Distance volumes. The voxel values will measure the distance from the surface. By default, negative values go inside the mesh and positive values go away from the surface of the mesh.

-- Unsigned Distance Field = This only works when you're generating an SDF Volume. Instead of voxel values going negative as they go inside the mesh, they will be positive. It's like taking the absolute value away from the surface of the mesh.

-- Staggered Vector Field = There is little to none information about what this means or how to use it. According to the docs, "The volume’s vector values are to be treated as lying on the faces of the respective cells, not the centers." Based on that description, it is assumed that you are populating voxel values with vector data. Most likely this would be velocity data of some kind. And, when things go to sample this vector data, it will do so at the surface of the voxel cube rather than the center. Other than that, I'm not quite sure how you might use this sort of VDB.

Type:

-- This defines the data type which is populated inside the voxels. For more information about data types, please visit the lesson where I cover this topic in Houdini For the New Artist II.

Background Value:

-- If voxels are not "activated" then they get assigned the background value. Voxels with this value use essentially no memory.

Visualization:

-- This section gives you viewport visualization options. This does not affect the underlying voxel values at all. In addition, I would recommend using the volume visualization sop instead.

Display Mode:

-- Guess From Type = This looks at the VDB Class and guesses what type of visualization works best based on what it finds.

-- Smoke = "The volume is rendered as smoke. Values of 0 or less are fully transparent. If lights are present, they are self-shadowed with the volume."

-- Rainbow = "The volume is rendered as transparent smoke. Values of 0 or less are fully transparent. Lights are ignored, reducing computation time. Instead, the smoke is colored a rainbow hue according to the position in the bounding box."

-- Isosurface = "An isosurface of equal valued voxels is extracted from the volume and displayed. This Display Isocontour is used to determine which isosurface is extracted." This gets used with SDF volumes.

-- Invisible = "The contents of the volume are not rendered at all."

Display Isocountour:

-- "Which isocontour to extract from the VDB. The default of 0 is good for SDF VDBs. Fog style VDBs would work better with something non-zero, such as 0.5."

Display Density:

-- This controls the fall off rate for the smoke visualization. Lower values allow the smoke to be more transparent.
Drag to resize

Voxel Size/Frustum/From Camera:

----------------------------------------
These options affect the quality/resolution of the vdb field
----------------------------------------

Voxel Size:

-- The voxel size is set in meters.

Frustum:

-- This whole section allows you to create a box that you intend on filling with activated voxel values using the VDB Activate SOP. Quality is determined by the Uniform Sampling settings. For more information how to use Uniform Sampling parameters, please visit the Volume Sop Node Bible entry. 

-- You have the option to taper the box, and if you do that, you'll also want to use a vdb resample so that your voxels are perfectly square. Non-square voxels are bad because they cause things to error out later on.

From Camera:

-- This will generate a frustum of voxels based on a camera's point of view. For more information about how to use these parameters, please check out the Volume SOP Node Bible Entry. And also use a VDB Resample here so that your voxels are perfectly square.