Wildmeshing Toolkit
Loading...
Searching...
No Matches
get_vf.cpp
Go to the documentation of this file.
1#include <wmtk/TriMesh.hpp>
3
4#include <igl/remove_duplicate_vertices.h>
6
8std::tuple<std::pair<std::vector<double>, uint32_t>, std::pair<std::vector<uint32_t>, uint32_t>>
9get_vf(const TriMesh& trimesh)
10{
12
13 trimesh.serialize(writer);
14
15 std::vector<double> vV;
16 std::vector<uint32_t> vF;
17
18 MatrixX<int64_t> F_tmp;
19 MatrixX<double> V_tmp;
20 writer.get_FV_matrix(F_tmp);
21 writer.get_position_matrix(V_tmp);
22
23 // debug code
26
27 Eigen::VectorXi IV, _;
28 igl::remove_duplicate_vertices(V_tmp, F_tmp, 0, V, IV, _, F);
29
30 wmtk::logger().info("removed duplicated vertices {} -> {}", V_tmp.rows(), V.rows());
31
32 const uint32_t npts = V.rows();
33 const uint32_t ntri = F.rows();
34 vV.resize(V.size());
35 vF.resize(F.size());
36 Eigen::MatrixX<double>::MapType VT(vV.data(), 3, npts);
37 Eigen::MatrixX<uint32_t>::MapType FT(vF.data(), 3, ntri);
38 VT = V.transpose();
39 FT = F.transpose().cast<uint32_t>();
40 return std::make_tuple(std::make_pair(vV, npts), std::make_pair(vF, ntri));
41}
42} // namespace wmtk::components::internal
void serialize(MeshWriter &writer, const Mesh *local_root=nullptr) const
Definition Mesh.cpp:93
void get_position_matrix(MatrixX< double > &matrix)
void get_FV_matrix(MatrixX< int64_t > &matrix)
std::tuple< std::pair< std::vector< double >, uint32_t >, std::pair< std::vector< uint32_t >, uint32_t > > get_vf(const TriMesh &trimesh)
Definition get_vf.cpp:9
spdlog::logger & logger()
Retrieves the current logger.
Definition Logger.cpp:58
Eigen::Matrix< T, Eigen::Dynamic, Eigen::Dynamic > MatrixX
Definition Types.hpp:14