OpenVDB 11.0 Updates
Updated from Version 7.0 to Version 11.0
OpenVDB is a library comprising a compact hierarchical data structure and a suite of tools for the efficient manipulation of sparse, possibly time-varying, volumetric data discretized on a three-dimensional grid. It is based on VDB, which was developed by Ken Museth at DreamWorks Animation, and it offers an effectively infinite 3D index space, compact storage (both in memory and on disk), fast data access (both random and sequential), and a collection of algorithms specifically optimized for the data structure for common tasks such as filtering, constructive solid geometry (CSG), discretization of partial differential equations, voxelization of polygons, skinning of particles, volumetric compositing and sampling.
Enhanced Performance:
The transition to Open VDB 11 provides substantial performance boosts, enabling faster computations and more efficient memory usage across all volumetric operations.
Flame, Smoke and Water (Turbulence and LW Flow):
With the new Open VDB 11, the flame tool now supports more intricate and detailed simulations, resulting in more realistic fire and smoke effects. Flow benefits from the upgraded Open VDB library with enhanced accuracy and stability in fluid simulations, producing more lifelike water behaviours.
Optimized Simulations:
Enjoy smoother and faster rendering of complex flame dynamics, allowing for higher fidelity in visual effects production.
Version 10.0 - October 27,. 2022
Improvements:
Significantly improved the performance of all ValueAccessor methods that access LeafNode value buffer data. This improvement applies to any type which is delay load compatible (all default types except for bool and mask grids) and improves the performance of many OpenVDB tools.
Improved the performance of volumeToMesh by 10-15%.
ABI changes:
ABI change to openvdb::RootNode, which now has a new member that defines the origin of the node. For now this origin is set to a default value of (0,0,0), but in the near future we will allow for offsets to improve access performance and reduce the memory footprints.
Removed deprecated virtual methods from AttributeArray.
API changes:
Removed PagedArray::push_back().
Removed Tree visitor methods from Tree, RootNode, InternalNode and LeafNode classes - visit(), visit2(), visitActiveBBox().
Removed LeafManager::getNodes().
Removed tools::dilateVoxels() and tools::erodeVoxels() in favor of tools::dilateActiveValues() and tools:: erodeActiveValues().
Removed tools::FindActiveValues::any() and tools::FindActiveValues::none().
StringGrid and StringTrees have been removed.
Bug Fixes:
Fixed an issue with tools::topologyToLevelSet which would previously ignore active tiles in the input topology.
Fixed a bug with ValueAccessor::addLeaf and ValueAccessor::addTile which wouldn't add the provided leaf nodes to the underlying tree. This bug did NOT affect the specialized accessors which are used by the default tree configuration.
Fixed a bug on Windows where math::Abs could truncate 64bit integer values.
Fixed an occurrence of undefined behaviour with math::floatToInt32 and math:: doubleToInt64.
Fixed bugs in the sum merge that produced incorrect merged grids when deep-copying the input nodes or when non-zero background grids were being used.
Fixed a bug in FastSweeping where voxels/tiles are left with min/max float values.
Fixed a bug in math/Tuple.h that prevented compilation with VS2017.
Version 11.0.0 - November 1, 2023
This version introduces ABI changes relative to older major releases, so to preserve ABI compatibility it might be necessary to define the macro OPENVDB_ABI_VERSION_NUMBER=N.
OpenEXR 2 and Python 2 are no longer supported.
Improvements:
Removed use of boost::any in favor of std::any. Contributed by Brian McKinnon
Bug Fixes:
Fix potential crash reading corrupt .vdb files with invalid blocks or zip chunks. Contributed by Matthias Ueberheide