最近在项目中使用了VTK这个库用来三维重建,遇到了一个小问题,下面是Python代码
import vtkpart = vtk.vtkSTLReader()part.SetFileName(r\"D:\\vtk\\Build\\ExternalData\\Testing\\Data\\42400-IDGH.stl\")part.Update()print(part.GetOutput())# print(part.GetOutputPort())part_mapper = vtk.vtkPolyDataMapper()# part_mapper.SetInputData(part.GetOutput())part_mapper.SetInputConnection(part.GetOutputPort())part_actor = vtk.vtkLODActor()part_actor.SetMapper(part_mapper)# 浅灰色part_actor.GetProperty().SetColor(0.8257, 0.8275, 0.8275)# 绕x轴旋转30°part_actor.RotateX(30.0)# 绕y轴旋转-45°part_actor.RotateY(-45.0)ren1 = vtk.vtkRenderer()ren1.AddActor(part_actor)ren1.SetBackground(0.1, 0.2, 0.4)ren_win = vtk.vtkRenderWindow()ren_win.AddRenderer(ren1)ren_win.SetSize(300, 300)ren_win.Render()ren1.ResetCamera()ren1.GetActiveCamera().Zoom(1.5)iren = vtk.vtkRenderWindowInteractor()iren.SetRenderWindow(ren_win)iren.Initialize()iren.Start()
总结就是当你使用GetOutput()的时候,返回的是imageData,
在设置part_mapper.SetInputData()时使用GetOutput()。
GetOutputPort(),返回的是ImageDataAlgorithm,
在设置part_mapper.SetInputConnection()时使用part.GetOutputPort()
而且当你返回imageData类型的时候,需要使用part.Update()
网上关于VTK的资料特别少,而且就算有也是千篇一律,讲的都是同一样东西,如果大家有有用的资料,谢谢分享给我。