mesh_property_types.h
Go to the documentation of this file.
00001 
00063 #ifndef COB_MESH_PROPERTY_TYPES_H
00064 #define COB_MESH_PROPERTY_TYPES_H
00065 
00066 #include <OpenMesh/Core/IO/MeshIO.hh>
00067 #include <OpenMesh/Core/Mesh/TriMesh_ArrayKernelT.hh>
00068 
00069 namespace cob_3d_meshing
00070 {
00071   class DefaultMeshTraits
00072   {
00073   public:
00074     typedef OpenMesh::TriMesh_ArrayKernelT<> MeshT;
00075     typedef MeshT::VertexHandle VertexHandle;
00076     typedef MeshT::FaceHandle FaceHandle;
00077   };
00078 
00079 
00080   namespace MeshProperties
00081   {
00082     //______________________________ Normals __________________________________
00083     template<typename PointNormalT,
00084              typename MeshTraits = DefaultMeshTraits>
00085     class Normals
00086     {
00087     public:
00088       typedef PointNormalT T1;
00089       typedef typename MeshTraits::MeshT MeshT;
00090       typedef typename MeshTraits::VertexHandle VertexHandle;
00091       typedef typename pcl::PointCloud<T1>::ConstPtr DataPtrT;
00092       typedef OpenMesh::Vec3f PropT;
00093       typedef OpenMesh::VPropHandleT<PropT> PropHandle;
00094 
00095       Normals(const DataPtrT& data) { data_ = data; }
00096 
00097       inline static std::string name() { return "Normals"; }
00098 
00099       inline void init(MeshT* mesh_hdl)
00100       {
00101         mesh_ = mesh_hdl;
00102         mesh_->add_property(prop_hdl_, name());
00103       }
00104 
00105       inline void setVertex(const VertexHandle& vertex_hdl, int idx)
00106       {
00107         Eigen::Vector3f n = (*data_)[idx].getNormalVector3fMap();
00108         mesh_->property(prop_hdl_, vertex_hdl) = PropT(n(0), n(1), n(2));
00109       }
00110 
00111     private:
00112       MeshT* mesh_;
00113       DataPtrT data_;
00114       PropHandle prop_hdl_;
00115     };
00116 
00117     //______________________________ Labels __________________________________
00118     template<typename PointLabelT,
00119              typename MeshTraits = DefaultMeshTraits>
00120     class Labels
00121     {
00122     public:
00123       typedef PointLabelT T1;
00124       typedef typename MeshTraits::MeshT MeshT;
00125       typedef typename MeshTraits::VertexHandle VertexHandle;
00126       typedef typename pcl::PointCloud<T1>::ConstPtr DataPtrT;
00127       typedef int PropT;
00128       typedef OpenMesh::VPropHandleT<PropT> PropHandle;
00129 
00130       Labels(const DataPtrT& data) { data_ = data; }
00131 
00132       static std::string name() { return "Labels"; }
00133 
00134       inline void init(MeshT* mesh_hdl)
00135       {
00136         mesh_ = mesh_hdl;
00137         mesh_->add_property( prop_hdl_, name() );
00138       }
00139 
00140       inline void setVertex(const VertexHandle& vertex_hdl, int idx)
00141       {
00142         mesh_->property( prop_hdl_, vertex_hdl ) = (*data_)[idx].label;
00143       }
00144 
00145     private:
00146       MeshT* mesh_;
00147       DataPtrT data_;
00148       PropHandle prop_hdl_;
00149     };
00150 
00151     //______________________________ Color ____________________________________
00152 
00153     //______________________________ PlaneCoef ________________________________
00154   }
00155 }
00156 
00157 #endif


cob_3d_meshing
Author(s): Georg Arbeiter
autogenerated on Wed Aug 26 2015 11:04:03