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;
}

转载于:https://www.cnblogs.com/fly2wind/p/7554126.html

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值