[Bf-blender-cvs] [90999a06948] master: Fix T101208: Missing original index handling in extrude node

Hans Goudey noreply at git.blender.org
Tue Sep 20 21:36:27 CEST 2022


Commit: 90999a06948a50ad49621baf2c5ed57dc695ead3
Author: Hans Goudey
Date:   Tue Sep 20 14:36:20 2022 -0500
Branches: master
https://developer.blender.org/rB90999a06948a50ad49621baf2c5ed57dc695ead3

Fix T101208: Missing original index handling in extrude node

The extrude node must set the original indices for new faces to "None"
in edge mode as well. Same for new edges in vertex mode.

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

M	source/blender/nodes/geometry/nodes/node_geo_extrude_mesh.cc

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

diff --git a/source/blender/nodes/geometry/nodes/node_geo_extrude_mesh.cc b/source/blender/nodes/geometry/nodes/node_geo_extrude_mesh.cc
index c7f4b78946d..dc5b778b4bd 100644
--- a/source/blender/nodes/geometry/nodes/node_geo_extrude_mesh.cc
+++ b/source/blender/nodes/geometry/nodes/node_geo_extrude_mesh.cc
@@ -132,6 +132,9 @@ static CustomData &get_customdata(Mesh &mesh, const eAttrDomain domain)
   }
 }
 
+/**
+ * \note The result may be an empty span.
+ */
 static MutableSpan<int> get_orig_index_layer(Mesh &mesh, const eAttrDomain domain)
 {
   const bke::AttributeAccessor attributes = mesh.attributes();
@@ -296,6 +299,9 @@ static void extrude_mesh_vertices(Mesh &mesh,
   MutableSpan<int> vert_orig_indices = get_orig_index_layer(mesh, ATTR_DOMAIN_POINT);
   vert_orig_indices.slice(new_vert_range).fill(ORIGINDEX_NONE);
 
+  MutableSpan<int> new_edge_orig_indices = get_orig_index_layer(mesh, ATTR_DOMAIN_EDGE);
+  new_edge_orig_indices.slice(new_edge_range).fill(ORIGINDEX_NONE);
+
   if (attribute_outputs.top_id) {
     save_selection_as_attribute(
         mesh, attribute_outputs.top_id.get(), ATTR_DOMAIN_POINT, new_vert_range);
@@ -631,6 +637,9 @@ static void extrude_mesh_edges(Mesh &mesh,
   edge_orig_indices.slice(connect_edge_range).fill(ORIGINDEX_NONE);
   edge_orig_indices.slice(duplicate_edge_range).fill(ORIGINDEX_NONE);
 
+  MutableSpan<int> poly_orig_indices = get_orig_index_layer(mesh, ATTR_DOMAIN_FACE);
+  poly_orig_indices.slice(new_poly_range).fill(ORIGINDEX_NONE);
+
   if (attribute_outputs.top_id) {
     save_selection_as_attribute(
         mesh, attribute_outputs.top_id.get(), ATTR_DOMAIN_EDGE, duplicate_edge_range);



More information about the Bf-blender-cvs mailing list