Go to the documentation of this file.00001 
00002 
00003 
00004 
00005 
00006 
00007 
00008 #ifndef RENDER_VIEWS_TESSELATED_SPHERE_H_
00009 #define RENDER_VIEWS_TESSELATED_SPHERE_H_
00010 
00011 #include <vtkSmartPointer.h>
00012 #include <vtkPolyData.h>
00013 #include <pcl/common/common.h>
00014 
00015 namespace pcl
00016 {
00017   namespace apps
00018   {
00026     class PCL_EXPORTS RenderViewsTesselatedSphere
00027     {
00028     private:
00029       std::vector<Eigen::Matrix4f, Eigen::aligned_allocator<Eigen::Matrix4f> > poses_;
00030       std::vector<pcl::PointCloud<pcl::PointXYZ>::Ptr> generated_views_;
00031       std::vector<float> entropies_;
00032       int resolution_;
00033       int tesselation_level_;
00034       bool use_vertices_;
00035       float view_angle_;
00036       float radius_sphere_;
00037       bool compute_entropy_;
00038       vtkSmartPointer<vtkPolyData> polydata_;
00039 
00040     public:
00041       RenderViewsTesselatedSphere ()
00042       {
00043         resolution_ = 150;
00044         tesselation_level_ = 1;
00045         use_vertices_ = false;
00046         view_angle_ = 57;
00047         radius_sphere_ = 1.f;
00048         compute_entropy_ = false;
00049       }
00050 
00051       
00052 
00053 
00054       void
00055       setResolution (int res)
00056       {
00057         resolution_ = res;
00058       }
00059 
00060       
00061 
00062 
00063 
00064       void
00065       setUseVertices (bool use)
00066       {
00067         use_vertices_ = use;
00068       }
00069 
00070       
00071 
00072 
00073       void
00074       setRadiusSphere (float radius)
00075       {
00076         radius_sphere_ = radius;
00077       }
00078 
00079       
00080 
00081 
00082       void
00083       setComputeEntropies (bool compute)
00084       {
00085         compute_entropy_ = compute;
00086       }
00087 
00088       
00089 
00090 
00091       void
00092       setTesselationLevel (int level)
00093       {
00094         tesselation_level_ = level;
00095       }
00096 
00097       
00098 
00099 
00100       void
00101       setViewAngle (float angle)
00102       {
00103         view_angle_ = angle;
00104       }
00105 
00106       
00107 
00108 
00109       void
00110       addModelFromPolyData (vtkSmartPointer<vtkPolyData> polydata)
00111       {
00112         polydata_ = polydata;
00113       }
00114 
00115       
00116 
00117       void
00118       generateViews ();
00119 
00120       
00121 
00122 
00123       void
00124       getPoses (std::vector<Eigen::Matrix4f, Eigen::aligned_allocator<Eigen::Matrix4f> > & poses)
00125       {
00126         poses = poses_;
00127       }
00128 
00129       
00130 
00131 
00132       void
00133       getViews (std::vector<pcl::PointCloud<pcl::PointXYZ>::Ptr> & views)
00134       {
00135         views = generated_views_;
00136       }
00137 
00138       
00139 
00140 
00141       void
00142       getEntropies (std::vector<float> & entropies)
00143       {
00144         entropies = entropies_;
00145       }
00146     };
00147 
00148   }
00149 }
00150 
00151 #endif