[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