环境为msvc2010 + qt 5.2 编译生成的vtk7.1.1。 pcl 1.8.0 qt5.2qvtkwidgets .貌似只有这个编译环境才能造出vtk7.1.1 。 vtk8.0 需要2015+ qt5.6以上, vtk6.0 使用的qt是4版本的. 路过的请注意.
使用 vtkTransform 将原始数据的 vtkActor 与坐标轴 vtkCubeAxesActor叠加在一起.
void PCLViewer::showPointCloud(pcl::PointCloud<PointT>::Ptr pointCloud)
{
if(pointCloud->points.size() == 0){
// warningWindow(STR_3D_IMAGE_ERROR_TITLE);
return;
}
vtkSmartPointer<vtkRenderer> pRender = vtkSmartPointer<vtkRenderer>::New();
vtkSmartPointer<vtkPoints> points = vtkSmartPointer<vtkPoints>::New();//key code
vtkIdType size = pointCloud->points.size();
int n = size;
for(int i = 0; i < n ; i ++ )
{
double ptx = pointCloud->points[i].x;
double pty = pointCloud->points[i].y;
double ptz = pointCloud->points[i].z;
points->InsertNextPoint(ptx,pty,ptz);
}
vtkSmartPointer<vtkPolyVertex> polyvertex = vtkSmartPointer<vtkPolyVertex>::New();
polyvertex->GetPointIds()->SetNumberOfIds(n); //必须设置Id个数,否则可以编译,不能运行
int i=0;
for(i=0;i<n;i++)//建立拓扑关系
{
polyvertex->GetPointIds()->SetId(i,i);//第一个参数是几何point的ID号,第2个参数是拓扑中的Id号
}
//属性数据
vtkSmartPointer<vtkFloatA