[Bf-blender-cvs] [d3e76745a69] refactor-mesh-corners-generic: Various fixes for tests

Hans Goudey noreply at git.blender.org
Wed Dec 7 23:23:30 CET 2022


Commit: d3e76745a69472c21182d95840795cdea1031583
Author: Hans Goudey
Date:   Wed Dec 7 10:25:33 2022 -0600
Branches: refactor-mesh-corners-generic
https://developer.blender.org/rBd3e76745a69472c21182d95840795cdea1031583

Various fixes for tests

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

M	source/blender/blenkernel/intern/mesh.cc
M	source/blender/blenkernel/intern/mesh_convert.cc
M	source/blender/blenkernel/intern/mesh_merge.c
M	source/blender/blenkernel/intern/mesh_normals.cc
M	source/blender/blenkernel/intern/mesh_runtime.cc
M	source/blender/blenkernel/intern/mesh_validate.cc
M	source/blender/editors/transform/transform_snap_object.cc
M	source/blender/geometry/intern/realize_instances.cc
M	source/blender/nodes/geometry/nodes/node_geo_delete_geometry.cc
M	source/blender/nodes/geometry/nodes/node_geo_dual_mesh.cc
M	source/blender/nodes/geometry/nodes/node_geo_duplicate_elements.cc
M	source/blender/nodes/geometry/nodes/node_geo_extrude_mesh.cc
M	source/blender/nodes/geometry/nodes/node_geo_flip_faces.cc

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

diff --git a/source/blender/blenkernel/intern/mesh.cc b/source/blender/blenkernel/intern/mesh.cc
index 34b05a87b59..9f3b476ac79 100644
--- a/source/blender/blenkernel/intern/mesh.cc
+++ b/source/blender/blenkernel/intern/mesh.cc
@@ -538,8 +538,6 @@ static int customdata_compare(
           int ptot = m1->totpoly;
 
           for (j = 0; j < ptot; j++, p1++, p2++) {
-            int k;
-
             if (p1->totloop != p2->totloop) {
               return MESHCMP_POLYMISMATCH;
             }
diff --git a/source/blender/blenkernel/intern/mesh_convert.cc b/source/blender/blenkernel/intern/mesh_convert.cc
index a114a3ef2be..9aec764f880 100644
--- a/source/blender/blenkernel/intern/mesh_convert.cc
+++ b/source/blender/blenkernel/intern/mesh_convert.cc
@@ -126,7 +126,7 @@ static void make_edges_mdata_extend(Mesh &mesh)
 
     for (i = 0, mp = polys.data(); i < mesh.totpoly; i++, mp++) {
       int corner_i = mp->loopstart;
-      int corner_i_prev = mp->loopstart;
+      int corner_i_prev = mp->loopstart + (mp->totloop - 1);
       int j;
       for (j = 0; j < mp->totloop; j++, corner_i++) {
         /* lookup hashed edge index */
diff --git a/source/blender/blenkernel/intern/mesh_merge.c b/source/blender/blenkernel/intern/mesh_merge.c
index e3571767604..df0698c4bf4 100644
--- a/source/blender/blenkernel/intern/mesh_merge.c
+++ b/source/blender/blenkernel/intern/mesh_merge.c
@@ -598,7 +598,7 @@ Mesh *BKE_mesh_merge_verts(Mesh *mesh,
   /* Update loop indices and copy customdata. */
   for (i = 0; i < result->totloop; i++) {
     /* Edge remapping has already be done in main loop handling part above. */
-    BLI_assert(newv[new_ml->v] != -1);
+    BLI_assert(newv[corner_verts[i]] != -1);
     corner_verts[i] = newv[corner_verts[i]];
 
     CustomData_copy_data(&mesh->ldata, &result->ldata, oldl[i], i, 1);
diff --git a/source/blender/blenkernel/intern/mesh_normals.cc b/source/blender/blenkernel/intern/mesh_normals.cc
index 55873978f59..7546bc67bfd 100644
--- a/source/blender/blenkernel/intern/mesh_normals.cc
+++ b/source/blender/blenkernel/intern/mesh_normals.cc
@@ -1250,7 +1250,6 @@ static void loop_split_worker_do(LoopSplitTaskDataCommon *common_data,
                                  LoopSplitTaskData *data,
                                  BLI_Stack *edge_vectors)
 {
-  BLI_assert(data->ml_curr);
   if (data->e2l_prev) {
     BLI_assert((edge_vectors == nullptr) || BLI_stack_is_empty(edge_vectors));
     data->edge_vectors = edge_vectors;
diff --git a/source/blender/blenkernel/intern/mesh_runtime.cc b/source/blender/blenkernel/intern/mesh_runtime.cc
index 6f8a1c5adf6..a488d260df2 100644
--- a/source/blender/blenkernel/intern/mesh_runtime.cc
+++ b/source/blender/blenkernel/intern/mesh_runtime.cc
@@ -325,8 +325,6 @@ bool BKE_mesh_runtime_is_valid(Mesh *me_eval)
   MutableSpan<float3> positions = me_eval->positions_for_write();
   MutableSpan<MEdge> edges = me_eval->edges_for_write();
   MutableSpan<MPoly> polys = me_eval->polys_for_write();
-  MutableSpan<int> corner_verts = me_eval->corner_verts_for_write();
-  MutableSpan<int> corner_edges = me_eval->corner_edges_for_write();
 
   is_valid &= BKE_mesh_validate_all_customdata(
       &me_eval->vdata,
@@ -350,8 +348,9 @@ bool BKE_mesh_runtime_is_valid(Mesh *me_eval)
       edges.size(),
       static_cast<MFace *>(CustomData_get_layer(&me_eval->fdata, CD_MFACE)),
       me_eval->totface,
-      loops.data(),
-      loops.size(),
+      me_eval->corner_verts_for_write().data(),
+      me_eval->corner_edges_for_write().data(),
+      me_eval->totloop,
       polys.data(),
       polys.size(),
       me_eval->deform_verts_for_write().data(),
diff --git a/source/blender/blenkernel/intern/mesh_validate.cc b/source/blender/blenkernel/intern/mesh_validate.cc
index 32ac5051de3..b139b39aa99 100644
--- a/source/blender/blenkernel/intern/mesh_validate.cc
+++ b/source/blender/blenkernel/intern/mesh_validate.cc
@@ -615,11 +615,11 @@ bool BKE_mesh_validate_arrays(Mesh *mesh,
           const int vert_i = corner_verts[sp->loopstart + j];
           if (vert_i >= totvert) {
             /* Invalid vert idx. */
-            PRINT_ERR("\tLoop %d has invalid vert reference (%d)", sp->loopstart + j, vert_i);
+            PRINT_ERR("\tLoop %u has invalid vert reference (%d)", sp->loopstart + j, vert_i);
             sp->invalid = true;
           }
           else if (BLI_BITMAP_TEST(vert_tag, vert_i)) {
-            PRINT_ERR("\tPoly %d has duplicated vert reference at corner (%d)", i, j);
+            PRINT_ERR("\tPoly %u has duplicated vert reference at corner (%u)", i, j);
             sp->invalid = true;
           }
           else {
@@ -634,7 +634,7 @@ bool BKE_mesh_validate_arrays(Mesh *mesh,
 
         /* Test all poly's loops. */
         for (j = 0; j < mp->totloop; j++) {
-          const int corner_i = sp->loopstart = j;
+          const int corner_i = sp->loopstart + j;
           const int vert_i = corner_verts[corner_i];
           const int edge_i = corner_edges[corner_i];
           v1 = vert_i;
@@ -656,13 +656,13 @@ bool BKE_mesh_validate_arrays(Mesh *mesh,
               int prev_e = edge_i;
               corner_edges[corner_i] = POINTER_AS_INT(BLI_edgehash_lookup(edge_hash, v1, v2));
               fix_flag.loops_edge = true;
-              PRINT_ERR("\tLoop %u has invalid edge reference (%d), fixed using edge %d",
+              PRINT_ERR("\tLoop %d has invalid edge reference (%d), fixed using edge %d",
                         corner_i,
                         prev_e,
                         corner_edges[corner_i]);
             }
             else {
-              PRINT_ERR("\tLoop %u has invalid edge reference (%u)", corner_i, edge_i);
+              PRINT_ERR("\tLoop %d has invalid edge reference (%d)", corner_i, edge_i);
               sp->invalid = true;
             }
           }
diff --git a/source/blender/editors/transform/transform_snap_object.cc b/source/blender/editors/transform/transform_snap_object.cc
index f4d7526d419..762ba23c23e 100644
--- a/source/blender/editors/transform/transform_snap_object.cc
+++ b/source/blender/editors/transform/transform_snap_object.cc
@@ -254,7 +254,7 @@ static void snap_object_data_mesh_get(SnapObjectContext *sctx,
   BKE_bvhtree_from_mesh_get(
       r_treedata, me_eval, use_hide ? BVHTREE_FROM_LOOPTRI_NO_HIDDEN : BVHTREE_FROM_LOOPTRI, 4);
 
-  BLI_assert(r_treedata->positions == positions.data());
+  BLI_assert(reinterpret_cast<const float3 *>(r_treedata->positions) == positions.data());
   BLI_assert(r_treedata->corner_verts == corner_verts.data());
   BLI_assert(!polys.data() || r_treedata->looptri);
   BLI_assert(!r_treedata->tree || r_treedata->looptri);
diff --git a/source/blender/geometry/intern/realize_instances.cc b/source/blender/geometry/intern/realize_instances.cc
index 9ee8b1f4955..159bd8c562a 100644
--- a/source/blender/geometry/intern/realize_instances.cc
+++ b/source/blender/geometry/intern/realize_instances.cc
@@ -833,6 +833,8 @@ static OrderedAttributes gather_generic_mesh_attributes_to_propagate(
   in_geometry_set.gather_attributes_for_propagation(
       src_component_types, GEO_COMPONENT_TYPE_MESH, true, attributes_to_propagate);
   attributes_to_propagate.remove("position");
+  attributes_to_propagate.remove(".corner_vert");
+  attributes_to_propagate.remove(".corner_edge");
   attributes_to_propagate.remove("normal");
   attributes_to_propagate.remove("shade_smooth");
   r_create_id = attributes_to_propagate.pop_try("id").has_value();
@@ -953,7 +955,7 @@ static void execute_realize_mesh_task(const RealizeInstancesOptions &options,
   const IndexRange dst_vert_range(task.start_indices.vertex, src_positions.size());
   const IndexRange dst_edge_range(task.start_indices.edge, src_edges.size());
   const IndexRange dst_poly_range(task.start_indices.poly, src_polys.size());
-  const IndexRange dst_corner_range(task.start_indices.corner, all_dst_corner_verts.size());
+  const IndexRange dst_corner_range(task.start_indices.corner, src_corner_verts.size());
 
   MutableSpan<float3> dst_positions = all_dst_positions.slice(dst_vert_range);
   MutableSpan<MEdge> dst_edges = all_dst_edges.slice(dst_edge_range);
diff --git a/source/blender/nodes/geometry/nodes/node_geo_delete_geometry.cc b/source/blender/nodes/geometry/nodes/node_geo_delete_geometry.cc
index 6fc20eee2aa..22756bd5eaf 100644
--- a/source/blender/nodes/geometry/nodes/node_geo_delete_geometry.cc
+++ b/source/blender/nodes/geometry/nodes/node_geo_delete_geometry.cc
@@ -215,7 +215,7 @@ static void copy_masked_polys_to_new_mesh(const Mesh &src_mesh,
 
     MPoly &mp_dst = dst_polys[i_dst];
     mp_dst = mp_src;
-    mp_dst.totloop = new_loop_starts[i_dst];
+    mp_dst.loopstart = new_loop_starts[i_dst];
     MutableSpan<int> dst_poly_verts = dst_corner_verts.slice(mp_dst.loopstart, size);
     MutableSpan<int> dst_poly_edges = dst_corner_edges.slice(mp_dst.loopstart, size);
 
@@ -249,7 +249,7 @@ static void copy_masked_polys_to_new_mesh(const Mesh &src_mesh,
 
     MPoly &mp_dst = dst_polys[i_dst];
     mp_dst = mp_src;
-    mp_dst.totloop = new_loop_starts[i_dst];
+    mp_dst.loopstart = new_loop_starts[i_dst];
     MutableSpan<int> dst_poly_verts = dst_corner_verts.slice(mp_dst.loopstart, size);
     MutableSpan<int> dst_poly_edges = dst_corner_edges.slice(mp_dst.loopstart, size);
 
@@ -281,7 +281,7 @@ static void copy_masked_polys_to_new_mesh(const Mesh &src_mesh,
 
     MPoly &mp_dst = dst_polys[i_dst];
     mp_dst = mp_src;
-    mp_dst.totloop = new_loop_starts[i_dst];
+    mp_dst.loopstart = new_loop_starts[i_dst];
     MutableSpan<int> dst_poly_verts = dst_corner_verts.slice(mp_dst.loopstart, size);
     MutableSpan<int> dst_poly_edges = dst_corner_edges.slice(mp_dst.loopstart, size);
 
@@ -821,6 +821,8 @@ static void do_mesh_separation(GeometrySet &geometry_set,
   Map<AttributeIDRef, AttributeKind> attributes;
   geometry_set.gather_attributes_for_propagation(
       {GEO_COMPONENT_TYPE_MESH}, GEO_COMPONENT_TYPE_MESH, false, attributes);
+  attributes.remove(".corner_vert");
+  attributes.remove(".corner_edge");
 
   switch (mode) {
     case GEO_NODE_DELETE_GEOMETRY_MODE_ALL: {
diff --git a/source/blender/nodes/geometry/nodes/node_geo_dual_mesh.cc b/source/blender/no

@@ Diff output truncated at 10240 characters. @@



More information about the Bf-blender-cvs mailing list