/vdb-rs

🦀 Rust crate for manipulating OpenVDB files

Primary LanguageRustMIT LicenseMIT

☁️ vdb-rs

Actions Status Latest version Documentation Lines of code MIT Contributor Covenant

Banner

This crate provides a rust native implementation of the VDB file format, following the original OpenVDB implementation.

Usage

Add this to your Cargo.toml:

[dependencies]
vdb-rs = "0.6.0"

This crate currently only supports VDB reading and parsing of a relatively large section of the VDB test assets, while it currently only supports reading the data an nothing more, the longer term goal for this is to reach feature parity with the C++ OpenVDB crate. Implementation of features however is use-case limited, so contributions in areas that are missing are welcome.

Known missing features

  1. Multi-pass I/O (PointDataGrid)
  2. VDB Writing
  3. Older OpenVDB versions
  4. DDA tracing (with example)
  5. Delay loading

Broken files

These are test files from the OpenVDB website; https://www.openvdb.org/download/. Most file seem to be loading correctly and displaying correctly in the bevy example that's provided with this library.

The only failing files are the ones containing a "points" grid. They all fail on ParseError::InvalidNodeMetadata which seem to be related to the lack of Multi-Pass I/O, though most need to be investigated.

  • "boat_points.vdb-1.0.0/boat_points.vdb" ("speedboat" grid loads correctly)
  • "bunny_points.vdb-1.0.0/bunny_points.vdb"
  • "sphere_points.vdb-1.0.0/sphere_points.vdb"
  • "waterfall_points.vdb-1.0.0/waterfall_points.vdb"