[Bf-blender-cvs] [28732a6ee1d] soc-2021-adaptive-cloth: adaptive_cloth: AdaptiveMesh: setting EdgeData flags after split
ishbosamiya
noreply at git.blender.org
Mon Aug 30 09:15:10 CEST 2021
Commit: 28732a6ee1d96bc62518053eea398ea47f625837
Author: ishbosamiya
Date: Sun Aug 29 20:22:00 2021 +0530
Branches: soc-2021-adaptive-cloth
https://developer.blender.org/rB28732a6ee1d96bc62518053eea398ea47f625837
adaptive_cloth: AdaptiveMesh: setting EdgeData flags after split
Edges that had EDGE_BETWEEN_SEWING_EDGES when split, the new edges
should also be EDGE_BETWEEN_SEWING_EDGES.
===================================================================
M source/blender/blenkernel/intern/cloth_remesh.cc
===================================================================
diff --git a/source/blender/blenkernel/intern/cloth_remesh.cc b/source/blender/blenkernel/intern/cloth_remesh.cc
index d88ec1076cd..2f041cb3691 100644
--- a/source/blender/blenkernel/intern/cloth_remesh.cc
+++ b/source/blender/blenkernel/intern/cloth_remesh.cc
@@ -754,6 +754,29 @@ class AdaptiveMesh : public Mesh<NodeData<END>, VertData, EdgeData, internal::Em
const auto added_verts = mesh_diff.get_added_verts();
if (sewing_enabled) {
+ /* Edges that were split and had `EDGE_BETWEEN_SEWING_EDGES`,
+ * the new edges formed from the edge split should also have
+ * `EDGE_BETWEEN_SEWING_EDGES` */
+ {
+ blender::Vector<VertIndex> verts_with_edge_between_sewing_edges;
+ for (const auto &deleted_edge : mesh_diff.get_deleted_edges()) {
+ const auto &edge_verts = deleted_edge.get_checked_verts();
+ verts_with_edge_between_sewing_edges.append_non_duplicates(std::get<0>(edge_verts));
+ verts_with_edge_between_sewing_edges.append_non_duplicates(std::get<1>(edge_verts));
+ }
+
+ for (const auto &added_edge_index : mesh_diff.get_added_edges()) {
+ auto &added_edge = this->get_checked_edge(added_edge_index);
+ for (const auto &vert_with_edge_between_sewing_edges :
+ verts_with_edge_between_sewing_edges) {
+ if (added_edge.has_vert(vert_with_edge_between_sewing_edges)) {
+ auto &added_edge_flags = added_edge.get_checked_extra_data_mut().get_flags_mut();
+ added_edge_flags |= EDGE_BETWEEN_SEWING_EDGES;
+ }
+ }
+ }
+ }
+
BLI_assert(mesh_diff.get_added_nodes().size() == 1);
std::cout << "mesh_diff.get_added_verts().size(): " << mesh_diff.get_added_verts().size()
<< std::endl;
More information about the Bf-blender-cvs
mailing list