40 const std::vector<basis::ElementBases> &bases,
41 const std::vector<basis::ElementBases> &geom_bases,
42 const std::vector<mesh::LocalBoundary> &total_local_boundary,
46 Eigen::MatrixXd &proxy_vertices,
47 Eigen::MatrixXi &proxy_faces,
48 std::vector<Eigen::Triplet<double>> &displacement_map,
60 const std::vector<basis::ElementBases> &bases,
61 const std::vector<basis::ElementBases> &geom_bases,
62 const std::vector<mesh::LocalBoundary> &total_local_boundary,
65 const Eigen::MatrixXd &proxy_vertices,
67 std::vector<Eigen::Triplet<double>> &displacement_map);
81 const std::string &mesh_filename,
82 const std::string &weights_filename,
83 const Eigen::VectorXi &in_node_to_node,
84 const json &transformation,
85 Eigen::MatrixXd &vertices,
86 Eigen::VectorXi &codim_vertices,
87 Eigen::MatrixXi &edges,
88 Eigen::MatrixXi &
faces,
89 std::vector<Eigen::Triplet<double>> &displacement_map_entries);
100 const std::string &mesh_filename,
101 const json &transformation,
102 Eigen::MatrixXd &vertices,
103 Eigen::VectorXi &codim_vertices,
104 Eigen::MatrixXi &edges,
105 Eigen::MatrixXi &
faces);
113 const std::string &weights_filename,
114 const Eigen::VectorXi &in_node_to_node,
115 const size_t num_proxy_vertices,
116 std::vector<Eigen::Triplet<double>> &displacement_map_entries);
std::vector< Eigen::VectorXi > faces
Read-only interface to a hierarchical collection of simulation resources.
void build_collision_proxy(const std::vector< basis::ElementBases > &bases, const std::vector< basis::ElementBases > &geom_bases, const std::vector< LocalBoundary > &total_local_boundary, const int n_bases, const int dim, const double max_edge_length, Eigen::MatrixXd &proxy_vertices, Eigen::MatrixXi &proxy_faces, std::vector< Eigen::Triplet< double > > &displacement_map_entries, const CollisionProxyTessellation tessellation)
void load_collision_proxy_displacement_map(const io::ResourceIO &resources, const std::string &weights_filename, const Eigen::VectorXi &in_node_to_node, const size_t num_proxy_vertices, std::vector< Eigen::Triplet< double > > &displacement_map_entries)
Load a collision proxy displacement map from a resource.
NLOHMANN_JSON_SERIALIZE_ENUM(CollisionProxyTessellation, {{CollisionProxyTessellation::REGULAR, "regular"}, {CollisionProxyTessellation::IRREGULAR, "irregular"}})
void load_collision_proxy_mesh(const io::ResourceIO &resources, const std::string &mesh_filename, const json &transformation, Eigen::MatrixXd &vertices, Eigen::VectorXi &codim_vertices, Eigen::MatrixXi &edges, Eigen::MatrixXi &faces)
Load a collision proxy mesh from a resource.
void load_collision_proxy(const io::ResourceIO &resources, const std::string &mesh_filename, const std::string &weights_filename, const Eigen::VectorXi &in_node_to_node, const json &transformation, Eigen::MatrixXd &vertices, Eigen::VectorXi &codim_vertices, Eigen::MatrixXi &edges, Eigen::MatrixXi &faces, std::vector< Eigen::Triplet< double > > &displacement_map_entries)
Load a collision proxy mesh and displacement map from resources.
void build_collision_proxy_displacement_map(const std::vector< basis::ElementBases > &bases, const std::vector< basis::ElementBases > &geom_bases, const std::vector< mesh::LocalBoundary > &total_local_boundary, const int n_bases, const int dim, const Eigen::MatrixXd &proxy_vertices, std::vector< Eigen::Triplet< double > > &displacement_map_entries)
Build a collision proxy displacement map for a given mesh and proxy mesh.
double max_edge_length(const Eigen::MatrixXd &V, const Eigen::MatrixXi &F)
Compute the maximum edge length of a triangle mesh (V, F)
CollisionProxyTessellation
@ IRREGULAR
Irregular tessellation of the mesh (requires POLYFEM_WITH_TRIANGLE)
@ REGULAR
Regular tessellation of the mesh.