Hi, recently I’ve been working on a patch to expose OpenVDB level set grids into geometry nodes.
The patch explains it a bit more, but basically they are a way of efficiently describing manifold surfaces as volumes, because they only store values for a narrow band of voxels on the surface. This has just been a personal project mainly, but I’d like to get some feedback, with a goal of maybe including some of this in 3.0, if there’s time.
The patch contains some more straightforward changes as well as well as some experimental nodes like “Level Set Morph”. For a full list of the changes, see the patch.
Basic useful feedback:
- Is it useful for basic things like booleans or remeshing?
- What are the biggest missing pieces for usability or functionality?
- For naming, “Level Set” might not be the best term to expose to users, that can be discussed here. I will probably rename the nodes in the patch to “Surface Volume” soon.
Some more technical questions I’d like to answer:
- What should the Join Geometry node do for volumes? Should it merge/union grids, or just add all of the grids in a list for the result volume?
- How should volumes with multiple grids work in general? Implicitly use all grids in the volume?
- Conceptually, can there be overlap between volume grids and attributes?
Features I’d like to add eventually, but aren’t contained in the patch:
- A “Volume Advect” node with a field input
- Mask inputs to some volume nodes that would use a mask grid to only change part of the grid.
- Exposing the level set fracture function from the OpenVDB API.
- Level set statistics like volume and surface area.
- What else?
Builds are on the build bot as always, though I’m seeing some build errors on windows and problems with the ARM Mac builds