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 [1], 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 [2], modeling [3] and simulation [4].
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.
References [1] Museth, K. (2013). VDB: High-resolution sparse volumes with dynamic topology. ACM transactions on graphics (TOG), 32(3), 1-22. [2] Miller, B., Museth, K., Penney, D., & Zafar, N. B. (2012). Cloud modeling and rendering for “Puss in Boots”. ACM SIGGRAPH Talks. [3] Ghoniem, A., Museth, K., & Animation, D. (2013, July). Hair growth by means of sparse volumetric modeling and advection. In SIGGRAPH Talks (pp. 34-1). [4] Van Opstal, B., Janin, L., Museth, K., & Aldén, M. (2014). Large scale simulation and surfacing of water and ice effects in dragons 2. In ACM SIGGRAPH 2014 Talks (pp. 1-1).