• VTK 简单点云数据显示绘制


    基于vtkPolyData,绘制时除了输入点坐标,还需要通过setVerts指定点绘制信息。

    simplePoints.txt的内容为简单的 xyz,如:
    20 20 20
    20 20 30
    20 20 40
    20 30 30

    参考vtkSimplePointsReader,此类位于legacy文件夹下,不建议直接使用

    // VTK includes
    #include "vtkPoints.h"
    #include "vtkPolyData.h"
    #include "vtkActor.h"
    #include "vtkRenderer.h"
    #include "vtkRenderWindow.h"
    #include "vtkPolyDataMapper.h"
    #include "vtkInteractorStyle.h"
    #include "vtkRenderWindowInteractor.h"
    #include "vtkProperty.h"
    #include "vtkCellArray.h"
    #include "vtkInteractorStyleTrackballCamera.h"
    
    
    
    int main(int argc, char *argv[])
    {
    	vtkPoints *points = vtkPoints::New();
    	vtkCellArray *cells = vtkCellArray::New();
    
    
    //	ifstream fs(argv[1]);
    	ifstream fs("simplePoints.txt");
    	vtkIdType idtype;
    	double x, y, z;
    	while(fs>>x>>y>>z){
    		//插入点坐标,此处可改为其它的xyz
    		idtype = points->InsertNextPoint(x,y,z);  
    		cells->InsertNextCell(1, &idtype);
    	}
    
    
    	// 渲染机制未知,需要同时设置点坐标与点坐标对应的verts
    	// verts中的id必须与点坐标对应
    	vtkPolyData *polyData = vtkPolyData::New();
    	polyData->SetPoints(points);
    	polyData->SetVerts(cells);
    
    	//下面为正常的可视化流程,可设置的点云颜色、大小等已注释
    	vtkPolyDataMapper *mapper = vtkPolyDataMapper::New();
    	mapper->SetInputData(polyData);
    
    	vtkActor *actor = vtkActor::New();
    	actor->SetMapper(mapper);
    	//设置颜色与点大小
    	//actor->GetProperty()->SetColor(0.0, 0.0, 0.0);  
    	//actor->GetProperty()->SetPointSize(2);
    
    
    	vtkRenderer *renderer = vtkRenderer::New();
    	renderer->AddActor(actor);
    	// 设置背景颜色
    	// renderer->SetBackground(1, 1, 1);
    
    	vtkRenderWindow *renderWindow = vtkRenderWindow::New();
    	renderWindow->AddRenderer(renderer);
    
    	vtkRenderWindowInteractor *iren = vtkRenderWindowInteractor::New();
    	iren->SetRenderWindow(renderWindow);
    
    	vtkInteractorStyleTrackballCamera *style = vtkInteractorStyleTrackballCamera::New();
    	iren->SetInteractorStyle(style);
    
    	iren->Initialize();
    	iren->Start();
    
    	points->Delete();
    	polyData->Delete();
    	mapper->Delete();
    	actor->Delete();
    	renderer->Delete();
    	renderWindow->Delete();
    	iren->Delete();
    	style->Delete();
    
    	return 0;
    }
    
    
  • 相关阅读:
    Idea安装Scala插件(转)
    serialVersionUID的作用(转)
    [转]学习win10的bash使用ssh连接远程服务器
    [转]使用 Travis CI 部署你的 Hexo 博客
    【转】H5
    【转】Virtual DOM
    【转】hexo博客图片问题
    【转】V8 之旅: 垃圾回收器
    关于react-redux中Provider、connect的解析
    【转】webpack4
  • 原文地址:https://www.cnblogs.com/fly2wind/p/7554126.html
Copyright © 2020-2023  润新知