Volume SDF

 

The Volume SDF node acts as a placeholder for volume geometry (VDBDreamworks’ open-source C++ library housing the data structures and tools implementation for storing and manipulating volume data, like smoke and other amorphous materials. The purpose of OpenVDB is mostly to have an efficient way to store volumetric data in memory and on disk. It has evolved into a more general toolkit that also lets you accomplish other things, such as fracturing volumes, converting meshes to volumes and vice versa. However, it does not include a computational fluid dynamics solver, and therefore it cannot procedurally generate smoke or fire. OpenVDB is fully integrated as a library in OctaneRender. For more information about OpenVDB, please see http://www.openvdb.org/.). It is different from a simple Volume node, which depends on traditional triangulated volumetric shaders. The Volume SDF node rebuilds a Signed Distance Field (SDF) based on the surface level sets defined in the VDB file, and recreates the mathematical description of the geometry instead. The new Volume SDF takes the same resolution as the original volume, but these can feed into OSL shaders, which allow the Volume SDF to take on an infinite resolution and even appended with procedural effects (Figure 3).

To use the Volume SDF node, right-click on the Nodegraph Editor, then click on Geometry, followed by Volume SDF. From the operating system's File Explorer, select and import the volume VDB file as a Volume SDF.

Volume_SDF_Fig01_SE_v2022.jpg

Figure 1: Adding the Volume SDF node to the scene

 

Figure 2: Comparison of the original Volume node and the Volume SDF node

 

Figure 3: A modified OSL texture node that adds procedural effects to level set surfaces

 

Applications Of SDF Surfaces And The Vectron Primitive

Figure 4: An example of an SDF smooth union with a MaterialThe representation of the surface or volume properties of an object. mix implemented as part of the union

 

OctaneRender® will render SDF surfaces defined using OSL shaders without needing to convert them to a Mesh first. You can change the surfaces with input variables without having to wait for any processing, and you can also create networks of set operations such as unions, subtractions, intersection, and their smooth variants - none of which need to be meshed before rendering, and all are compiled using OSL.

Figure 5: Example of OSL shaders with input variables to manipulate the shape of Vectron objects

 

Figure 6: Example a more complex network of set operations (unions, subtractions, intersection, and their smooth variants)

 

You can download the example of the VolumeSDF Node in Figure 4 here: sdf-union-material4.orbx