OpenMesh
OpenMesh Namespace Reference

Contains all the mesh ingredients like the polygonal mesh, the triangle mesh, different mesh kernels and mesh traits. More...

Namespaces

 Attributes
 This namespace holds per item attributes like normal/color.
 
 Concepts
 Descriptions of the concepts used in OpenMesh.
 
 Decimater
 Software related to mesh decimation.
 
 GenProg
 Utilities for generative programming.
 
 IO
 This namespace contains functions for reading and writing polygonal meshes and a list of supported file formats.
 
 Iterators
 Contains all mesh iterators and circulators.
 
 Kernel_OSG
 In this namespace resides the OpenSG integration of OpenMesh.
 
 Utils
 Collection of little utility classes and helpers.
 
 VDPM
 Software related to view dependent progressive meshes.
 

Classes

class  ArrayKernel
 Mesh kernel using arrays for mesh item storage. More...
 
class  AttribKernelT
 The attribute kernel adds all standard properties to the kernel. More...
 
class  AutoPropertyHandleT
 
class  BaseHandle
 Base class for all handle types. More...
 
class  BaseKernel
 This class provides low-level property management like adding/removing properties and access to properties. More...
 
class  BaseMesh
 Base class for all meshes. More...
 
class  BaseProperty
 Abstract class defining the basic interface of a dynamic property. More...
 
struct  BasePropHandleT
 Base property handle. More...
 
struct  color_caster< osg::Color3f, osg::Color3ub >
 Helper struct. More...
 
struct  color_caster< osg::Color3ub, osg::Color3f >
 Helper struct. More...
 
class  DefaultTraits
 Base class for all traits. More...
 
struct  EdgeHandle
 Handle for a edge entity. More...
 
class  Endian
 Determine byte order of host system. More...
 
struct  EPropHandleT
 Handle representing an edge property. More...
 
struct  FaceHandle
 Handle for a face entity. More...
 
struct  FinalMeshItemsT
 Definition of the mesh entities (items). More...
 
struct  FPropHandleT
 Handle representing a face property. More...
 
struct  HalfedgeHandle
 Handle for a halfedge entity. More...
 
struct  HandleToPropHandle
 
struct  HandleToPropHandle< OpenMesh::EdgeHandle, T >
 
struct  HandleToPropHandle< OpenMesh::FaceHandle, T >
 
struct  HandleToPropHandle< OpenMesh::HalfedgeHandle, T >
 
struct  HandleToPropHandle< OpenMesh::VertexHandle, T >
 
struct  HandleToPropHandle< void, T >
 
struct  HPropHandleT
 Handle representing a halfedge property. More...
 
class  LoopSchemeMaskT
 implements cache for the weights of the original Loop scheme supported: More...
 
struct  MergeTraits
 Helper class to merge two mesh traits. More...
 
struct  MeshCast
 Cast a mesh with different but identical traits into each other. More...
 
struct  MeshCast< const LhsMeshT &, const RhsMeshT & >
 
struct  MeshCast< const LhsMeshT *, const RhsMeshT * >
 
struct  MeshCast< LhsMeshT &, RhsMeshT & >
 
struct  MeshCast< LhsMeshT *, RhsMeshT * >
 
struct  MPropHandleT
 Handle representing a mesh property. More...
 
class  NormalConeT
 /class NormalCone NormalCone.hh <ACG/Geometry/Types/NormalCone.hh> More...
 
class  PolyConnectivity
 Connectivity Class for polygonal meshes. More...
 
struct  PolyConnectivityTag
 Connectivity tag indicating that the tagged mesh has polygon connectivity. More...
 
struct  PolyMesh_ArrayKernel_GeneratorT
 Helper class to build a PolyMesh-type. More...
 
class  PolyMesh_ArrayKernelT
 Polygonal mesh based on the ArrayKernel. More...
 
class  PolyMeshT
 Base type for a polygonal mesh. More...
 
class  PropertyContainer
 A a container for properties. More...
 
class  PropertyManager
 This class is intended to manage the lifecycle of properties. More...
 
class  PropertyT
 Default property class for any type T. More...
 
class  PropertyT< bool >
 Property specialization for bool type. More...
 
class  PropertyT< std::string >
 Property specialization for std::string type. More...
 
class  RandomNumberGenerator
 Generate a random number between 0.0 and 1.0 with a guaranteed resolution ( Number of possible values ) More...
 
class  SingletonT
 A simple singleton template. More...
 
class  SmartTaggerET
 
class  SmartTaggerFT
 
class  SmartTaggerHT
 
class  SmartTaggerT
 Smart Tagger. More...
 
class  SmartTaggerVT
 
class  StripifierT
 This class decomposes a triangle mesh into several triangle strips. More...
 
class  TriConnectivity
 Connectivity Class for Triangle Meshes. More...
 
struct  TriConnectivityTag
 Connectivity tag indicating that the tagged mesh has triangle connectivity. More...
 
struct  TriMesh_ArrayKernel_GeneratorT
 Helper class to create a TriMesh-type based on ArrayKernelT. More...
 
class  TriMesh_ArrayKernelT
 Triangle mesh based on the ArrayKernel. More...
 
class  TriMeshT
 Base type for a triangle mesh. More...
 
class  VDPMSynthesizerViewerWidget
 
struct  vector_caster< osg::Vec3d, osg::Pnt3d >
 convert Pnt3d to Vec3d More...
 
struct  vector_caster< osg::Vec3f, osg::Pnt3f >
 convert Pnt3f to Vec3f More...
 
struct  vector_caster< osg::Vec4d, osg::Pnt4d >
 convert Pnt4d to Vec4d More...
 
struct  vector_caster< osg::Vec4f, osg::Pnt4f >
 convert Pnt4f to Vec4f More...
 
struct  vector_traits
 Helper class providing information about a vector type. More...
 
struct  vector_traits< Custom::Vec< DIM > >
 
struct  vector_traits< Eigen::Matrix< _Scalar, _Rows, _Cols, _Options > >
 
struct  vector_traits< osg::Color3f >
 Vector traits for OpenSG color type. More...
 
struct  vector_traits< osg::Color3ub >
 Vector traits for OpenSG color type. More...
 
struct  vector_traits< osg::Color4f >
 Vector traits for OpenSG color type. More...
 
struct  vector_traits< osg::Color4ub >
 Vector traits for OpenSG color type. More...
 
struct  vector_traits< osg::Pnt2d >
 Vector traits for OpenSG vector type. More...
 
struct  vector_traits< osg::Pnt2f >
 Vector traits for OpenSG vector type. More...
 
struct  vector_traits< osg::Pnt3d >
 Vector traits for OpenSG vector type. More...
 
struct  vector_traits< osg::Pnt3f >
 Vector traits for OpenSG vector type. More...
 
struct  vector_traits< osg::Pnt4d >
 Vector traits for OpenSG vector type. More...
 
struct  vector_traits< osg::Pnt4f >
 Vector traits for OpenSG vector type. More...
 
struct  vector_traits< osg::Vec2f >
 Vector traits for OpenSG vector type. More...
 
struct  vector_traits< osg::Vec3d >
 Vector traits for OpenSG vector type. More...
 
struct  vector_traits< osg::Vec3f >
 Vector traits for OpenSG vector type. More...
 
struct  vector_traits< osg::Vec4d >
 Vector traits for OpenSG vector type. More...
 
struct  vector_traits< osg::Vec4f >
 Vector traits for OpenSG vector type. More...
 
struct  vector_traits< osg::Vec4ub >
 Vector traits for OpenSG vector type. More...
 
class  VectorT
 
struct  VertexHandle
 Handle for a vertex entity. More...
 
struct  VPropHandleT
 Handle representing a vertex property. More...
 

Typedefs

typedef TriMesh_ArrayKernelT< VDPM::MeshTraitsVDPMMesh
 
typedef MeshViewerWidgetT< VDPMMeshMeshViewerWidget
 
typedef LoopSchemeMaskT< double, 100 > LoopSchemeMaskDouble
 
typedef SingletonT< LoopSchemeMaskDoubleLoopSchemeMaskDoubleSingleton
 
typedef VectorT< signed char, 1 > Vec1c
 1-byte signed vector
 
typedef VectorT< unsigned char, 1 > Vec1uc
 1-byte unsigned vector
 
typedef VectorT< signed short int, 1 > Vec1s
 1-short signed vector
 
typedef VectorT< unsigned short int, 1 > Vec1us
 1-short unsigned vector
 
typedef VectorT< signed int, 1 > Vec1i
 1-int signed vector
 
typedef VectorT< unsigned int, 1 > Vec1ui
 1-int unsigned vector
 
typedef VectorT< float, 1 > Vec1f
 1-float vector
 
typedef VectorT< double, 1 > Vec1d
 1-double vector
 
typedef VectorT< signed char, 2 > Vec2c
 2-byte signed vector
 
typedef VectorT< unsigned char, 2 > Vec2uc
 2-byte unsigned vector
 
typedef VectorT< signed short int, 2 > Vec2s
 2-short signed vector
 
typedef VectorT< unsigned short int, 2 > Vec2us
 2-short unsigned vector
 
typedef VectorT< signed int, 2 > Vec2i
 2-int signed vector
 
typedef VectorT< unsigned int, 2 > Vec2ui
 2-int unsigned vector
 
typedef VectorT< float, 2 > Vec2f
 2-float vector
 
typedef VectorT< double, 2 > Vec2d
 2-double vector
 
typedef VectorT< signed char, 3 > Vec3c
 3-byte signed vector
 
typedef VectorT< unsigned char, 3 > Vec3uc
 3-byte unsigned vector
 
typedef VectorT< signed short int, 3 > Vec3s
 3-short signed vector
 
typedef VectorT< unsigned short int, 3 > Vec3us
 3-short unsigned vector
 
typedef VectorT< signed int, 3 > Vec3i
 3-int signed vector
 
typedef VectorT< unsigned int, 3 > Vec3ui
 3-int unsigned vector
 
typedef VectorT< float, 3 > Vec3f
 3-float vector
 
typedef VectorT< double, 3 > Vec3d
 3-double vector
 
typedef VectorT< bool, 3 > Vec3b
 3-bool vector
 
typedef VectorT< signed char, 4 > Vec4c
 4-byte signed vector
 
typedef VectorT< unsigned char, 4 > Vec4uc
 4-byte unsigned vector
 
typedef VectorT< signed short int, 4 > Vec4s
 4-short signed vector
 
typedef VectorT< unsigned short int, 4 > Vec4us
 4-short unsigned vector
 
typedef VectorT< signed int, 4 > Vec4i
 4-int signed vector
 
typedef VectorT< unsigned int, 4 > Vec4ui
 4-int unsigned vector
 
typedef VectorT< float, 4 > Vec4f
 4-float vector
 
typedef VectorT< double, 4 > Vec4d
 4-double vector
 
typedef VectorT< signed char, 5 > Vec5c
 5-byte signed vector
 
typedef VectorT< unsigned char, 5 > Vec5uc
 5-byte unsigned vector
 
typedef VectorT< signed short int, 5 > Vec5s
 5-short signed vector
 
typedef VectorT< unsigned short int, 5 > Vec5us
 5-short unsigned vector
 
typedef VectorT< signed int, 5 > Vec5i
 5-int signed vector
 
typedef VectorT< unsigned int, 5 > Vec5ui
 5-int unsigned vector
 
typedef VectorT< float, 5 > Vec5f
 5-float vector
 
typedef VectorT< double, 5 > Vec5d
 5-double vector
 
typedef VectorT< signed char, 6 > Vec6c
 6-byte signed vector
 
typedef VectorT< unsigned char, 6 > Vec6uc
 6-byte unsigned vector
 
typedef VectorT< signed short int, 6 > Vec6s
 6-short signed vector
 
typedef VectorT< unsigned short int, 6 > Vec6us
 6-short unsigned vector
 
typedef VectorT< signed int, 6 > Vec6i
 6-int signed vector
 
typedef VectorT< unsigned int, 6 > Vec6ui
 6-int unsigned vector
 
typedef VectorT< float, 6 > Vec6f
 6-float vector
 
typedef VectorT< double, 6 > Vec6d
 6-double vector
 

Functions

template<class T , typename Real >
bool is_zero (const T &_a, Real _eps)
 comparison operators with user-selected precision control
 
template<class T1 , class T2 , typename Real >
bool is_eq (const T1 &a, const T2 &b, Real _eps)
 
template<class T1 , class T2 , typename Real >
bool is_gt (const T1 &a, const T2 &b, Real _eps)
 
template<class T1 , class T2 , typename Real >
bool is_ge (const T1 &a, const T2 &b, Real _eps)
 
template<class T1 , class T2 , typename Real >
bool is_lt (const T1 &a, const T2 &b, Real _eps)
 
template<class T1 , class T2 , typename Real >
bool is_le (const T1 &a, const T2 &b, Real _eps)
 
float eps__ (float)
 
double eps__ (double)
 
template<class T >
bool is_zero (const T &a)
 
template<class T1 , class T2 >
bool is_eq (const T1 &a, const T2 &b)
 
template<class T1 , class T2 >
bool is_gt (const T1 &a, const T2 &b)
 
template<class T1 , class T2 >
bool is_ge (const T1 &a, const T2 &b)
 
template<class T1 , class T2 >
bool is_lt (const T1 &a, const T2 &b)
 
template<class T1 , class T2 >
bool is_le (const T1 &a, const T2 &b)
 
template<class T >
sane_aarg (T _aarg)
 Trigonometry/angles - related.
 
template<class T >
angle (T _cos_angle, T _sin_angle)
 returns the angle determined by its cos and the sign of its sin result is positive if the angle is in [0:pi] and negative if it is in [pi:2pi]
 
template<class T >
positive_angle (T _angle)
 
template<class T >
positive_angle (T _cos_angle, T _sin_angle)
 
template<class T >
deg_to_rad (const T &_angle)
 
template<class T >
rad_to_deg (const T &_angle)
 
double log_ (double _value)
 
template<typename Scalar , int DIM, typename OtherScalar >
auto operator* (const OtherScalar &_s, const VectorT< Scalar, DIM > &rhs) -> decltype(rhs.operator*(_s))
 Component wise multiplication from the left.
 
template<typename Scalar , int DIM>
auto operator<< (std::ostream &os, const VectorT< Scalar, DIM > &_vec) -> typename std::enable_if< sizeof(decltype(os<< _vec[0])) >=0
 output a vector by printing its space-separated compontens
 
 for (int i=1;i< DIM;++i)
 
template<typename Scalar , int DIM>
auto operator>> (std::istream &is, VectorT< Scalar, DIM > &_vec) -> typename std::enable_if< sizeof(decltype(is >> _vec[0])) >=0
 read the space-separated components of a vector from a stream
 
template<class Traits >
TriMesh_ArrayKernelT< Traits > & TRIMESH_CAST (PolyMesh_ArrayKernelT< Traits > &_poly_mesh)
 
template<class Traits >
const TriMesh_ArrayKernelT< Traits > & TRIMESH_CAST (const PolyMesh_ArrayKernelT< Traits > &_poly_mesh)
 
template<class Traits >
PolyMesh_ArrayKernelT< Traits > & POLYMESH_CAST (TriMesh_ArrayKernelT< Traits > &_tri_mesh)
 
template<class Traits >
const PolyMesh_ArrayKernelT< Traits > & POLYMESH_CAST (const TriMesh_ArrayKernelT< Traits > &_tri_mesh)
 
size_t hash_value (const BaseHandle &h)
 
std::ostream & operator<< (std::ostream &_os, const BaseHandle &_hnd)
 Write handle _hnd to stream _os.
 
template<typename LHS , typename KERNEL >
LHS mesh_cast (PolyMeshT< KERNEL > &rhs)
 Cast a mesh with different but identical traits into each other. More...
 
template<typename LHS , typename KERNEL >
LHS mesh_cast (PolyMeshT< KERNEL > *rhs)
 
template<typename LHS , typename KERNEL >
const LHS mesh_cast (const PolyMeshT< KERNEL > &rhs)
 
template<typename LHS , typename KERNEL >
const LHS mesh_cast (const PolyMeshT< KERNEL > *rhs)
 
template<class _Mesh , class _PropertyHandle >
void smooth_mesh_property (unsigned int _n_iters, _Mesh &_m, _PropertyHandle _pph)
 
template<class _Mesh >
void smooth_mesh (_Mesh &_m, uint _n_iters)
 
Cast vector type to another vector type.
template<typename src_t , typename dst_t , int n>
void vector_cast (const src_t &_src, dst_t &_dst, GenProg::Int2Type< n >)
 Cast vector type to another vector type by copying the vector elements.
 
template<typename src_t , typename dst_t >
void vector_cast (const src_t &, dst_t &, GenProg::Int2Type< 0 >)
 Cast vector type to another vector type by copying the vector elements.
 
template<typename src_t , typename dst_t , int n>
void vector_copy (const src_t &_src, dst_t &_dst, GenProg::Int2Type< n >)
 Cast vector type to another vector type by copying the vector elements.
 
template<typename src_t , typename dst_t >
void vector_copy (const src_t &, dst_t &, GenProg::Int2Type< 0 >)
 Cast vector type to another vector type by copying the vector elements.
 
template<typename dst_t , typename src_t >
vector_caster< dst_t, src_t >::return_type vector_cast (const src_t &_src)
 Cast vector type to another vector type by copying the vector elements.
 
osg::Vec3f::ValueType dot (const osg::Vec3f &_v1, const osg::Vec3f &_v2)
 Adapter for osg vector member computing a scalar product.
 
osg::Vec3f::ValueType dot (const osg::Vec3f &_v1, const osg::Pnt3f &_v2)
 Adapter for osg vector member computing a scalar product.
 
osg::Vec2f::ValueType dot (const osg::Vec2f &_v1, const osg::Vec2f &_v2)
 Adapter for osg vector member computing a scalar product.
 
osg::Vec3f cross (const osg::Vec3f &_v1, const osg::Vec3f &_v2)
 Adapter for osg vector member computing a scalar product.
 

Variables

const float flt_eps__ = (float)1e-05
 
const double dbl_eps__ = 1e-09
 
return os
 
return is
 

Detailed Description

Contains all the mesh ingredients like the polygonal mesh, the triangle mesh, different mesh kernels and mesh traits.

Martin, 26.12.2004: 1) replaced resize(size()-1) with pop_back(), since the later is more efficient 2) replaced interface_.set_heap_position(entry(0), -1); with reset_heap_position() 3) added const modifier to various functions TODO: in the moment the heap does not conform to the HeapInterface specification, i.e., copies are passed instead of references.

This file contains all code required to use Eigen3 vectors as Mesh vectors.

This is especially important for set_heap_position(), where the reference argument is non-const. The specification should be changed to reflect that the heap actually (only?) works when the heap entry is nothing more but a handle. TODO: change the specification of HeapInterface to make less(), greater() and get_heap_position() const. Needs changing DecimaterT. Might break someone's code.

Function Documentation

◆ mesh_cast()

template<typename LHS , typename KERNEL >
LHS OpenMesh::mesh_cast ( PolyMeshT< KERNEL > &  rhs)

Cast a mesh with different but identical traits into each other.

Example:

struct TriTraits1 : public OpenMesh::DefaultTraits {
typedef Vec3d Point;
};
struct TriTraits2 : public OpenMesh::DefaultTraits {
typedef Vec3d Point;
};
struct TriTraits3 : public OpenMesh::DefaultTraits {
typedef Vec3f Point;
};
TriMesh_ArrayKernelT<TriTraits1> a;
TriMesh_ArrayKernelT<TriTraits2> &b = mesh_cast<TriMesh_ArrayKernelT<TriTraits2>&>(a); // OK
TriMesh_ArrayKernelT<TriTraits3> &c = mesh_cast<TriMesh_ArrayKernelT<TriTraits3>&>(a); // ERROR
See also
MeshCast
Parameters
rhs
Returns

Project OpenMesh, ©  Computer Graphics Group, RWTH Aachen. Documentation generated using doxygen .