[Bf-blender-cvs] [6f39ef31ea1] soc-2021-adaptive-cloth: adaptive_cloth: implement and run static_remesh()

ishbosamiya noreply at git.blender.org
Mon Jul 26 08:17:40 CEST 2021


Commit: 6f39ef31ea1bc288ec01728b57296499a8c25db2
Author: ishbosamiya
Date:   Mon Jul 19 22:05:53 2021 +0530
Branches: soc-2021-adaptive-cloth
https://developer.blender.org/rB6f39ef31ea1bc288ec01728b57296499a8c25db2

adaptive_cloth: implement and run static_remesh()

Sets the same "sizing" for all the `Vert`s of the `AdaptiveMesh` and
then runs `mesh.split_edges()`.

TODO(ish): Add mesh.collapse_edges() within static_remesh()

===================================================================

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 b2e8b902f57..68ae65a1de8 100644
--- a/source/blender/blenkernel/intern/cloth_remesh.cc
+++ b/source/blender/blenkernel/intern/cloth_remesh.cc
@@ -71,7 +71,7 @@ class NodeData {
        * ClothVertex is also updated here. After adding the
        * interpolated value for the element (if needed), set the
        * correct sizeof(ClothVertex) in the assertion below. */
-      BLI_assert(sizeof(ClothVertex) == 125);
+      BLI_assert(sizeof(ClothVertex) == 168);
     }
 
     ClothVertex cn;
@@ -359,6 +359,28 @@ static void cloth_set_verts_from_adaptive_mesh(Cloth &cloth, const AdaptiveMesh
   }
 }
 
+static void static_remesh(AdaptiveMesh &mesh, const Sizing &sizing)
+{
+  /* Set sizing for all verts */
+  for (auto &vert : mesh.get_verts_mut()) {
+    auto &op_vert_data = vert.get_extra_data_mut();
+    if (op_vert_data) {
+      auto &vert_data = op_vert_data.value();
+      vert_data.set_sizing(sizing);
+    }
+    else {
+      vert.set_extra_data(VertData(sizing));
+    }
+  }
+
+  mesh.set_edge_sizes();
+
+  /* Split the edges */
+  mesh.split_edges();
+
+  /* Collapse the edges */
+}
+
 }  // namespace blender::bke::internal
 
 namespace blender::bke {
@@ -379,6 +401,15 @@ Mesh *BKE_cloth_remesh(Object *ob, ClothModifierData *clmd, Mesh *mesh)
     internal::cloth_delete_verts(*clmd->clothObject);
   }
 
+  /* Actual remeshing part */
+  {
+    float size_min = 0.1;
+    auto m = float2x2::identity();
+    m = m * (1.0 / size_min);
+    internal::Sizing vert_sizing(std::move(m));
+    internal::static_remesh(adaptive_mesh, vert_sizing);
+  }
+
   internal::cloth_set_verts_from_adaptive_mesh(*clmd->clothObject, adaptive_mesh);
 
   auto meshio_output = adaptive_mesh.write();



More information about the Bf-blender-cvs mailing list