Blender Git Commit Log
Git Commits -> Revision aa48e1c
Revision aa48e1c by Hans Goudey (geometry-nodes-level-set-nodes) 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)
/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)
/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)