[Bf-blender-cvs] [3157770deb3] soc-2021-adaptive-cloth: adaptive_cloth: Mesh: Write: support loose edges
ishbosamiya
noreply at git.blender.org
Mon Jul 5 17:33:40 CEST 2021
Commit: 3157770deb3c01fa1dfa5216e21151dd14edf862
Author: ishbosamiya
Date: Sat Jul 3 18:59:39 2021 +0530
Branches: soc-2021-adaptive-cloth
https://developer.blender.org/rB3157770deb3c01fa1dfa5216e21151dd14edf862
adaptive_cloth: Mesh: Write: support loose edges
===================================================================
M source/blender/blenkernel/BKE_cloth_remesh.hh
===================================================================
diff --git a/source/blender/blenkernel/BKE_cloth_remesh.hh b/source/blender/blenkernel/BKE_cloth_remesh.hh
index 017aa55b80e..328fd41f019 100644
--- a/source/blender/blenkernel/BKE_cloth_remesh.hh
+++ b/source/blender/blenkernel/BKE_cloth_remesh.hh
@@ -301,6 +301,11 @@ template<typename T> class Edge {
return false;
}
+ bool is_loose() const
+ {
+ return this->faces.size() == 0;
+ }
+
const auto &get_faces() const
{
return this->faces;
@@ -645,6 +650,16 @@ class MeshIO {
return std::numeric_limits<usize>::max();
}
+ friend std::ostream &operator<<(std::ostream &stream, const MeshIO &meshio)
+ {
+ stream << "positions: " << meshio.get_positions() << std::endl;
+ stream << "uvs: " << meshio.get_uvs() << std::endl;
+ stream << "normals: " << meshio.get_normals() << std::endl;
+ stream << "face_indices: " << meshio.get_face_indices() << std::endl;
+ stream << "line_indices: " << meshio.get_line_indices();
+ return stream;
+ }
+
private:
blender::Vector<std::string> tokenize(std::string const &str, const char delim)
{
@@ -1119,7 +1134,38 @@ template<typename END, typename EVD, typename EED, typename EFD> class Mesh {
face_indices.append(io_face);
}
- /* TODO(ish): add support for lines */
+ for (const auto &edge : this->edges) {
+ if (edge.is_loose()) {
+ blender::Vector<usize> line;
+
+ BLI_assert(edge.verts);
+
+ const auto &vert_indices = edge.verts.value();
+
+ const auto op_vert_1 = this->verts.get(std::get<0>(vert_indices));
+ const auto op_vert_2 = this->verts.get(std::get<1>(vert_indices));
+
+ BLI_assert(op_vert_1);
+ BLI_assert(op_vert_2);
+
+ const auto &vert_1 = op_vert_1.value().get();
+ const auto &vert_2 = op_vert_2.value().get();
+
+ const auto op_node_1_index = vert_1.node;
+ const auto op_node_2_index = vert_2.node;
+
+ BLI_assert(op_node_1_index);
+ BLI_assert(op_node_2_index);
+
+ const auto node_1_index = op_node_1_index.value();
+ const auto node_2_index = op_node_2_index.value();
+
+ line.append(std::get<0>(node_1_index.get_raw()));
+ line.append(std::get<0>(node_2_index.get_raw()));
+
+ line_indices.append(line);
+ }
+ }
MeshIO result;
result.set_positions(std::move(positions));
More information about the Bf-blender-cvs
mailing list