Commit: 1bacd09abb60a4b3febb6d8c78c784ce86f50e3e Author: Hans Goudey Date: Mon Nov 28 13:49:55 2022 -0600 Branches: blender-v3.4-release https://developer.blender.org/rB1bacd09abb60a4b3febb6d8c78c784ce86f50e3e
Fix: Mishandled creases in Cycles adaptive subdivision Caused by a8a454287a27 which assumed it was possible to access the raw data of the edge creases layer. Also allow processing vertex creases even if there aren't any edge creases. =================================================================== M intern/cycles/blender/mesh.cpp =================================================================== diff --git a/intern/cycles/blender/mesh.cpp b/intern/cycles/blender/mesh.cpp index fbc470cada4..1887440bc67 100644 --- a/intern/cycles/blender/mesh.cpp +++ b/intern/cycles/blender/mesh.cpp @@ -1085,11 +1085,11 @@ static void create_subd_mesh(Scene *scene, const int edges_num = b_mesh.edges.length(); if (edges_num != 0 && b_mesh.edge_creases.length() > 0) { - size_t num_creases = 0; - const float *creases = static_cast<float *>(b_mesh.edge_creases[0].ptr.data); + BL::MeshEdgeCreaseLayer creases = b_mesh.edge_creases[0]; + size_t num_creases = 0; for (int i = 0; i < edges_num; i++) { - if (creases[i] != 0.0f) { + if (creases.data[i].value() != 0.0f) { num_creases++; } } @@ -1098,17 +1098,18 @@ static void create_subd_mesh(Scene *scene, const MEdge *edges = static_cast<MEdge *>(b_mesh.edges[0].ptr.data); for (int i = 0; i < edges_num; i++) { - if (creases[i] != 0.0f) { + const float crease = creases.data[i].value(); + if (crease != 0.0f) { const MEdge &b_edge = edges[i]; - mesh->add_edge_crease(b_edge.v1, b_edge.v2, creases[i]); + mesh->add_edge_crease(b_edge.v1, b_edge.v2, crease); } } + } - for (BL::MeshVertexCreaseLayer &c : b_mesh.vertex_creases) { - for (int i = 0; i < c.data.length(); ++i) { - if (c.data[i].value() != 0.0f) { - mesh->add_vertex_crease(i, c.data[i].value()); - } + for (BL::MeshVertexCreaseLayer &c : b_mesh.vertex_creases) { + for (int i = 0; i < c.data.length(); ++i) { + if (c.data[i].value() != 0.0f) { + mesh->add_vertex_crease(i, c.data[i].value()); } } } _______________________________________________ Bf-blender-cvs mailing list Bf-blender-cvs@blender.org List details, subscription details or unsubscribe: https://lists.blender.org/mailman/listinfo/bf-blender-cvs