[Bf-blender-cvs] [bbff1aaed1a] refactor-mesh-sharp-face-generic: Keep existing behavior in curve to mesh node
Hans Goudey
noreply at git.blender.org
Thu Jan 5 21:48:20 CET 2023
Commit: bbff1aaed1a2515c617ba2bf0020728a5085ce1e
Author: Hans Goudey
Date: Thu Jan 5 15:48:12 2023 -0500
Branches: refactor-mesh-sharp-face-generic
https://developer.blender.org/rBbbff1aaed1a2515c617ba2bf0020728a5085ce1e
Keep existing behavior in curve to mesh node
===================================================================
M source/blender/blenkernel/intern/curve_to_mesh_convert.cc
===================================================================
diff --git a/source/blender/blenkernel/intern/curve_to_mesh_convert.cc b/source/blender/blenkernel/intern/curve_to_mesh_convert.cc
index e3b94b8ec95..7f464090d96 100644
--- a/source/blender/blenkernel/intern/curve_to_mesh_convert.cc
+++ b/source/blender/blenkernel/intern/curve_to_mesh_convert.cc
@@ -647,6 +647,7 @@ Mesh *curve_to_mesh_sweep(const CurvesGeometry &main,
MutableSpan<MEdge> edges = mesh->edges_for_write();
MutableSpan<MPoly> polys = mesh->polys_for_write();
MutableSpan<MLoop> loops = mesh->loops_for_write();
+ MutableAttributeAccessor mesh_attributes = mesh->attributes_for_write();
foreach_curve_combination(curves_info, offsets, [&](const CombinationInfo &info) {
fill_mesh_topology(info.vert_range.start(),
@@ -663,6 +664,23 @@ Mesh *curve_to_mesh_sweep(const CurvesGeometry &main,
polys);
});
+ if (fill_caps) {
+ /* TODO: This is used to keep the tests passing after refactoring mesh shade smooth flags. It
+ * can be removed if the tests are updated and the final shading results will be the same. */
+ SpanAttributeWriter<bool> sharp_faces = mesh_attributes.lookup_or_add_for_write_span<bool>(
+ "sharp_face", ATTR_DOMAIN_FACE);
+ foreach_curve_combination(curves_info, offsets, [&](const CombinationInfo &info) {
+ const bool has_caps = fill_caps && !info.main_cyclic && info.profile_cyclic;
+ if (has_caps) {
+ const int poly_num = info.main_segment_num * info.profile_segment_num;
+ const int cap_poly_offset = info.poly_range.start() + poly_num;
+ sharp_faces.span[cap_poly_offset] = true;
+ sharp_faces.span[cap_poly_offset + 1] = true;
+ }
+ });
+ sharp_faces.finish();
+ }
+
const Span<float3> main_positions = main.evaluated_positions();
const Span<float3> tangents = main.evaluated_tangents();
const Span<float3> normals = main.evaluated_normals();
@@ -714,8 +732,6 @@ Mesh *curve_to_mesh_sweep(const CurvesGeometry &main,
Set<AttributeIDRef> main_attributes_set;
- MutableAttributeAccessor mesh_attributes = mesh->attributes_for_write();
-
main_attributes.for_all([&](const AttributeIDRef &id, const AttributeMetaData meta_data) {
if (!should_add_attribute_to_mesh(
main_attributes, mesh_attributes, id, meta_data, propagation_info)) {
More information about the Bf-blender-cvs
mailing list