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 following render message:
"unsupported VDB file format (expected version 223 or earlier, got version 224)". The volume still renders.
If your vdb 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 without 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 detects 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.
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 writes 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 cause 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
Make sure $RMANTREE/lib/plugins is in your Procedural Path. This is required for finding the impl_openvdb.so.
Create a box OBJ. In the box's Render/Geometry's Obj post-include, include the RIVolume that will be emitted to the RIB.
- 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 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 blobbydso:stringargs" ["$HIP/vdb/smoke.vdb" "density" "velocity"].