diff --git a/src/libslic3r/OpenVDBUtils.cpp b/src/libslic3r/OpenVDBUtils.cpp index e09fceed7a..41bb64c0a5 100644 --- a/src/libslic3r/OpenVDBUtils.cpp +++ b/src/libslic3r/OpenVDBUtils.cpp @@ -21,11 +21,11 @@ namespace Slic3r { class TriangleMeshDataAdapter { public: - const TriangleMesh &mesh; + const indexed_triangle_set &its; float voxel_scale; - size_t polygonCount() const { return mesh.its.indices.size(); } - size_t pointCount() const { return mesh.its.vertices.size(); } + size_t polygonCount() const { return its.indices.size(); } + size_t pointCount() const { return its.vertices.size(); } size_t vertexCount(size_t) const { return 3; } // Return position pos in local grid index space for polygon n and vertex v @@ -33,19 +33,19 @@ public: // And the voxel count per unit volume can be affected this way. void getIndexSpacePoint(size_t n, size_t v, openvdb::Vec3d& pos) const { - auto vidx = size_t(mesh.its.indices[n](Eigen::Index(v))); - Slic3r::Vec3d p = mesh.its.vertices[vidx].cast() * voxel_scale; + auto vidx = size_t(its.indices[n](Eigen::Index(v))); + Slic3r::Vec3d p = its.vertices[vidx].cast() * voxel_scale; pos = {p.x(), p.y(), p.z()}; } - TriangleMeshDataAdapter(const TriangleMesh &m, float voxel_sc = 1.f) - : mesh{m}, voxel_scale{voxel_sc} {}; + TriangleMeshDataAdapter(const indexed_triangle_set &m, float voxel_sc = 1.f) + : its{m}, voxel_scale{voxel_sc} {}; }; // TODO: Do I need to call initialize? Seems to work without it as well but the // docs say it should be called ones. It does a mutex lock-unlock sequence all // even if was called previously. -openvdb::FloatGrid::Ptr mesh_to_grid(const TriangleMesh & mesh, +openvdb::FloatGrid::Ptr mesh_to_grid(const indexed_triangle_set & mesh, const openvdb::math::Transform &tr, float voxel_scale, float exteriorBandWidth, diff --git a/src/libslic3r/OpenVDBUtils.hpp b/src/libslic3r/OpenVDBUtils.hpp index 5df816abb1..92530dc546 100644 --- a/src/libslic3r/OpenVDBUtils.hpp +++ b/src/libslic3r/OpenVDBUtils.hpp @@ -28,9 +28,9 @@ inline Vec4i to_vec4i(const openvdb::Vec4I &v) { return Vec4i{int(v[0]), int(v[1 // achievable through the Transform parameter. (TODO: or is it?) // The resulting grid will contain the voxel_scale in its metadata under the // "voxel_scale" key to be used in grid_to_mesh function. -openvdb::FloatGrid::Ptr mesh_to_grid(const TriangleMesh & mesh, +openvdb::FloatGrid::Ptr mesh_to_grid(const indexed_triangle_set & mesh, const openvdb::math::Transform &tr = {}, - float voxel_scale = 1.f, + float voxel_scale = 1.f, float exteriorBandWidth = 3.0f, float interiorBandWidth = 3.0f, int flags = 0); @@ -40,10 +40,10 @@ sla::Contour3D grid_to_contour3d(const openvdb::FloatGrid &grid, double adaptivity, bool relaxDisorientedTriangles = true); -TriangleMesh grid_to_mesh(const openvdb::FloatGrid &grid, - double isovalue = 0.0, - double adaptivity = 0.0, - bool relaxDisorientedTriangles = true); +indexed_triangle_set grid_to_mesh(const openvdb::FloatGrid &grid, + double isovalue = 0.0, + double adaptivity = 0.0, + bool relaxDisorientedTriangles = true); openvdb::FloatGrid::Ptr redistance_grid(const openvdb::FloatGrid &grid, double iso, diff --git a/src/libslic3r/SLA/Hollowing.cpp b/src/libslic3r/SLA/Hollowing.cpp index 5479a0afe5..151ceba11a 100644 --- a/src/libslic3r/SLA/Hollowing.cpp +++ b/src/libslic3r/SLA/Hollowing.cpp @@ -29,7 +29,7 @@ template> inline void _scale(S s, Contour3D &m) { for (auto &p : m.points) p *= s; } struct Interior { - TriangleMesh mesh; + indexed_triangle_set mesh; openvdb::FloatGrid::Ptr gridptr; mutable std::optional accessor; @@ -53,12 +53,12 @@ void InteriorDeleter::operator()(Interior *p) delete p; } -TriangleMesh &get_mesh(Interior &interior) +indexed_triangle_set &get_mesh(Interior &interior) { return interior.mesh; } -const TriangleMesh &get_mesh(const Interior &interior) +const indexed_triangle_set &get_mesh(const Interior &interior) { return interior.mesh; } diff --git a/src/libslic3r/SLA/Hollowing.hpp b/src/libslic3r/SLA/Hollowing.hpp index 41ef18f210..ffad480c34 100644 --- a/src/libslic3r/SLA/Hollowing.hpp +++ b/src/libslic3r/SLA/Hollowing.hpp @@ -27,8 +27,8 @@ struct Interior; struct InteriorDeleter { void operator()(Interior *p); }; using InteriorPtr = std::unique_ptr; -TriangleMesh & get_mesh(Interior &interior); -const TriangleMesh &get_mesh(const Interior &interior); +indexed_triangle_set & get_mesh(Interior &interior); +const indexed_triangle_set &get_mesh(const Interior &interior); struct DrainHole { @@ -99,7 +99,7 @@ void cut_drainholes(std::vector & obj_slices, const sla::DrainHoles & holes, std::function thr); -} -} +} // namespace sla +} // namespace Slic3r #endif // HOLLOWINGFILTER_H