[Bf-blender-cvs] [83c87b65646] geometry-nodes-mesh-primitives: Start of Cylinder node, add distance float socket
Hans Goudey
noreply at git.blender.org
Thu Mar 11 23:15:10 CET 2021
Commit: 83c87b656465a11691f232e266c67e6eba5cb1a4
Author: Hans Goudey
Date: Fri Feb 26 09:00:24 2021 -0600
Branches: geometry-nodes-mesh-primitives
https://developer.blender.org/rB83c87b656465a11691f232e266c67e6eba5cb1a4
Start of Cylinder node, add distance float socket
===================================================================
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
M source/blender/nodes/geometry/nodes/node_geo_mesh_primitive_circle.cc
A source/blender/nodes/geometry/nodes/node_geo_mesh_primitive_cylinder.cc
M source/blender/nodes/geometry/nodes/node_geo_mesh_primitive_uv_sphere.cc
M source/blender/nodes/intern/node_socket.cc
===================================================================
diff --git a/source/blender/blenkernel/BKE_node.h b/source/blender/blenkernel/BKE_node.h
index 1cfb0a88a1d..f8bd9ac03f6 100644
--- a/source/blender/blenkernel/BKE_node.h
+++ b/source/blender/blenkernel/BKE_node.h
@@ -1375,6 +1375,7 @@ int ntreeTexExecTree(struct bNodeTree *ntree,
#define GEO_NODE_MESH_PRIMITIVE_CUBE 1030
#define GEO_NODE_MESH_PRIMITIVE_CIRCLE 1031
#define GEO_NODE_MESH_PRIMITIVE_UV_SPHERE 1032
+#define GEO_NODE_MESH_PRIMITIVE_CYLINDER 1033
/** \} */
diff --git a/source/blender/blenkernel/intern/node.cc b/source/blender/blenkernel/intern/node.cc
index accbb7338d8..7fa2f4cbdcd 100644
--- a/source/blender/blenkernel/intern/node.cc
+++ b/source/blender/blenkernel/intern/node.cc
@@ -1574,6 +1574,8 @@ const char *nodeStaticSocketType(int type, int subtype)
return "NodeSocketFloatAngle";
case PROP_TIME:
return "NodeSocketFloatTime";
+ case PROP_DISTANCE:
+ return "NodeSocketFloatDistance";
case PROP_NONE:
default:
return "NodeSocketFloat";
@@ -1643,6 +1645,8 @@ const char *nodeStaticSocketInterfaceType(int type, int subtype)
return "NodeSocketInterfaceFloatAngle";
case PROP_TIME:
return "NodeSocketInterfaceFloatTime";
+ case PROP_DISTANCE:
+ return "NodeSocketInterfaceFloatDistance";
case PROP_NONE:
default:
return "NodeSocketInterfaceFloat";
@@ -4805,6 +4809,7 @@ static void registerGeometryNodes()
register_node_type_geo_join_geometry();
register_node_type_geo_mesh_primitive_circle();
register_node_type_geo_mesh_primitive_cube();
+ register_node_type_geo_mesh_primitive_cylinder();
register_node_type_geo_mesh_primitive_uv_sphere();
register_node_type_geo_object_info();
register_node_type_geo_point_distribute();
diff --git a/source/blender/makesdna/DNA_node_types.h b/source/blender/makesdna/DNA_node_types.h
index 2f536edf0f5..be16e48495c 100644
--- a/source/blender/makesdna/DNA_node_types.h
+++ b/source/blender/makesdna/DNA_node_types.h
@@ -1231,6 +1231,12 @@ typedef struct NodeGeometryMeshCircle {
uint8_t fill_type;
} NodeGeometryMeshCircle;
+typedef struct NodeGeometryMeshCylinder {
+ /* GeometryNodeMeshCircleFillType. */
+ uint8_t fill_type_top;
+ uint8_t fill_type_bottom;
+} NodeGeometryMeshCylinder;
+
/* script node mode */
#define NODE_SCRIPT_INTERNAL 0
#define NODE_SCRIPT_EXTERNAL 1
diff --git a/source/blender/makesrna/intern/rna_nodetree.c b/source/blender/makesrna/intern/rna_nodetree.c
index 04a3e5ade2e..1368cab3fd7 100644
--- a/source/blender/makesrna/intern/rna_nodetree.c
+++ b/source/blender/makesrna/intern/rna_nodetree.c
@@ -398,6 +398,13 @@ static const EnumPropertyItem prop_shader_output_target_items[] = {
{0, NULL, 0, NULL, NULL},
};
+static EnumPropertyItem rna_node_geometry_mesh_circle_fill_type_items[] = {
+ {GEO_NODE_MESH_CIRCLE_FILL_NONE, "NONE", 0, "None", ""},
+ {GEO_NODE_MESH_CIRCLE_FILL_NGON, "NGON", 0, "N-Gon", ""},
+ {GEO_NODE_MESH_CIRCLE_FILL_TRIANGLE_FAN, "TRIANGLE_FAN", 0, "Triangle Fan", ""},
+ {0, NULL, 0, NULL, NULL},
+};
+
#endif
#define ITEM_ATTRIBUTE \
@@ -9192,21 +9199,31 @@ static void def_geo_mesh_circle(StructRNA *srna)
{
PropertyRNA *prop;
- static EnumPropertyItem fill_type_items[] = {
- {GEO_NODE_MESH_CIRCLE_FILL_NONE, "NONE", 0, "None", ""},
- {GEO_NODE_MESH_CIRCLE_FILL_NGON, "NGON", 0, "N-Gon", ""},
- {GEO_NODE_MESH_CIRCLE_FILL_TRIANGLE_FAN, "TRIANGLE_FAN", 0, "Triangle Fan", ""},
- {0, NULL, 0, NULL, NULL},
- };
-
RNA_def_struct_sdna_from(srna, "NodeGeometryMeshCircle", "storage");
prop = RNA_def_property(srna, "fill_type", PROP_ENUM, PROP_NONE);
- RNA_def_property_enum_items(prop, fill_type_items);
+ RNA_def_property_enum_items(prop, rna_node_geometry_mesh_circle_fill_type_items);
RNA_def_property_ui_text(prop, "Fill Type", "");
RNA_def_property_update(prop, NC_NODE | NA_EDITED, "rna_Node_update");
}
+static void def_geo_mesh_cylinder(StructRNA *srna)
+{
+ PropertyRNA *prop;
+
+ RNA_def_struct_sdna_from(srna, "NodeGeometryMeshCylinder", "storage");
+
+ prop = RNA_def_property(srna, "fill_type", PROP_ENUM, PROP_NONE);
+ RNA_def_property_enum_items(prop, rna_node_geometry_mesh_circle_fill_type_items);
+ RNA_def_property_ui_text(prop, "Fill Type Top", "");
+ RNA_def_property_update(prop, NC_NODE | NA_EDITED, "rna_Node_update");
+
+ prop = RNA_def_property(srna, "fill_type", PROP_ENUM, PROP_NONE);
+ RNA_def_property_enum_items(prop, rna_node_geometry_mesh_circle_fill_type_items);
+ RNA_def_property_ui_text(prop, "Fill Type Bottom", "");
+ RNA_def_property_update(prop, NC_NODE | NA_EDITED, "rna_Node_update");
+}
+
/* -------------------------------------------------------------------------- */
static void rna_def_shader_node(BlenderRNA *brna)
@@ -10061,6 +10078,8 @@ static void rna_def_node_socket_standard_types(BlenderRNA *brna)
brna, "NodeSocketFloatAngle", "NodeSocketInterfaceFloatAngle", PROP_ANGLE);
rna_def_node_socket_float(
brna, "NodeSocketFloatTime", "NodeSocketInterfaceFloatTime", PROP_TIME);
+ rna_def_node_socket_float(
+ brna, "NodeSocketFloatDistance", "NodeSocketInterfaceFloatDistance", PROP_DISTANCE);
rna_def_node_socket_int(brna, "NodeSocketInt", "NodeSocketInterfaceInt", PROP_NONE);
rna_def_node_socket_int(
diff --git a/source/blender/nodes/CMakeLists.txt b/source/blender/nodes/CMakeLists.txt
index 4fe9c2cbc92..ac50e654a7e 100644
--- a/source/blender/nodes/CMakeLists.txt
+++ b/source/blender/nodes/CMakeLists.txt
@@ -162,6 +162,7 @@ set(SRC
geometry/nodes/node_geo_join_geometry.cc
geometry/nodes/node_geo_mesh_primitive_circle.cc
geometry/nodes/node_geo_mesh_primitive_cube.cc
+ geometry/nodes/node_geo_mesh_primitive_cylinder.cc
geometry/nodes/node_geo_mesh_primitive_uv_sphere.cc
geometry/nodes/node_geo_object_info.cc
geometry/nodes/node_geo_point_distribute.cc
diff --git a/source/blender/nodes/NOD_geometry.h b/source/blender/nodes/NOD_geometry.h
index 0a37218cf29..dca9ff6c8bb 100644
--- a/source/blender/nodes/NOD_geometry.h
+++ b/source/blender/nodes/NOD_geometry.h
@@ -44,6 +44,7 @@ void register_node_type_geo_is_viewport(void);
void register_node_type_geo_join_geometry(void);
void register_node_type_geo_mesh_primitive_circle(void);
void register_node_type_geo_mesh_primitive_cube(void);
+void register_node_type_geo_mesh_primitive_cylinder(void);
void register_node_type_geo_mesh_primitive_uv_sphere(void);
void register_node_type_geo_object_info(void);
void register_node_type_geo_point_distribute(void);
diff --git a/source/blender/nodes/NOD_static_types.h b/source/blender/nodes/NOD_static_types.h
index addcbd24beb..b61eb1b5c03 100644
--- a/source/blender/nodes/NOD_static_types.h
+++ b/source/blender/nodes/NOD_static_types.h
@@ -302,6 +302,7 @@ DefNode(GeometryNode, GEO_NODE_SUBDIVISION_SURFACE_SIMPLE, 0, "SUBDIVISION_SURFA
DefNode(GeometryNode, GEO_NODE_MESH_PRIMITIVE_CUBE, 0, "MESH_PRIMITIVE_CUBE", MeshCube, "Cube", "")
DefNode(GeometryNode, GEO_NODE_MESH_PRIMITIVE_CIRCLE, def_geo_mesh_circle, "MESH_PRIMITIVE_CIRCLE", MeshCircle, "Circle", "")
DefNode(GeometryNode, GEO_NODE_MESH_PRIMITIVE_UV_SPHERE, 0, "MESH_PRIMITIVE_UV_SPHERE", MeshUVSphere, "UV Sphere", "")
+DefNode(GeometryNode, GEO_NODE_MESH_PRIMITIVE_CYLINDER, def_geo_mesh_cylinder, "MESH_PRIMITIVE_CYLINDER", MeshCylinder, "Cylinder", "")
/* undefine macros */
#undef DefNode
diff --git a/source/blender/nodes/geometry/nodes/node_geo_mesh_primitive_circle.cc b/source/blender/nodes/geometry/nodes/node_geo_mesh_primitive_circle.cc
index 53194332ad9..7f7df5da7e8 100644
--- a/source/blender/nodes/geometry/nodes/node_geo_mesh_primitive_circle.cc
+++ b/source/blender/nodes/geometry/nodes/node_geo_mesh_primitive_circle.cc
@@ -95,7 +95,7 @@ static int corner_total(const GeometryNodeMeshCircleFillType fill_type, const in
case GEO_NODE_MESH_CIRCLE_FILL_NGON:
return verts_num;
case GEO_NODE_MESH_CIRCLE_FILL_TRIANGLE_FAN:
- return 3 * verts_num;
+ return verts_num * 3;
}
BLI_assert(false);
return 0;
diff --git a/source/blender/nodes/geometry/nodes/node_geo_mesh_primitive_circle.cc b/source/blender/nodes/geometry/nodes/node_geo_mesh_primitive_cylinder.cc
similarity index 52%
copy from source/blender/nodes/geometry/nodes/node_geo_mesh_primitive_circle.cc
copy to source/blender/nodes/geometry/nodes/node_geo_mesh_primitive_cylinder.cc
index 53194332ad9..2c8d1ce75c7 100644
--- a/source/blender/nodes/geometry/nodes/node_geo_mesh_primitive_circle.cc
+++ b/source/blender/nodes/geometry/nodes/node_geo_mesh_primitive_cylinder.cc
@@ -27,32 +27,33 @@
#include "node_geometry_util.hh"
-static bNodeSocketTemplate geo_node_mesh_primitive_circle_in[] = {
+static bNodeSocketTemplate geo_node_mesh_primitive_cylinder_in[] = {
{SOCK_INT, N_("Vertices"), 32, 0.0f, 0.0f, 0.0f, 3, 4096},
{SOCK_FLOAT, N_("Radius"), 1.0f, 0.0f, 0.0f, 0.0f, 0.0f, FLT_MAX, PROP_DISTANCE},
+ {SOCK_FLOAT, N_("Depth"), 1.0f, 0.0f, 0.0f, 0.0f, 0.0f, FLT_MAX, PROP_DISTANCE},
{SOCK_VECTOR, N_("Location"), 0.0f, 0.0f, 0.0f, 1.0f, -FLT_MAX, FLT_MAX, PROP_TRANSLATION},
{SOCK_VECTOR, N_("Rotation"), 0.0f, 0.0f, 0.0f, 1.0f, -FLT_MAX, FLT_MAX, PROP_EULER},
{-1, ""},
};
-static bNodeSocketTemplate geo_node_mesh_primitive_circle_out[] = {
+static bNodeSocketTemplate geo_node_mesh_primitive_cylinder_out[] = {
{SOCK_GEOMETRY, N_("Geometry")},
{-1, ""},
};
-static void geo_node_mesh_primitive_circle_layout(uiLayout *layout,
- bContext *UNUSED(C),
- PointerRNA *ptr)
+static void geo_node_mesh_primitive_cylinder_layout(uiLayout *layout,
+ bContext *UNUSED(C),
+ PointerRNA *ptr)
{
uiLayoutSetPropSep(layout, true);
uiLayoutSetPropDecorate(layout, false);
uiItemR(layout, ptr, "fill_type", 0, nullptr, ICON_NONE);
}
-static void geo_node_mesh_primitive_circle_init(bNodeTree *UNUSED(ntree), bNode *node)
+static void geo_node_mesh_primitive_cylinder_init(bNodeTree *UNUSED(ntree), bNo
@@ Diff output truncated at 10240 characters. @@
More information about the Bf-blender-cvs
mailing list