Differential D16893 Diff 59609 source/blender/nodes/geometry/nodes/node_geo_mesh_face_set_boundaries.cc
Changeset View
Changeset View
Standalone View
Standalone View
source/blender/nodes/geometry/nodes/node_geo_mesh_face_set_boundaries.cc
| Show First 20 Lines • Show All 41 Lines • ▼ Show 20 Lines | GVArray get_varray_for_context(const Mesh &mesh, | ||||
| face_evaluator.add(face_set_); | face_evaluator.add(face_set_); | ||||
| face_evaluator.evaluate(); | face_evaluator.evaluate(); | ||||
| const VArray<int> face_set = face_evaluator.get_evaluated<int>(0); | const VArray<int> face_set = face_evaluator.get_evaluated<int>(0); | ||||
| Array<bool> boundary(mesh.totedge, false); | Array<bool> boundary(mesh.totedge, false); | ||||
| Array<bool> edge_visited(mesh.totedge, false); | Array<bool> edge_visited(mesh.totedge, false); | ||||
| Array<int> edge_face_set(mesh.totedge, 0); | Array<int> edge_face_set(mesh.totedge, 0); | ||||
| const Span<MPoly> polys = mesh.polys(); | const Span<MPoly> polys = mesh.polys(); | ||||
| const Span<MLoop> loops = mesh.loops(); | const Span<int> corner_edges = mesh.corner_edges(); | ||||
| for (const int i : polys.index_range()) { | for (const int i : polys.index_range()) { | ||||
| const MPoly &poly = polys[i]; | const MPoly &poly = polys[i]; | ||||
| for (const MLoop &loop : loops.slice(poly.loopstart, poly.totloop)) { | for (const int edge : corner_edges.slice(poly.loopstart, poly.totloop)) { | ||||
| const int edge = loop.e; | |||||
| if (edge_visited[edge]) { | if (edge_visited[edge]) { | ||||
| if (edge_face_set[edge] != face_set[i]) { | if (edge_face_set[edge] != face_set[i]) { | ||||
| /* This edge is connected to two faces on different face sets. */ | /* This edge is connected to two faces on different face sets. */ | ||||
| boundary[edge] = true; | boundary[edge] = true; | ||||
| } | } | ||||
| } | } | ||||
| edge_visited[edge] = true; | edge_visited[edge] = true; | ||||
| edge_face_set[edge] = face_set[i]; | edge_face_set[edge] = face_set[i]; | ||||
| Show All 37 Lines | |||||