sdf_mesh.cpp
Go to the documentation of this file.
1 
27 #include <boost/serialization/access.hpp>
28 #include <boost/serialization/base_object.hpp>
29 #include <boost/serialization/nvp.hpp>
31 
35 
36 namespace tesseract_geometry
37 {
38 SDFMesh::SDFMesh(std::shared_ptr<const tesseract_common::VectorVector3d> vertices,
39  std::shared_ptr<const Eigen::VectorXi> triangles,
40  std::shared_ptr<const tesseract_common::Resource> resource,
41  const Eigen::Vector3d& scale,
42  std::shared_ptr<const tesseract_common::VectorVector3d> normals,
43  std::shared_ptr<const tesseract_common::VectorVector4d> vertex_colors,
44  std::shared_ptr<MeshMaterial> mesh_material,
45  std::shared_ptr<const std::vector<std::shared_ptr<MeshTexture>>> mesh_textures)
46  : PolygonMesh(std::move(vertices),
47  std::move(triangles),
48  std::move(resource),
49  scale,
50  std::move(normals),
51  std::move(vertex_colors),
52  std::move(mesh_material),
53  std::move(mesh_textures),
55 {
56  if ((static_cast<long>(getFaceCount()) * 4) != getFaces()->size())
57  std::throw_with_nested(std::runtime_error("Mesh is not triangular")); // LCOV_EXCL_LINE
58 }
59 
60 SDFMesh::SDFMesh(std::shared_ptr<const tesseract_common::VectorVector3d> vertices,
61  std::shared_ptr<const Eigen::VectorXi> triangles,
62  int triangle_count,
63  std::shared_ptr<const tesseract_common::Resource> resource,
64  const Eigen::Vector3d& scale,
65  std::shared_ptr<const tesseract_common::VectorVector3d> normals,
66  std::shared_ptr<const tesseract_common::VectorVector4d> vertex_colors,
67  std::shared_ptr<MeshMaterial> mesh_material,
68  std::shared_ptr<const std::vector<std::shared_ptr<MeshTexture>>> mesh_textures)
69  : PolygonMesh(std::move(vertices),
70  std::move(triangles),
71  triangle_count,
72  std::move(resource),
73  scale,
74  std::move(normals),
75  std::move(vertex_colors),
76  std::move(mesh_material),
77  std::move(mesh_textures),
79 {
80  if ((static_cast<long>(getFaceCount()) * 4) != getFaces()->size())
81  std::throw_with_nested(std::runtime_error("Mesh is not triangular")); // LCOV_EXCL_LINE
82 }
83 
85 {
86  return std::make_shared<SDFMesh>(getVertices(), getFaces(), getFaceCount(), getResource(), getScale());
87 }
88 
89 bool SDFMesh::operator==(const SDFMesh& rhs) const
90 {
91  bool equal = true;
92  equal &= Geometry::operator==(rhs);
93  return equal;
94 }
95 bool SDFMesh::operator!=(const SDFMesh& rhs) const { return !operator==(rhs); }
96 
97 template <class Archive>
98 void SDFMesh::serialize(Archive& ar, const unsigned int /*version*/)
99 {
100  ar& BOOST_SERIALIZATION_BASE_OBJECT_NVP(PolygonMesh);
101 }
102 } // namespace tesseract_geometry
103 
106 BOOST_CLASS_EXPORT_IMPLEMENT(tesseract_geometry::SDFMesh)
tesseract_geometry::Geometry::Ptr
std::shared_ptr< Geometry > Ptr
Definition: geometry.h:72
sdf_mesh.h
Tesseract SDF Mesh Geometry.
tesseract_geometry::GeometryType
GeometryType
Definition: geometry.h:48
resource_locator.h
tesseract_geometry::SDFMesh::serialize
void serialize(Archive &ar, const unsigned int version)
Definition: sdf_mesh.cpp:98
TESSERACT_SERIALIZE_ARCHIVES_INSTANTIATE
#define TESSERACT_SERIALIZE_ARCHIVES_INSTANTIATE(Type)
TESSERACT_COMMON_IGNORE_WARNINGS_PUSH
#define TESSERACT_COMMON_IGNORE_WARNINGS_PUSH
tesseract_geometry::PolygonMesh::getFaces
const std::shared_ptr< const Eigen::VectorXi > & getFaces() const
Get Polygon mesh faces.
Definition: polygon_mesh.cpp:98
tesseract_geometry::SDFMesh::SDFMesh
SDFMesh()=default
tesseract_geometry::SDFMesh::operator==
bool operator==(const SDFMesh &rhs) const
Definition: sdf_mesh.cpp:89
tesseract_geometry::SDFMesh::operator!=
bool operator!=(const SDFMesh &rhs) const
Definition: sdf_mesh.cpp:95
tesseract_geometry::SDFMesh
Definition: sdf_mesh.h:45
tesseract_geometry::Geometry::operator==
bool operator==(const Geometry &rhs) const
Definition: geometry.cpp:48
mesh_material.h
Tesseract Mesh Material read from a mesh file.
serialization.h
tesseract_geometry::PolygonMesh::getFaceCount
int getFaceCount() const
Get face count.
Definition: polygon_mesh.cpp:102
tesseract_geometry::PolygonMesh::getScale
const Eigen::Vector3d & getScale() const
Get the scale applied to file used to generate the mesh.
Definition: polygon_mesh.cpp:106
tesseract_geometry::GeometryType::SDF_MESH
@ SDF_MESH
tesseract_geometry::PolygonMesh
Definition: polygon_mesh.h:51
TESSERACT_COMMON_IGNORE_WARNINGS_POP
#define TESSERACT_COMMON_IGNORE_WARNINGS_POP
tesseract_geometry
Definition: fwd.h:31
tesseract_geometry::SDFMesh::clone
Geometry::Ptr clone() const override final
Create a copy of this shape.
Definition: sdf_mesh.cpp:84
macros.h
tesseract_geometry::PolygonMesh::getVertices
const std::shared_ptr< const tesseract_common::VectorVector3d > & getVertices() const
Get Polygon mesh vertices.
Definition: polygon_mesh.cpp:96
tesseract_geometry::PolygonMesh::getResource
std::shared_ptr< const tesseract_common::Resource > getResource() const
Get the path to file used to generate the mesh.
Definition: polygon_mesh.cpp:104


tesseract_geometry
Author(s): Levi Armstrong
autogenerated on Sun May 18 2025 03:01:46