# -*- coding:utf-8 -*-
import vtk
import numpy as np
import open3d as o3d
from vtk.util.numpy_support import numpy_to_vtk
if __name__ == '__main__':
pcd = o3d.io.read_point_cloud(
"/home/ancy/PycharmProjects/learn/Open3D/examples/test_data/RGBD/example_tsdf_pcd.ply")
# 新建 vtkPoints 实例
points = vtk.vtkPoints()
# 导入点数据
points.SetData(numpy_to_vtk(np.asarray(pcd.points)))
# 新建 vtkPolyData 实例
polydata = vtk.vtkPolyData()
# 设置点坐标
polydata.SetPoints(points)
# 顶点相关的 filter
vertex = vtk.vtkVertexGlyphFilter()
vertex.SetInputData(polydata)
# mapper 实例
mapper = vtk.vtkPolyDataMapper()
# 关联 filter 输出
mapper.SetInputConnection(vertex.GetOutputPort())
# actor 实例
actor = vtk.vtkActor()
# 关联 mapper
actor.SetMapper(mapper)
# render
render = vtk.vtkRenderer()
render.SetBackground(0, 0, 0)
# Renderer Window
window = vtk.vtkRenderWindow()
window.AddRenderer(render)
window.SetSize(1000, 1000)
# System Event
win_render = vtk.vtkRenderWindowInteractor()
win_render.SetRenderWindow(window)
# Style
win_render.SetInteractorStyle(vtk.vtkInteractorStyleMultiTouchCamera())
# Insert Actor
render.AddActor(actor)
win_render.Initialize()
win_render.Start()