Open3D (C++ API)
Public Member Functions | Static Public Member Functions | Data Fields | Protected Member Functions
open3d::geometry::TetraMesh Class Reference

Tetra mesh contains vertices and tetrahedra represented by the indices to the vertices. More...

#include <TetraMesh.h>

Inheritance diagram for open3d::geometry::TetraMesh:
open3d::geometry::MeshBase open3d::geometry::Geometry3D open3d::geometry::Geometry

Public Member Functions

 TetraMesh ()
 Default Constructor. More...
 
 TetraMesh (const std::vector< Eigen::Vector3d > &vertices, const std::vector< Eigen::Vector4i, utility::Vector4i_allocator > &tetras)
 Parameterized Constructor. More...
 
 ~TetraMesh () override
 
TetraMeshClear () override
 Clear all elements in the geometry. More...
 
TetraMeshoperator+= (const TetraMesh &mesh)
 
TetraMesh operator+ (const TetraMesh &mesh) const
 
TetraMeshRemoveDuplicatedVertices ()
 Function that removes duplicated verties, i.e., vertices that have identical coordinates. More...
 
TetraMeshRemoveDuplicatedTetras ()
 Function that removes duplicated tetrahedra, i.e., removes tetrahedra that reference the same four vertices, independent of their order. More...
 
TetraMeshRemoveUnreferencedVertices ()
 This function removes vertices from the tetra mesh that are not referenced in any tetrahedron of the mesh. More...
 
TetraMeshRemoveDegenerateTetras ()
 Function that removes degenerate tetrahedra, i.e., tetrahedra that reference a single vertex multiple times in a single tetrahedron. They are usually the product of removing duplicated vertices. More...
 
bool HasTetras () const
 Returns true if the mesh contains tetras. More...
 
std::shared_ptr< TriangleMeshExtractTriangleMesh (const std::vector< double > &values, double level)
 Function to extract a triangle mesh of the specified iso-surface at a level This method applies primal contouring and generates triangles for each tetrahedron. More...
 
- Public Member Functions inherited from open3d::geometry::MeshBase
 MeshBase ()
 Default Constructor. More...
 
 ~MeshBase () override
 
virtual bool IsEmpty () const override
 Returns true iff the geometry is empty. More...
 
virtual Eigen::Vector3d GetMinBound () const override
 Returns min bounds for geometry coordinates. More...
 
virtual Eigen::Vector3d GetMaxBound () const override
 Returns max bounds for geometry coordinates. More...
 
virtual Eigen::Vector3d GetCenter () const override
 Returns the center of the geometry coordinates. More...
 
virtual AxisAlignedBoundingBox GetAxisAlignedBoundingBox () const override
 Returns an axis-aligned bounding box of the geometry. More...
 
virtual OrientedBoundingBox GetOrientedBoundingBox () const override
 Returns an oriented bounding box of the geometry. More...
 
virtual MeshBaseTransform (const Eigen::Matrix4d &transformation) override
 Apply transformation (4x4 matrix) to the geometry coordinates. More...
 
virtual MeshBaseTranslate (const Eigen::Vector3d &translation, bool relative=true) override
 Apply translation to the geometry coordinates. More...
 
virtual MeshBaseScale (const double scale, const Eigen::Vector3d &center) override
 Apply scaling to the geometry coordinates. Given a scaling factor $s$, and center $c$, a given point $p$ is transformed according to $s (p - c) + c$. More...
 
virtual MeshBaseRotate (const Eigen::Matrix3d &R, const Eigen::Vector3d &center) override
 Apply rotation to the geometry coordinates and normals. Given a rotation matrix $R$, and center $c$, a given point $p$ is transformed according to $R (p - c) + c$. More...
 
MeshBaseoperator+= (const MeshBase &mesh)
 
MeshBase operator+ (const MeshBase &mesh) const
 
bool HasVertices () const
 Returns True if the mesh contains vertices. More...
 
bool HasVertexNormals () const
 Returns True if the mesh contains vertex normals. More...
 
bool HasVertexColors () const
 Returns True if the mesh contains vertex colors. More...
 
MeshBaseNormalizeNormals ()
 Normalize vertex normals to length 1. More...
 
MeshBasePaintUniformColor (const Eigen::Vector3d &color)
 Assigns each vertex in the TriangleMesh the same color. More...
 
std::tuple< std::shared_ptr< TriangleMesh >, std::vector< size_t > > ComputeConvexHull () const
 Function that computes the convex hull of the triangle mesh using qhull. More...
 
- Public Member Functions inherited from open3d::geometry::Geometry3D
 ~Geometry3D () override
 
- Public Member Functions inherited from open3d::geometry::Geometry
virtual ~Geometry ()
 
GeometryType GetGeometryType () const
 Returns one of registered geometry types. More...
 
int Dimension () const
 Returns whether the geometry is 2D or 3D. More...
 
std::string GetName () const
 
void SetName (const std::string &name)
 

Static Public Member Functions

static std::tuple< std::shared_ptr< TetraMesh >, std::vector< size_t > > CreateFromPointCloud (const PointCloud &point_cloud)
 Function that creates a tetrahedral mesh (TetraMeshFactory.cpp). from a point cloud. More...
 
- Static Public Member Functions inherited from open3d::geometry::Geometry3D
static Eigen::Matrix3d GetRotationMatrixFromXYZ (const Eigen::Vector3d &rotation)
 Get Rotation Matrix from XYZ RotationType. More...
 
static Eigen::Matrix3d GetRotationMatrixFromYZX (const Eigen::Vector3d &rotation)
 Get Rotation Matrix from YZX RotationType. More...
 
static Eigen::Matrix3d GetRotationMatrixFromZXY (const Eigen::Vector3d &rotation)
 Get Rotation Matrix from ZXY RotationType. More...
 
static Eigen::Matrix3d GetRotationMatrixFromXZY (const Eigen::Vector3d &rotation)
 Get Rotation Matrix from XZY RotationType. More...
 
static Eigen::Matrix3d GetRotationMatrixFromZYX (const Eigen::Vector3d &rotation)
 Get Rotation Matrix from ZYX RotationType. More...
 
static Eigen::Matrix3d GetRotationMatrixFromYXZ (const Eigen::Vector3d &rotation)
 Get Rotation Matrix from YXZ RotationType. More...
 
static Eigen::Matrix3d GetRotationMatrixFromAxisAngle (const Eigen::Vector3d &rotation)
 Get Rotation Matrix from AxisAngle RotationType. More...
 
static Eigen::Matrix3d GetRotationMatrixFromQuaternion (const Eigen::Vector4d &rotation)
 Get Rotation Matrix from Quaternion. More...
 

Data Fields

std::vector< Eigen::Vector4i, utility::Vector4i_allocatortetras_
 List of tetras denoted by the index of points forming the tetra. More...
 
- Data Fields inherited from open3d::geometry::MeshBase
std::vector< Eigen::Vector3d > vertices_
 Vertex coordinates. More...
 
std::vector< Eigen::Vector3d > vertex_normals_
 Vertex normals. More...
 
std::vector< Eigen::Vector3d > vertex_colors_
 RGB colors of vertices. More...
 

Protected Member Functions

 TetraMesh (Geometry::GeometryType type)
 
- Protected Member Functions inherited from open3d::geometry::MeshBase
 MeshBase (Geometry::GeometryType type)
 
 MeshBase (Geometry::GeometryType type, const std::vector< Eigen::Vector3d > &vertices)
 
- Protected Member Functions inherited from open3d::geometry::Geometry3D
 Geometry3D (GeometryType type)
 Parameterized Constructor. More...
 
Eigen::Vector3d ComputeMinBound (const std::vector< Eigen::Vector3d > &points) const
 Compute min bound of a list points. More...
 
Eigen::Vector3d ComputeMaxBound (const std::vector< Eigen::Vector3d > &points) const
 Compute max bound of a list points. More...
 
Eigen::Vector3d ComputeCenter (const std::vector< Eigen::Vector3d > &points) const
 Computer center of a list of points. More...
 
void ResizeAndPaintUniformColor (std::vector< Eigen::Vector3d > &colors, const size_t size, const Eigen::Vector3d &color) const
 Resizes the colors vector and paints a uniform color. More...
 
void TransformPoints (const Eigen::Matrix4d &transformation, std::vector< Eigen::Vector3d > &points) const
 Transforms all points with the transformation matrix. More...
 
void TransformNormals (const Eigen::Matrix4d &transformation, std::vector< Eigen::Vector3d > &normals) const
 Transforms the normals with the transformation matrix. More...
 
void TranslatePoints (const Eigen::Vector3d &translation, std::vector< Eigen::Vector3d > &points, bool relative) const
 Apply translation to the geometry coordinates. More...
 
void ScalePoints (const double scale, std::vector< Eigen::Vector3d > &points, const Eigen::Vector3d &center) const
 Scale the coordinates of all points by the scaling factor scale. More...
 
void RotatePoints (const Eigen::Matrix3d &R, std::vector< Eigen::Vector3d > &points, const Eigen::Vector3d &center) const
 Rotate all points with the rotation matrix R. More...
 
void RotateNormals (const Eigen::Matrix3d &R, std::vector< Eigen::Vector3d > &normals) const
 Rotate all normals with the rotation matrix R. More...
 
- Protected Member Functions inherited from open3d::geometry::Geometry
 Geometry (GeometryType type, int dimension)
 Parameterized Constructor. More...
 

Additional Inherited Members

- Public Types inherited from open3d::geometry::MeshBase
enum  SimplificationContraction { SimplificationContraction::Average, SimplificationContraction::Quadric }
 Indicates the method that is used for mesh simplification if multiple vertices are combined to a single one. More...
 
enum  FilterScope { FilterScope::All, FilterScope::Color, FilterScope::Normal, FilterScope::Vertex }
 Indicates the scope of filter operations. More...
 
enum  DeformAsRigidAsPossibleEnergy { DeformAsRigidAsPossibleEnergy::Spokes, DeformAsRigidAsPossibleEnergy::Smoothed }
 
- Public Types inherited from open3d::geometry::Geometry
enum  GeometryType {
  GeometryType::Unspecified = 0, GeometryType::PointCloud = 1, GeometryType::VoxelGrid = 2, GeometryType::Octree = 3,
  GeometryType::LineSet = 4, GeometryType::MeshBase = 5, GeometryType::TriangleMesh = 6, GeometryType::HalfEdgeTriangleMesh = 7,
  GeometryType::Image = 8, GeometryType::RGBDImage = 9, GeometryType::TetraMesh = 10, GeometryType::OrientedBoundingBox = 11,
  GeometryType::AxisAlignedBoundingBox = 12
}
 Specifies possible geometry types. More...
 

Detailed Description

Tetra mesh contains vertices and tetrahedra represented by the indices to the vertices.

Constructor & Destructor Documentation

◆ TetraMesh() [1/3]

open3d::geometry::TetraMesh::TetraMesh ( )
inline

Default Constructor.

◆ TetraMesh() [2/3]

open3d::geometry::TetraMesh::TetraMesh ( const std::vector< Eigen::Vector3d > &  vertices,
const std::vector< Eigen::Vector4i, utility::Vector4i_allocator > &  tetras 
)
inline

Parameterized Constructor.

Parameters
verticesVertex coordinates.
tetrasList of tetras denoted by the index of points forming the tetra.

◆ ~TetraMesh()

open3d::geometry::TetraMesh::~TetraMesh ( )
inlineoverride

◆ TetraMesh() [3/3]

open3d::geometry::TetraMesh::TetraMesh ( Geometry::GeometryType  type)
inlineprotected

Member Function Documentation

◆ Clear()

TetraMesh & open3d::geometry::TetraMesh::Clear ( )
overridevirtual

Clear all elements in the geometry.

Reimplemented from open3d::geometry::MeshBase.

◆ CreateFromPointCloud()

std::tuple< std::shared_ptr< TetraMesh >, std::vector< size_t > > open3d::geometry::TetraMesh::CreateFromPointCloud ( const PointCloud point_cloud)
static

Function that creates a tetrahedral mesh (TetraMeshFactory.cpp). from a point cloud.

The method creates the Delaunay triangulation using the implementation from Qhull.

◆ ExtractTriangleMesh()

std::shared_ptr< TriangleMesh > open3d::geometry::TetraMesh::ExtractTriangleMesh ( const std::vector< double > &  values,
double  level 
)

Function to extract a triangle mesh of the specified iso-surface at a level This method applies primal contouring and generates triangles for each tetrahedron.

Parameters
levelspecifies the level.
valuesspecifies values per-vertex.

◆ HasTetras()

bool open3d::geometry::TetraMesh::HasTetras ( ) const
inline

Returns true if the mesh contains tetras.

◆ operator+()

TetraMesh open3d::geometry::TetraMesh::operator+ ( const TetraMesh mesh) const

◆ operator+=()

TetraMesh & open3d::geometry::TetraMesh::operator+= ( const TetraMesh mesh)

◆ RemoveDegenerateTetras()

TetraMesh & open3d::geometry::TetraMesh::RemoveDegenerateTetras ( )

Function that removes degenerate tetrahedra, i.e., tetrahedra that reference a single vertex multiple times in a single tetrahedron. They are usually the product of removing duplicated vertices.

◆ RemoveDuplicatedTetras()

TetraMesh & open3d::geometry::TetraMesh::RemoveDuplicatedTetras ( )

Function that removes duplicated tetrahedra, i.e., removes tetrahedra that reference the same four vertices, independent of their order.

◆ RemoveDuplicatedVertices()

TetraMesh & open3d::geometry::TetraMesh::RemoveDuplicatedVertices ( )

Function that removes duplicated verties, i.e., vertices that have identical coordinates.

◆ RemoveUnreferencedVertices()

TetraMesh & open3d::geometry::TetraMesh::RemoveUnreferencedVertices ( )

This function removes vertices from the tetra mesh that are not referenced in any tetrahedron of the mesh.

Field Documentation

◆ tetras_

std::vector<Eigen::Vector4i, utility::Vector4i_allocator> open3d::geometry::TetraMesh::tetras_

List of tetras denoted by the index of points forming the tetra.


The documentation for this class was generated from the following files: