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