Page tree

Contents

OpenVDB is an open source hierarchical data structure for volumes. It has become the standard for interchange of volumetric data between applications.  For more information about OpenVDB, see the OpenVDB FAQ .

 

Houdini 16 uses OpenVDB 3.3.0 but RenderMan currently supports OpenVDB 3.1.0.

You can ignore the message: "unsupported VDB file format (expected version 223 or earlier, got version 224)". The volume still renders correctly.

But if your vdb file is created with OpenVDB 3.3.0 using Points, RenderMan will ignore it.

 

Houdini 16.0.655 onward

Rendering from an OpenVDB File

If you already have a .vdb file, RenderMan will read the vdb file using blobbydso:impl_openvdb procedural instead of converting the .vdb file to volume.  

In Houdini 16.0.655 onward, we simply create a Geometry SOP. Dive inside the node and set the File SOP's Geometry File parameter to point to  your .vdb file. That's it! RenderMan for Houdini will automatically detect the bounding box and all the VDB grid names.

Assign PxrVolume or your volume Bxdf to the Geometry node. Don't forget to set the density primvar name (which matches the density grid name in your .vdb file) appropriately in PxrVolume.

Modifying VDB

Houdini has a list of VDB SOPs which allow us to modify the VDB data to render.  For example, say we want to only include the density grid name for the render,  we add a VDB SOP.  

Then specify the density name and its type.  In this example, it is called "render.density".  We can also add more than one name to include.  We can also enable or disable them.  

See http://www.sidefx.com/docs/houdini/nodes/sop/vdb for more information.

Rendering from Houdini Volume

To render a Houdini volume network or a non-VDB file, connect it to a Convert VDB SOP.  Change "Convert To" to VDB. When you render, RenderMan for Houdini will automatically write out the .vdb file to the Houdini temporary directory and use blobbydso:impl_openvdb procedural to read the .vdb file. This way, we are utilizing the efficient VDB format and not emitting RiVolume data that could get very big which creates a huge .rib file.

Houdini pyro effects currently do not work with ConvertVDB in RenderMan for Houdini. This is a Houdini bug that has been reported.

Before Houdini 16.0.655

Rendering from an OpenVDB File

If you already have a .vdb file, RenderMan will read it with blobbydso:impl_openvdb procedural without converting the .vdb file to volume.  Before Houdini 16.0.655, the only way is to create a box SOP and manually specify the Post include to inject it to the RIB.

Using Post Include

Create a box OBJ. In the box's Render/Geometry's Obj post-include, include the RiVolume that will be emitted to the RIB.

 

For example:

Volume "blobbydso:impl_openvdb" [-19 19 -7 80 -18 80] [0 0 0] "constant string[2] blobbydso:stringargs" ["$HIP/vdb/smoke.vdb" "density"] "varying float density" [] "constant float blobbydso:threshold" [0.001]
  • Set your bounding box:  the numbers in [] after "blobbydso:impl_openvdb" is the bounding box for the vdb.
  • Set the path and filename of the vdb after "constant string[2] blobbydso:stringargs". 
  • Set the channel name(s). The default channel of your vdb file is not required to be "density".  You just need to rename "density" to the channel in your vdb file.
  • If you have more than one channel name, you can append it to the list, e.g. "constant string[2] blobbydso:stringargs" ["$HIP/vdb/smoke.vdb" "density" "velocity"].