Is it “Voxel Data Base” or “Volumetric Data Blocks”? There’s a few different ideas for what “VDB” actually stands for, but what they do and how they’re used in VFX is very much established. VDB is a 3D file format specifically designed for volumetric data, aka “volumes”. Classic examples of volumes stored as VDBs include assets like smoke, explosions, clouds, water simulations. If formats like OBJ and FBX are primarily used for 3D models of solid things, VDBs are more suited to gaseous and liquid things.
Lux Aeterna uses volumes in creating many of our VFX shots, whether it’s imposing dust storms or majestic nebulas. One of the key things with working with volumes is that they can be really heavy to work with and render. This is one of the reasons I’ve had an eye on developments in bringing volumes to Unreal for a while, and jumped on the opportunity to try an alpha version of the Expanse VDB plugin for Unreal.
I’ve included some of the early tests of Expanse I captured. Nothing too fancy but definitely interesting to see how things like shadows and light transmission work, as well as steering the camera through a volume.
The approach with Expanse is to compress the VDB on import into Unreal, converting it into what they’re calling an “EVDB”, basically a more performant asset configured to work within Unreal. And I’ve found this to be a pretty smooth experience so far; VDBs are dragged and dropped into Unreal, the level of compression is chosen, processes fairly quickly, and then the resulting EVDB asset can be dragged straight into an Unreal scene. This works with static volumes like clouds, but also animated volumes such as explosions.
Now, different types of volume work differently, and so you need to be able to configure things such as the density, emissiveness, and light scattering. Expanse does this through Mediums, configuration files that can be used to apply visual properties to a given EVDB.
The possibilities of EVDBs seem huge; in their most recent update, Wavefront claim they’ve been able to compress a 22GB VDB down to 400mb without a noticeable drop in quality. This, combined with some of the other rendering tricks at play, is essential to getting scenes with multiple highly detailed VDBs to run in Unreal.
I like what Expanse is doing here, tackling one of the core challenges with VDBs and doing so with an intuitive, straightforward integration within Unreal.