[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