VTK系列——vtkPoints 显示

vtkPoints 是由点云组成的数组,不包含任何的vertex, 直接放进vtkPolyData 中进行显示是看不到的。两种显示方式可参考以下代码。

1)C++ 版

    vtkSmartPointer<vtkActor> points_actor=
            vtkSmartPointer<vtkActor>::New();

    vtkSmartPointer<vtkCellArray> polyvertex=
                vtkSmartPointer<vtkCellArray>::New();
    int Num=points->GetNumberOfPoints();
    polyvertex->SetNumberOfCells(Num);
    for(vtkIdType i=0;i<Num;i++)
    {
        vtkIdType cell[1]={i};
        polyvertex->InsertNextCell(1,cell);
    }

    vtkSmartPointer<vtkPolyData> polydata_surf=
                vtkSmartPointer<vtkPolyData>::New();
    polydata_surf->SetPoints(points);
    polydata_surf->SetVerts(polyvertex);

    vtkSmartPointer<vtkDataSetMapper> points_map =
            vtkSmartPointer<vtkDataSetMapper>::New();

    points_map->SetInputData(polydata_surf);
    points_actor->SetMapper(points_map);

    render->AddActor(points_actor);

2) C++ 版

    vtkSmartPointer<vtkPolyData> polydata =
        vtkSmartPointer<vtkPolyData>::New();
    polydata->SetPoints(points);
    vtkSmartPointer<vtkVertexGlyphFilter> vertexFilter =                 
        vtkSmartPointer<vtkVertexGlyphFilter>::New();
    vertexFilter->SetInputData(polydata);
    vertexFilter->Update();
    
    vtkSmartPointer<vtkPolyDataMapper> mapper =
        vtkSmartPointer<vtkPolyDataMapper>::New();
    mapper->SetInputData(vertexFilter->GetOutput());
    mapper->Update();

    vtkSmartPointer<vtkActor>actor = 
        vtkSmartPointer<vtkActor>::New();
    actor->SetMapper(mapper);
    render->AddActor(actor);

3) python 版

def PointsDisplay(points):
    Points = vtk.vtkPoints()
    vertices = vtk.vtkCellArray()
    for v in points:
        point_tmp = [v[0], v[1], v[2]]
        id=Points.InsertNextPoint(point_tmp)
        vertices.InsertNextCell(1)
        vertices.InsertCellPoint(id)

    polydata = vtk.vtkPolyData()
    polydata.SetPoints(Points)
    polydata.SetVerts(vertices)
    Mapper = vtk.vtkPolyDataMapper()
    Mapper.SetInputData(polydata)
    Actor = vtk.vtkActor()
    Actor.SetMapper(Mapper)
    Actor.GetProperty().SetColor(1, 0, 0)
    
    ren1 = vtk.vtkRenderer()
    ren1.AddActor(Actor)
    # ren1.AddActor(ref_Actor)
    ren1.SetBackground(0.1, 0.2, 0.4)
    renWin = vtk.vtkRenderWindow()
    renWin.AddRenderer(ren1)
    # renWin.SetFullScreen(True)
    renWin.SetSize(300, 300)
    renWin.Render()
    iren = vtk.vtkRenderWindowInteractor()
    iren.SetRenderWindow(renWin)
    iren.Initialize()
    iren.Start()

 

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值