User:Caio/GSoC2023/Abstract
Volumetric data has been used in several applications such as volume rendering, medical imaging, VFX production, fluid simulation and modeling. A common way to represent this type of data is a uniform axis-aligned 3D grid. This representation is simple and easy to use however it has a large memory footprint, especially for sparse volumetric data.
To reduce this issue, VDB was proposed by Museth, a hierarchical and memory efficient data structure that supports arbitrary topology and time-varying data. Later, an open source C++ library called OpenVDB was developed by Dreamworks and it has been used in volumetric rendering, modeling and simulation.
The main goal of this project is to add support for VDB in BRL-CAD. Currently, BRL-CAD has a volume entity type which can be ray traced and the project would add another entity type that stores a VDB and it could be ray traced to render. In terms of usability, the VDB render could be used by a command line that would have the VDB file as an argument and the camera whose rays will be traced from it.
OpenVDB (https://www.openvdb.org/) is a well-documented API with several examples and an active community which will help while building this project. Also, a code like vbd_render (https://manpages.ubuntu.com/manpages/bionic/man1/vdb_render.1.html) could also be used as reference.