Blender Git Commit Log

Git Commits -> Revision aa48e1c

August 1, 2021, 04:58 (GMT)
Geometry Nodes: Level Set Nodes (WIP)

Level sets are representations of all of the input values where a
function's output is the same. If you imagine a "position to density"
function, the corresponding level set describes a 3D surface. Disrete
Level Sets have some benefits over meshes because they always describe
a manifold shape, which makes some operations simpler. In particular,
Boolean (CSG) operations become quite straightforward. In a procedural
context, they also have the benefit of easily change-able resolution.

The OpenVDB library comes with a set of tools that getting useful
functionality out of this data structure relatively simple. This patch
adds initial versions of three level set nodes:

* **Mesh to Level Set**: Like the "Mesh to Volume" node, but creates a level set instead
** Currently the grid name is hardcoded to `level_set`
** Currently only voxel size input is available
* **Level Set Boolean**: Provides the union, difference, and intersect operations.
** The existing Boolean node should be renamed to "Mesh Boolean"
** Missing is resampling of the second input level set for a transformation.
* **Level Set Filter**: Provides "Grow", "Shrink", and "Smooth" operations.
** There are some other filters provided in the OpenVDB toolkit,
I'm still trying to figure out their use cases though.

This patch is meant to show some possibility and give anyone interested
the chance to test. Another issue is that Blender doesn't have the ability
to display level sets at the moment, which is the idea behind this task: T88599

Differential Revision: https://developer.blender.org/D12100

Commit Details:

Full Hash: aa48e1cd66305cddf1383663a2efee7e637e6d7d
Parent Commit: 7927798
Lines Changed: +666, -16

3 Added Paths:

/source/blender/nodes/geometry/nodes/node_geo_level_set_boolean.cc (+172, -0) (View)
/source/blender/nodes/geometry/nodes/node_geo_level_set_filter.cc (+181, -0) (View)
/source/blender/nodes/geometry/nodes/node_geo_mesh_to_level_set.cc (+160, -0) (View)

16 Modified Paths:

/release/scripts/startup/nodeitems_builtins.py (+3, -0) (Diff)
/source/blender/blenkernel/BKE_geometry_set.hh (+2, -0) (Diff)
/source/blender/blenkernel/BKE_node.h (+3, -0) (Diff)
/source/blender/blenkernel/BKE_volume.h (+6, -2) (Diff)
/source/blender/blenkernel/intern/geometry_set.cc (+9, -0) (Diff)
/source/blender/blenkernel/intern/node.cc (+3, -0) (Diff)
/source/blender/blenkernel/intern/volume.cc (+34, -10) (Diff)
/source/blender/makesdna/DNA_node_types.h (+19, -0) (Diff)
/source/blender/makesrna/intern/rna_nodetree.c (+61, -0) (Diff)
/source/blender/modifiers/intern/MOD_mesh_to_volume.cc (+1, -1) (Diff)
/source/blender/modifiers/intern/MOD_volume_displace.cc (+1, -1) (Diff)
/source/blender/nodes/CMakeLists.txt (+3, -0) (Diff)
/source/blender/nodes/geometry/nodes/node_geo_points_to_volume.cc (+1, -1) (Diff)
/source/blender/nodes/geometry/nodes/node_geo_transform.cc (+1, -1) (Diff)
/source/blender/nodes/NOD_geometry.h (+3, -0) (Diff)
/source/blender/nodes/NOD_static_types.h (+3, -0) (Diff)
By: Miika HämäläinenLast update: Nov-07-2014 14:18MiikaHweb | 2003-2021