[Bf-blender-cvs] [f5f2e685f55] soc-2021-porting-modifiers-to-nodes_all: Merge branch 'soc-2021-porting-modifiers-to-nodes-extrude' into soc-2021-porting-modifiers-to-nodes
Fabian Schempp
noreply at git.blender.org
Thu Aug 19 22:07:11 CEST 2021
Commit: f5f2e685f5530ba5bc67b0f0285c0413afe3b8be
Author: Fabian Schempp
Date: Tue Aug 17 22:33:55 2021 +0200
Branches: soc-2021-porting-modifiers-to-nodes_all
https://developer.blender.org/rBf5f2e685f5530ba5bc67b0f0285c0413afe3b8be
Merge branch 'soc-2021-porting-modifiers-to-nodes-extrude' into soc-2021-porting-modifiers-to-nodes
# Conflicts:
# release/scripts/startup/nodeitems_builtins.py
# source/blender/blenkernel/BKE_node.h
# source/blender/bmesh/intern/bmesh_mesh.c
# source/blender/bmesh/intern/bmesh_mesh.h
===================================================================
===================================================================
diff --cc release/scripts/startup/nodeitems_builtins.py
index 7a1c2c0a859,1bc1a2555a5..5d0c9218e5a
--- a/release/scripts/startup/nodeitems_builtins.py
+++ b/release/scripts/startup/nodeitems_builtins.py
@@@ -553,9 -552,7 +553,10 @@@ geometry_node_categories =
NodeItem("GeometryNodeEdgeSplit"),
NodeItem("GeometryNodeSubdivisionSurface"),
NodeItem("GeometryNodeMeshSubdivide"),
+ NodeItem("GeometryNodeMeshInset"),
+ NodeItem("GeometryNodeCollapse"),
+ NodeItem("GeometryNodeUnsubdivide"),
+ NodeItem("GeometryNodeDissolve"),
]),
GeometryNodeCategory("GEO_PRIMITIVES_MESH", "Mesh Primitives", items=[
NodeItem("GeometryNodeMeshCircle"),
diff --cc source/blender/blenkernel/BKE_node.h
index 14448bd7c85,c9f5777109a..94a64694601
--- a/source/blender/blenkernel/BKE_node.h
+++ b/source/blender/blenkernel/BKE_node.h
@@@ -1476,10 -1476,8 +1476,11 @@@ int ntreeTexExecTree(struct bNodeTree *
#define GEO_NODE_CURVE_TRIM 1071
#define GEO_NODE_CURVE_SET_HANDLES 1072
#define GEO_NODE_CURVE_SPLINE_TYPE 1073
- #define GEO_NODE_CURVE_SELECT_HANDLES 1074
- #define GEO_NODE_COLLAPSE 1075
- #define GEO_NODE_UNSUBDIVIDE 1076
- #define GEO_NODE_DISSOLVE 1077
+ #define GEO_NODE_MESH_INSET 1074
-
++#define GEO_NODE_CURVE_SELECT_HANDLES 1075
++#define GEO_NODE_COLLAPSE 1076
++#define GEO_NODE_UNSUBDIVIDE 1077
++#define GEO_NODE_DISSOLVE 1078
/** \} */
/* -------------------------------------------------------------------- */
diff --cc source/blender/blenkernel/intern/node.cc
index 8a8fb7561b6,1c990c409f6..27c6a27cc3b
--- a/source/blender/blenkernel/intern/node.cc
+++ b/source/blender/blenkernel/intern/node.cc
@@@ -5157,8 -5155,8 +5157,9 @@@ static void registerGeometryNodes(
register_node_type_geo_curve_to_points();
register_node_type_geo_curve_trim();
register_node_type_geo_delete_geometry();
+ register_node_type_geo_dissolve();
register_node_type_geo_edge_split();
+ register_node_type_geo_mesh_inset();
register_node_type_geo_input_material();
register_node_type_geo_is_viewport();
register_node_type_geo_join_geometry();
diff --cc source/blender/bmesh/intern/bmesh_mesh.c
index ef89451a587,bf123ee23f2..5ab9e803467
--- a/source/blender/bmesh/intern/bmesh_mesh.c
+++ b/source/blender/bmesh/intern/bmesh_mesh.c
@@@ -1446,78 -1446,120 +1446,194 @@@ void BM_mesh_vert_coords_apply_with_mat
}
}
+ /**
+ * Use to select bmesh vertex data based on an array of bool.
+ */
+ void BM_select_vertices(BMesh *bm, const bool *mask)
+ {
+ BMIter iter;
+ BMVert *v;
+ int i;
+ BM_ITER_MESH_INDEX (v, &iter, bm, BM_VERTS_OF_MESH, i) {
+ BM_elem_flag_set(v, BM_ELEM_SELECT, mask[i]);
+ }
+ }
+
+ /**
+ * Use to select bmesh edge data based on an array of bool.
+ */
+ void BM_select_edges(BMesh *bm, const bool *mask)
+ {
+ BMIter iter;
+ BMEdge *e;
+ int i;
+ BM_ITER_MESH_INDEX (e, &iter, bm, BM_EDGES_OF_MESH, i) {
+ BM_elem_flag_set(e, BM_ELEM_SELECT, mask[i]);
+ }
+ }
+
+ /**
+ * Use to select bmesh face data based on an array of bool.
+ */
+ void BM_select_faces(BMesh *bm, const bool *mask)
+ {
+ BMIter iter;
+ BMFace *f;
+ int i = 0;
+ BM_ITER_MESH_INDEX (f, &iter, bm, BM_FACES_OF_MESH, i) {
+ BM_elem_flag_set(f, BM_ELEM_SELECT, mask[i]);
+ }
+ }
+
+ void BM_get_selected_faces(BMesh *bm, bool *selection)
+ {
+ BMIter iter;
+ BMFace *f;
+ int i = 0;
+ BM_ITER_MESH_INDEX (f, &iter, bm, BM_FACES_OF_MESH, i) {
+ selection[i] = BM_elem_flag_test(f, BM_ELEM_SELECT);
+ }
+ }
+
+ void BM_get_tagged_faces(BMesh *bm, bool *selection)
+ {
+ BMIter iter;
+ BMFace *f;
+ int i;
+ BM_ITER_MESH_INDEX (f, &iter, bm, BM_FACES_OF_MESH, i) {
+ selection[i] = BM_elem_flag_test(f, BM_ELEM_TAG);
+ }
+ }
+
+ void BM_tag_new_faces(BMesh *bm, BMOperator *b_mesh_operator)
+ {
+ BMIter iter;
+ BMFace *f;
+ BM_mesh_elem_hflag_disable_all(bm, BM_FACE, BM_ELEM_TAG, false);
+ BMO_ITER (f, &iter, b_mesh_operator->slots_out, "faces.out", BM_FACE) {
+ BM_elem_flag_enable(f, BM_ELEM_TAG);
+ }
+ }
+
+ void BM_tag_vertices(BMesh *bm, const bool *mask)
+ {
+ BMIter iter;
+ BMVert *v;
+ int i;
+ BM_ITER_MESH_INDEX (v, &iter, bm, BM_VERTS_OF_MESH, i) {
+ BM_elem_flag_set(v, BM_ELEM_TAG, mask[i]);
+ }
+ }
+
+ /**
+ * Use to temporary tag bmesh edge data based on an array of bool.
+ */
+ void BM_tag_edges(BMesh *bm, const bool *mask)
+ {
+ BMIter iter;
+ BMEdge *e;
+ int i;
+ BM_ITER_MESH_INDEX (e, &iter, bm, BM_EDGES_OF_MESH, i) {
+ BM_elem_flag_set(e, BM_ELEM_TAG, mask[i]);
+ }
+ }
+
+ /**
+ * Use to temporary tag bmesh face data based on an array of bool.
+ */
+ void BM_tag_faces(BMesh *bm, const bool *mask)
+ {
+ BMIter iter;
+ BMFace *f;
+ int i;
+ BM_ITER_MESH_INDEX (f, &iter, bm, BM_FACES_OF_MESH, i) {
+ BM_elem_flag_set(f, BM_ELEM_TAG, mask[i]);
+ }
+ }
+
+ void BM_untag_faces_by_tag(BMesh *bm, int tag)
+ {
+ BMIter iter;
+ BMFace *f;
+ int i;
+ BM_ITER_MESH_INDEX (f, &iter, bm, BM_FACES_OF_MESH, i) {
+ if (BM_elem_flag_test(f, tag)) {
+ BM_elem_flag_disable(f, BM_ELEM_TAG);
+ }
+ }
+ }
+/**
+ * Use to select bmesh vertex data based on an array of bool.
+ */
+void BM_select_vertices(BMesh *bm, const bool *mask)
+{
+ BMIter iter;
+ BMVert *v;
+ int i;
+ BM_ITER_MESH_INDEX (v, &iter, bm, BM_VERTS_OF_MESH, i) {
+ BM_elem_flag_set(v, BM_ELEM_SELECT, mask[i]);
+ }
+}
+
+/**
+ * Use to select bmesh edge data based on an array of bool.
+ */
+void BM_select_edges(BMesh *bm, const bool *mask)
+{
+ BMIter iter;
+ BMEdge *e;
+ int i;
+ BM_ITER_MESH_INDEX (e, &iter, bm, BM_EDGES_OF_MESH, i) {
+ BM_elem_flag_set(e, BM_ELEM_SELECT, mask[i]);
+ }
+}
+
+/**
+ * Use to select bmesh face data based on an array of bool.
+ */
+void BM_select_faces(BMesh *bm, const bool *mask)
+{
+ BMIter iter;
+ BMFace *f;
+ int i;
+ BM_ITER_MESH_INDEX (f, &iter, bm, BM_FACES_OF_MESH, i) {
+ BM_elem_flag_set(f, BM_ELEM_SELECT, mask[i]);
+ }
+}
+
+void BM_tag_vertices(BMesh *bm, const bool *mask)
+{
+ BMIter iter;
+ BMVert *v;
+ int i;
+ BM_ITER_MESH_INDEX (v, &iter, bm, BM_VERTS_OF_MESH, i) {
+ BM_elem_flag_set(v, BM_ELEM_TAG, mask[i]);
+ }
+}
+
+/**
+ * Use to temporary tag bmesh edge data based on an array of bool.
+ */
+void BM_tag_edges(BMesh *bm, const bool *mask)
+{
+ BMIter iter;
+ BMEdge *e;
+ int i;
+ BM_ITER_MESH_INDEX (e, &iter, bm, BM_EDGES_OF_MESH, i) {
+ BM_elem_flag_set(e, BM_ELEM_TAG, mask[i]);
+ }
+}
+
+/**
+ * Use to temporary tag bmesh face data based on an array of bool.
+ */
+void BM_tag_faces(BMesh *bm, const bool *mask)
+{
+ BMIter iter;
+ BMFace *f;
+ int i;
+ BM_ITER_MESH_INDEX (f, &iter, bm, BM_FACES_OF_MESH, i) {
+ BM_elem_flag_set(f, BM_ELEM_TAG, mask[i]);
+ }
+}
/** \} */
diff --cc source/blender/bmesh/intern/bmesh_mesh.h
index 5928da51d1e,f1cb8bf0880..674f46373c6
--- a/source/blender/bmesh/intern/bmesh_mesh.h
+++ b/source/blender/bmesh/intern/bmesh_mesh.h
@@@ -134,9 -134,14 +134,21 @@@ void BM_mesh_vert_coords_apply(BMesh *b
void BM_mesh_vert_coords_apply_with_mat4(BMesh *bm,
const float (*vert_coords)[3],
const float mat[4][4]);
+
+ void BM_select_vertices(BMesh *bm, const bool *mask);
+ void BM_select_edges(BMesh *bm, const bool *mask);
+ void BM_select_faces(BMesh *bm, const bool *mask);
+ void BM_get_selected_faces(BMesh *bm, bool *selection);
+ void BM_tag_vertices(BMesh *bm, const bool *mask);
+ void BM_tag_edges(BMesh *bm, const bool *mask);
+ void BM_tag_faces(BMesh *bm, const bool *mask);
+ void BM_untag_faces_by_tag(BMesh *bm, int tag);
+ void BM_get_tagged_faces(BMesh *bm, bool *selection);
+ void BM_tag_new_faces(BMesh *bm, BMOperator *b_mesh_operator);
++
+void BM_select_vertices(BMesh *bm, const bool *mask);
+void BM_select_edges(BMesh *bm, const bool *mask);
+void BM_select_faces(BMesh *bm, const bool *mask);
+void BM_tag_vertices(BMesh *bm, const bool *mask);
+void BM_tag_edges(BMesh *bm, const bool *mask);
+void BM_tag_faces(BMesh *bm, const bool *mask);
diff --cc source/blender/nodes/CMakeLists.txt
index d8041b646f2,10dcf942b91..f726bc79ada
--- a/source/blender/nodes/CMakeLists.txt
+++ b/source/blender/nodes/CMakeLists.txt
@@@ -184,8 -182,8 +184,9 @@@ set(SR
geometry/nodes/node_geo_curve_to_points.cc
geometry/nodes/node_geo_curve_trim.cc
geometry/nodes/node_geo_delete_geometry.cc
+ geometry/nodes/node_geo_dissolve.cc
geometry/nodes/node_geo_edge_split.cc
+ geometry/nodes/node_geo_mesh_inset.cc
geometry/nodes/node_geo_input_material.cc
geometry/nodes/node_geo_is_viewport.cc
geometry/nodes/node_geo_join_geometry.cc
diff --cc source/blender/nodes/NOD_geometry.h
index 176c3eac289,26f81efca72..78da83d98eb
--- a/source/blender/nodes/NOD_geometry.h
+++ b/source/blender/nodes/NOD_geometry.h
@@@ -70,8 -69,8 +70,9 @@@ void register_node_type_geo_curve_to_me
void register_node_type_geo_curve_to_points(void);
void register_node_type_geo_curve_trim(void);
void register_node_type_geo_delete_geometry(void);
+void register_node_type_geo_dissolve(void);
void register_node_type_geo_edge_split(void);
+ void register_node_type_geo_mesh_inset(void);
void register_node_type_geo_input_material(void);
void register_node_type_geo_is_viewport(void);
void register_node_type_geo_join_geometry(void);
diff --cc source/blender/nodes/NOD_static_types.h
index 40a0d60fc51,cc5be95208c..bcf08764438
--- a/source/blender/nodes/NOD_static_types.h
+++ b/source/blender/nodes/NOD_static_types.h
@@@ -311,8 -309,8 +311,9 @@@ DefNode(GeometryNode, GEO_NODE_CURVE_TO
DefNode(GeometryNode, GEO_NODE_CURVE_TO_POINTS, def_geo_curve_to_points, "CURVE_TO_POINTS", CurveToPoints, "Curve to Points", "")
DefNode(GeometryNode, GEO_NODE_CURVE_TRIM, def_geo_curve_trim, "CURVE_TRIM", CurveTrim, "Curve Trim", "")
DefNode(GeometryNode, GEO_NODE_DELETE_GEOMETRY, 0, "DELETE_GEOMETRY", DeleteGeometry, "Delete Geometry", "")
+DefNode(GeometryNode, GEO_NODE_DISSOLVE, def_geo_dissolve, "DISSOLVE", Dissolve, "Dissolve
@@ Diff output truncated at 10240 characters. @@
More information about the Bf-blender-cvs
mailing list