[Bf-blender-cvs] [a3dcbcb6e7c] geometry-nodes-level-set-nodes: Add two volume primitive nodes

Hans Goudey noreply at git.blender.org
Fri Aug 13 22:09:30 CEST 2021


Commit: a3dcbcb6e7c4049051ffd411baa9e9e6fd4bf125
Author: Hans Goudey
Date:   Fri Aug 13 11:30:31 2021 -0500
Branches: geometry-nodes-level-set-nodes
https://developer.blender.org/rBa3dcbcb6e7c4049051ffd411baa9e9e6fd4bf125

Add two volume primitive nodes

===================================================================

M	release/scripts/startup/nodeitems_builtins.py
M	source/blender/blenkernel/BKE_node.h
M	source/blender/blenkernel/intern/node.cc
M	source/blender/makesdna/DNA_node_types.h
M	source/blender/makesrna/intern/rna_nodetree.c
M	source/blender/nodes/CMakeLists.txt
M	source/blender/nodes/NOD_geometry.h
M	source/blender/nodes/NOD_static_types.h
A	source/blender/nodes/geometry/nodes/node_geo_level_set_primitive_platonic.cc
A	source/blender/nodes/geometry/nodes/node_geo_level_set_primitive_sphere.cc

===================================================================

diff --git a/release/scripts/startup/nodeitems_builtins.py b/release/scripts/startup/nodeitems_builtins.py
index c71a0976e24..16c972d9fce 100644
--- a/release/scripts/startup/nodeitems_builtins.py
+++ b/release/scripts/startup/nodeitems_builtins.py
@@ -600,6 +600,10 @@ geometry_node_categories = [
         NodeItem("GeometryNodeLevelSetBoolean"),
         NodeItem("GeometryNodeLevelSetFilter"),
         NodeItem("GeometryNodeLevelSetToFogVolume"),
+    ]),
+        GeometryNodeCategory("GEO_PRIMITIVES_VOLUME", "Volume Primitives", items=[
+        NodeItem("GeometryNodeLevelSetSphere"),
+        NodeItem("GeometryNodeLevelSetPlatonic"),
     ]),
     GeometryNodeCategory("GEO_GROUP", "Group", items=node_group_items),
     GeometryNodeCategory("GEO_LAYOUT", "Layout", items=[
diff --git a/source/blender/blenkernel/BKE_node.h b/source/blender/blenkernel/BKE_node.h
index 6be4da99eea..b82fa6b0972 100644
--- a/source/blender/blenkernel/BKE_node.h
+++ b/source/blender/blenkernel/BKE_node.h
@@ -1481,6 +1481,8 @@ int ntreeTexExecTree(struct bNodeTree *ntree,
 #define GEO_NODE_LEVEL_SET_BOOLEAN 1076
 #define GEO_NODE_LEVEL_SET_FILTER 1077
 #define GEO_NODE_LEVEL_SET_TO_FOG_VOLUME 1078
+#define GEO_NODE_LEVEL_SET_PRIMITIVE_SPHERE 1079
+#define GEO_NODE_LEVEL_SET_PRIMITIVE_PLATONIC 1080
 
 /** \} */
 
diff --git a/source/blender/blenkernel/intern/node.cc b/source/blender/blenkernel/intern/node.cc
index 6059173dc3b..9634de28667 100644
--- a/source/blender/blenkernel/intern/node.cc
+++ b/source/blender/blenkernel/intern/node.cc
@@ -5162,6 +5162,8 @@ static void registerGeometryNodes()
   register_node_type_geo_join_geometry();
   register_node_type_geo_level_set_boolean();
   register_node_type_geo_level_set_filter();
+  register_node_type_geo_level_set_primitive_platonic();
+  register_node_type_geo_level_set_primitive_sphere();
   register_node_type_geo_level_set_to_fog_volume();
   register_node_type_geo_material_assign();
   register_node_type_geo_material_replace();
diff --git a/source/blender/makesdna/DNA_node_types.h b/source/blender/makesdna/DNA_node_types.h
index bdb4a48b851..6a3ed352fe0 100644
--- a/source/blender/makesdna/DNA_node_types.h
+++ b/source/blender/makesdna/DNA_node_types.h
@@ -1317,6 +1317,11 @@ typedef struct NodeGeometryLevelSetFilter {
   uint8_t operation;
 } NodeGeometryLevelSetFilter;
 
+typedef struct NodeGeometryLevelSetPlatonic {
+  /* NodeGeometryPlatonicShape */
+  uint8_t shape;
+} NodeGeometryLevelSetPlatonic;
+
 typedef struct NodeAttributeCombineXYZ {
   /* GeometryNodeAttributeInputMode. */
   uint8_t input_type_x;
@@ -2010,6 +2015,14 @@ typedef enum GeometryNodeFilterOperation {
   GEO_NODE_LEVEL_SET_FILTER_LAPLACIAN = 5,
 } GeometryNodeFilterOperation;
 
+typedef enum NodeGeometryPlatonicShape {
+  GEO_NODE_PLATONIC_TETRAHEDRON = 4,
+  GEO_NODE_PLATONIC_CUBE = 6,
+  GEO_NODE_PLATONIC_OCTAHEDRON = 8,
+  GEO_NODE_PLATONIC_DODECAHEDRON = 12,
+  GEO_NODE_PLATONIC_ICOSAHEDRON = 20,
+} NodeGeometryPlatonicShape;
+
 typedef enum GeometryNodeAttributeTransferMapMode {
   GEO_NODE_ATTRIBUTE_TRANSFER_NEAREST_FACE_INTERPOLATED = 0,
   GEO_NODE_ATTRIBUTE_TRANSFER_NEAREST = 1,
diff --git a/source/blender/makesrna/intern/rna_nodetree.c b/source/blender/makesrna/intern/rna_nodetree.c
index ec64e3aca90..22283fa3d58 100644
--- a/source/blender/makesrna/intern/rna_nodetree.c
+++ b/source/blender/makesrna/intern/rna_nodetree.c
@@ -9941,6 +9941,31 @@ static void def_geo_level_set_filter(StructRNA *srna)
   RNA_def_property_update(prop, NC_NODE | NA_EDITED, "rna_Node_socket_update");
 }
 
+static void def_geo_level_set_primitive_platonic(StructRNA *srna)
+{
+  PropertyRNA *prop;
+
+  static EnumPropertyItem shape_items[] = {
+      {GEO_NODE_PLATONIC_TETRAHEDRON, "TETRAHEDRON", 0, "Tetrahedron", "Create a 4-sided shape"},
+      {GEO_NODE_PLATONIC_CUBE, "CUBE", 0, "Cube", "Create a 6-sided cube"},
+      {GEO_NODE_PLATONIC_OCTAHEDRON, "OCTAHEDRON", 0, "Octahedron", "Create a 8-sided shape"},
+      {GEO_NODE_PLATONIC_DODECAHEDRON,
+       "DODECAHEDRON",
+       0,
+       "Dodecahedron",
+       "Create a 12-sided shape"},
+      {GEO_NODE_PLATONIC_ICOSAHEDRON, "ICOSAHEDRON", 0, "Icosahedron", "Create a 20-sided shape"},
+      {0, NULL, 0, NULL, NULL},
+  };
+
+  RNA_def_struct_sdna_from(srna, "NodeGeometryLevelSetPlatonic", "storage");
+
+  prop = RNA_def_property(srna, "shape", PROP_ENUM, PROP_NONE);
+  RNA_def_property_enum_items(prop, shape_items);
+  RNA_def_property_ui_text(prop, "Shape", "");
+  RNA_def_property_update(prop, NC_NODE | NA_EDITED, "rna_Node_update");
+}
+
 static void def_geo_attribute_combine_xyz(StructRNA *srna)
 {
   PropertyRNA *prop;
diff --git a/source/blender/nodes/CMakeLists.txt b/source/blender/nodes/CMakeLists.txt
index 04bd9f9db22..0f713295fff 100644
--- a/source/blender/nodes/CMakeLists.txt
+++ b/source/blender/nodes/CMakeLists.txt
@@ -189,6 +189,8 @@ set(SRC
   geometry/nodes/node_geo_join_geometry.cc
   geometry/nodes/node_geo_level_set_boolean.cc
   geometry/nodes/node_geo_level_set_filter.cc
+  geometry/nodes/node_geo_level_set_primitive_platonic.cc
+  geometry/nodes/node_geo_level_set_primitive_sphere.cc
   geometry/nodes/node_geo_level_set_to_fog_volume.cc
   geometry/nodes/node_geo_material_assign.cc
   geometry/nodes/node_geo_material_replace.cc
diff --git a/source/blender/nodes/NOD_geometry.h b/source/blender/nodes/NOD_geometry.h
index a0d44b39934..dc7fe0e96f5 100644
--- a/source/blender/nodes/NOD_geometry.h
+++ b/source/blender/nodes/NOD_geometry.h
@@ -75,6 +75,8 @@ void register_node_type_geo_is_viewport(void);
 void register_node_type_geo_join_geometry(void);
 void register_node_type_geo_level_set_boolean(void);
 void register_node_type_geo_level_set_filter(void);
+void register_node_type_geo_level_set_primitive_platonic(void);
+void register_node_type_geo_level_set_primitive_sphere(void);
 void register_node_type_geo_level_set_to_fog_volume(void);
 void register_node_type_geo_material_assign(void);
 void register_node_type_geo_material_replace(void);
diff --git a/source/blender/nodes/NOD_static_types.h b/source/blender/nodes/NOD_static_types.h
index 42351cc3098..cfa436432b9 100644
--- a/source/blender/nodes/NOD_static_types.h
+++ b/source/blender/nodes/NOD_static_types.h
@@ -302,8 +302,8 @@ DefNode(GeometryNode, GEO_NODE_CURVE_PRIMITIVE_SPIRAL, 0, "CURVE_PRIMITIVE_SPIRA
 DefNode(GeometryNode, GEO_NODE_CURVE_PRIMITIVE_STAR, 0, "CURVE_PRIMITIVE_STAR", CurveStar, "Star", "")
 DefNode(GeometryNode, GEO_NODE_CURVE_RESAMPLE, def_geo_curve_resample, "CURVE_RESAMPLE", CurveResample, "Resample Curve", "")
 DefNode(GeometryNode, GEO_NODE_CURVE_REVERSE, 0, "CURVE_REVERSE", CurveReverse, "Curve Reverse", "")
-DefNode(GeometryNode, GEO_NODE_CURVE_SET_HANDLES, def_geo_curve_set_handles, "CURVE_SET_HANDLES", CurveSetHandles, "Set Handle Type", "")
 DefNode(GeometryNode, GEO_NODE_CURVE_SELECT_HANDLES, def_geo_curve_select_handles, "CURVE_SELECT_HANDLES", CurveSelectHandles, "Select by Handle Type", "")
+DefNode(GeometryNode, GEO_NODE_CURVE_SET_HANDLES, def_geo_curve_set_handles, "CURVE_SET_HANDLES", CurveSetHandles, "Set Handle Type", "")
 DefNode(GeometryNode, GEO_NODE_CURVE_SPLINE_TYPE, def_geo_curve_spline_type, "CURVE_SPLINE_TYPE", CurveSplineType, "Set Spline Type", "")
 DefNode(GeometryNode, GEO_NODE_CURVE_SUBDIVIDE, def_geo_curve_subdivide, "CURVE_SUBDIVIDE", CurveSubdivide, "Curve Subdivide", "")
 DefNode(GeometryNode, GEO_NODE_CURVE_TO_MESH, 0, "CURVE_TO_MESH", CurveToMesh, "Curve to Mesh", "")
@@ -314,6 +314,11 @@ DefNode(GeometryNode, GEO_NODE_EDGE_SPLIT, 0, "EDGE_SPLIT", EdgeSplit, "Edge Spl
 DefNode(GeometryNode, GEO_NODE_INPUT_MATERIAL, def_geo_input_material, "INPUT_MATERIAL", InputMaterial, "Material", "")
 DefNode(GeometryNode, GEO_NODE_IS_VIEWPORT, 0, "IS_VIEWPORT", IsViewport, "Is Viewport", "")
 DefNode(GeometryNode, GEO_NODE_JOIN_GEOMETRY, 0, "JOIN_GEOMETRY", JoinGeometry, "Join Geometry", "")
+DefNode(GeometryNode, GEO_NODE_LEVEL_SET_BOOLEAN , def_geo_level_set_boolean, "LEVEL_SET_BOOLEAN", LevelSetBoolean, "Level Set Boolean", "")
+DefNode(GeometryNode, GEO_NODE_LEVEL_SET_FILTER , def_geo_level_set_filter, "LEVEL_SET_FILTER", LevelSetFilter, "Level Set Filter", "")
+DefNode(GeometryNode, GEO_NODE_LEVEL_SET_PRIMITIVE_SPHERE , 0, "LEVEL_SET_PRIMITIVE_SPHERE", LevelSetSphere, "Level Set Sphere", "")
+DefNode(GeometryNode, GEO_NODE_LEVEL_SET_PRIMITIVE_PLATONIC , def_geo_level_set_primitive_platonic, "LEVEL_SET_PRIMITIVE_PLATONIC", LevelSetPlatonic, "Level Set Platonic", "")
+DefNode(GeometryNode, GEO_NODE_LEVEL_SET_TO_FOG_VOLUME , 0, "LEVEL_SET_TO_FOG", LevelSetToFogVolume, "Level Set to Fog Volume", "")
 DefNode(GeometryNode, GEO_NODE_MATERIAL_ASSIGN, 0, "MATERIAL_ASSIGN", MaterialAssign, "Material Assign", "")
 DefNode(GeometryNode, GEO_NODE_MATERIAL_REPLACE, 0, "MATERIAL_REPLACE", MaterialReplace, "Material Replace", "")
 DefNode(GeometryNode, GEO_NODE_MESH_PRIMITIVE_CIRCLE, def_geo_mesh_circle, "MESH_PRIMITIVE_CIRCLE", MeshCircle, "Mesh Circle", "")
@@ -326,6 +331,7 @@ DefNode(GeometryNode, GEO_NODE_MESH_PRIMITIVE_LINE, def_geo_mesh_line, "MESH_PRI
 DefNode(GeometryNode, GEO_NODE_MESH_PRIMITIVE_UV_SPHERE, 0, "MESH_PRIMITIVE_UV_SPHERE", MeshUVSphere, "UV Sphere", "")
 DefNode(GeometryNode, GEO_NODE_MESH_SUBDIVIDE, 0, "MESH_SUBDIVIDE", MeshSubdivide, "Mesh Subdivide", "")
 DefNode(GeometryNode, GEO_NODE_MESH_TO_CURVE, 0, "MESH_TO_CURVE", MeshToCurve, "Mesh to Curve", "")
+DefNode(GeometryNode, GEO_NODE_MESH_TO_LEVEL_SET , 0, "MESH_TO_LEVEL_SET", MeshToLevelSet, "Mesh to Level Set", "")
 DefNode(GeometryNode, GEO_NODE_OBJECT_INFO, def_geo_object_info, "OBJECT_INFO", ObjectInfo, "Object Info", "")
 DefNode(GeometryNode, GEO_NODE_POINT_DISTRIBUTE, def_geo_point_distribute, "POINT_DISTRIBUTE", PointDistribute, "Point Distribute", "")
 DefNode(GeometryNode, GEO_NODE_POINT_INSTANCE, def_geo_point_instance, "POINT_INSTANCE", PointInstance, "Point Instance", "")
@@ -343,10 +349,6 @@ DefNode(GeometryNode, GEO_NODE_TRANSFORM, 0, "TRANSFORM", Transform, "Transform"
 DefNode(GeometryNode, GEO_NODE_TRIANGULATE, def_geo_triangulate, "TRIANGULATE", Triangulate, "Triangulate", "")
 DefNode(GeometryNode, GEO_NODE_VIEWER, 0, "VIEWER", Viewer, "Viewer", "")
 DefNode(GeometryNode, GEO_NODE_VOLUME_TO_MESH,

@@ Diff output truncated at 10240 characters. @@



More information about the Bf-blender-cvs mailing list