[Bf-blender-cvs] [f4292febb40] refactor-mesh-sharp-edge-generic: Various fixes
Hans Goudey
noreply at git.blender.org
Wed Jan 4 04:34:34 CET 2023
Commit: f4292febb409751b8da18a144fed76357a2bb2d1
Author: Hans Goudey
Date: Tue Jan 3 20:28:02 2023 -0500
Branches: refactor-mesh-sharp-edge-generic
https://developer.blender.org/rBf4292febb409751b8da18a144fed76357a2bb2d1
Various fixes
===================================================================
M source/blender/blenkernel/intern/curve_to_mesh_convert.cc
M source/blender/blenkernel/intern/mesh_mapping.cc
M source/blender/blenkernel/intern/mesh_normals.cc
M source/blender/editors/mesh/mesh_data.cc
M source/blender/gpencil_modifiers/intern/lineart/lineart_cpu.cc
M source/blender/modifiers/intern/MOD_normal_edit.cc
M source/blender/modifiers/intern/MOD_weighted_normal.cc
===================================================================
diff --git a/source/blender/blenkernel/intern/curve_to_mesh_convert.cc b/source/blender/blenkernel/intern/curve_to_mesh_convert.cc
index 2d804da96d8..15b6af2ba39 100644
--- a/source/blender/blenkernel/intern/curve_to_mesh_convert.cc
+++ b/source/blender/blenkernel/intern/curve_to_mesh_convert.cc
@@ -631,10 +631,9 @@ static void write_sharp_bezier_edges(const CurvesInfo &curves_info,
handle_types_right.contains(BEZIER_HANDLE_VECTOR)) {
return;
}
- const VArray<int8_t> curve_types = profile.curve_types();
-
+ const VArray<int8_t> types = profile.curve_types();
foreach_curve_combination(curves_info, offsets, [&](const CombinationInfo &info) {
- if (curve_types[info.i_profile] == CURVE_TYPE_BEZIER) {
+ if (types[info.i_profile] == CURVE_TYPE_BEZIER) {
const IndexRange points = profile.points_for_curve(info.i_profile);
mark_bezier_vector_edges_sharp(points.size(),
info.main_segment_num,
diff --git a/source/blender/blenkernel/intern/mesh_mapping.cc b/source/blender/blenkernel/intern/mesh_mapping.cc
index 248cfd454ef..96cdb04aeb6 100644
--- a/source/blender/blenkernel/intern/mesh_mapping.cc
+++ b/source/blender/blenkernel/intern/mesh_mapping.cc
@@ -839,7 +839,7 @@ static void poly_edge_loop_islands_calc(const MEdge *medge,
static bool poly_is_island_boundary_smooth_cb(const MPoly *mp,
const MLoop * /*ml*/,
- const MEdge *me,
+ const MEdge * /*me*/,
const int edge_index,
const bool *sharp_edges,
const int edge_user_count,
diff --git a/source/blender/blenkernel/intern/mesh_normals.cc b/source/blender/blenkernel/intern/mesh_normals.cc
index 4316d65a797..9ac49a0c872 100644
--- a/source/blender/blenkernel/intern/mesh_normals.cc
+++ b/source/blender/blenkernel/intern/mesh_normals.cc
@@ -1612,7 +1612,7 @@ void BKE_mesh_normals_loop_split(const MVert *mverts,
loops,
loop_to_poly,
{reinterpret_cast<const float3 *>(poly_normals), numPolys},
- Span<bool>(sharp_edges, numEdges),
+ Span<bool>(sharp_edges, sharp_edges ? numEdges : 0),
check_angle,
split_angle,
edge_to_loops,
@@ -1974,9 +1974,7 @@ static void mesh_set_custom_normals(Mesh *mesh, float (*r_custom_nors)[3], const
MutableSpan<MEdge> edges = mesh->edges_for_write();
const Span<MPoly> polys = mesh->polys();
const Span<MLoop> loops = mesh->loops();
-
MutableAttributeAccessor attributes = mesh->attributes_for_write();
-
SpanAttributeWriter<bool> sharp_edges = attributes.lookup_or_add_for_write_span<bool>(
".sharp_edge", ATTR_DOMAIN_EDGE);
diff --git a/source/blender/editors/mesh/mesh_data.cc b/source/blender/editors/mesh/mesh_data.cc
index c09c75b4189..2036449f887 100644
--- a/source/blender/editors/mesh/mesh_data.cc
+++ b/source/blender/editors/mesh/mesh_data.cc
@@ -787,7 +787,6 @@ static int mesh_customdata_custom_splitnormals_add_exec(bContext *C, wmOperator
bke::MutableAttributeAccessor attributes = me->attributes_for_write();
bke::SpanAttributeWriter<bool> sharp_edges = attributes.lookup_or_add_for_write_span<bool>(
".sharp_edge", ATTR_DOMAIN_EDGE);
-
BKE_edges_sharp_from_angle_set(me->totedge,
loops.data(),
loops.size(),
@@ -796,7 +795,6 @@ static int mesh_customdata_custom_splitnormals_add_exec(bContext *C, wmOperator
polys.size(),
me->smoothresh,
sharp_edges.span.data());
-
sharp_edges.finish();
}
@@ -1460,7 +1458,6 @@ void ED_mesh_split_faces(Mesh *mesh)
const float split_angle = (mesh->flag & ME_AUTOSMOOTH) != 0 ? mesh->smoothresh : float(M_PI);
Array<bool> sharp_edges(mesh->totedge, false);
-
BKE_edges_sharp_from_angle_set(mesh->totedge,
loops.data(),
loops.size(),
diff --git a/source/blender/gpencil_modifiers/intern/lineart/lineart_cpu.cc b/source/blender/gpencil_modifiers/intern/lineart/lineart_cpu.cc
index 443f8885db1..ff6c6c74029 100644
--- a/source/blender/gpencil_modifiers/intern/lineart/lineart_cpu.cc
+++ b/source/blender/gpencil_modifiers/intern/lineart/lineart_cpu.cc
@@ -2070,6 +2070,10 @@ static void lineart_geometry_object_load(LineartObjectInfo *ob_info,
edge_feat_settings.userdata_chunk_size = sizeof(EdgeFeatReduceData);
edge_feat_settings.func_reduce = feat_data_sum_reduce;
+ const bke::AttributeAccessor attributes = me->attributes();
+ const VArray<bool> sharp_edges = attributes.lookup_or_default<bool>(
+ ".sharp_edge", ATTR_DOMAIN_EDGE, false);
+
EdgeFeatData edge_feat_data = {nullptr};
edge_feat_data.ld = la_data;
edge_feat_data.me = me;
@@ -2079,6 +2083,7 @@ static void lineart_geometry_object_load(LineartObjectInfo *ob_info,
edge_feat_data.edges = me->edges();
edge_feat_data.polys = me->polys();
edge_feat_data.loops = me->loops();
+ edge_feat_data.sharp_edges = sharp_edges;
edge_feat_data.edge_nabr = lineart_build_edge_neighbor(me, total_edges);
edge_feat_data.tri_array = la_tri_arr;
edge_feat_data.v_array = la_v_arr;
diff --git a/source/blender/modifiers/intern/MOD_normal_edit.cc b/source/blender/modifiers/intern/MOD_normal_edit.cc
index f30e98287ea..e411b3d99d4 100644
--- a/source/blender/modifiers/intern/MOD_normal_edit.cc
+++ b/source/blender/modifiers/intern/MOD_normal_edit.cc
@@ -548,9 +548,9 @@ static Mesh *normalEditModifier_do(NormalEditModifierData *enmd,
const float(*vert_normals)[3] = BKE_mesh_vertex_normals_ensure(result);
const float(*poly_normals)[3] = BKE_mesh_poly_normals_ensure(result);
- bke::SpanAttributeWriter<bool> sharp_edges =
- result->attributes_for_write().lookup_or_add_for_write_span<bool>(".sharp_edge",
- ATTR_DOMAIN_EDGE);
+ bke::MutableAttributeAccessor attributes = result->attributes_for_write();
+ bke::SpanAttributeWriter<bool> sharp_edges = attributes.lookup_or_add_for_write_span<bool>(
+ ".sharp_edge", ATTR_DOMAIN_EDGE);
short(*clnors)[2] = static_cast<short(*)[2]>(CustomData_get_layer(ldata, CD_CUSTOMLOOPNORMAL));
if (use_current_clnors) {
diff --git a/source/blender/modifiers/intern/MOD_weighted_normal.cc b/source/blender/modifiers/intern/MOD_weighted_normal.cc
index d6e5bc30ccd..5a2a329f506 100644
--- a/source/blender/modifiers/intern/MOD_weighted_normal.cc
+++ b/source/blender/modifiers/intern/MOD_weighted_normal.cc
@@ -76,7 +76,6 @@ struct WeightedNormalData {
const MVert *mvert;
const float (*vert_normals)[3];
const MEdge *medge;
-
bool *sharp_edges;
const MLoop *mloop;
@@ -632,9 +631,9 @@ static Mesh *modifyMesh(ModifierData *md, const ModifierEvalContext *ctx, Mesh *
const Array<int> loop_to_poly_map = bke::mesh_topology::build_loop_to_poly_map(result->polys(),
result->totloop);
- bke::SpanAttributeWriter<bool> sharp_edges =
- result->attributes_for_write().lookup_or_add_for_write_span<bool>(".sharp_edge",
- ATTR_DOMAIN_EDGE);
+ bke::MutableAttributeAccessor attributes = result->attributes_for_write();
+ bke::SpanAttributeWriter<bool> sharp_edges = attributes.lookup_or_add_for_write_span<bool>(
+ ".sharp_edge", ATTR_DOMAIN_EDGE);
WeightedNormalData wn_data{};
wn_data.verts_num = verts_num;
@@ -645,7 +644,6 @@ static Mesh *modifyMesh(ModifierData *md, const ModifierEvalContext *ctx, Mesh *
wn_data.mvert = mvert;
wn_data.vert_normals = BKE_mesh_vertex_normals_ensure(result);
wn_data.medge = medge;
-
wn_data.sharp_edges = sharp_edges.span.data();
wn_data.mloop = mloop;
More information about the Bf-blender-cvs
mailing list