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. @@ _______________________________________________ Bf-blender-cvs mailing list Bf-blender-cvs@blender.org List details, subscription details or unsubscribe: https://lists.blender.org/mailman/listinfo/bf-blender-cvs