Я использую vtkImageViewer класс, чтобы визуализировать различные самолеты в 3D объеме. Тогда мне нравится накладывать вертикальное и горизонтальную линию, чтобы отметить текущее положение мыши.
Я использую следующий код, чтобы добавить vtkActor2D к зрителю:
imageViewer = vtk.vtkImageViewer()
...
line = vtk.vtkLineSource()
line.SetResolution(20)
mapper = vtk.vtkPolyDataMapper2D()
mapper.SetInputConnection(line.GetOutputPort())
actor = vtk.vtkActor2D()
actor.SetMapper(mapper)
imageViewer.GetRenderer().AddActor2D(actor)
...
line.SetPoint1(x,0.0,0.0)
line.SetPoint2(x,y,0.0)
actor.GetProperty().SetColor(color)
actor.GetProperty().SetOpacity(0.75)
...
imageViewer.Render()
На Mac OS X это работает как ожидалось, но когда я примеряю свою машину Windows, линия не показывает вообще.
Обновление:
Если я изменяюсь на vtkActor вместо этого, актеры предоставлены позади imageViewer, как я приношу vtkActor к переднему плану?
imageViewer = vtk.vtkImageViewer()
...
line = vtk.vtkLineSource()
line.SetResolution(20)
mapper = vtk.vtkPolyDataMapper()
mapper.SetInputConnection(line.GetOutputPort())
actor = vtk.vtkActor()
actor.SetMapper(mapper)
imageViewer.GetRenderer().AddActor(actor)
...
line.SetPoint1(x,0.0,0.0)
line.SetPoint2(x,y,0.0)
actor.GetProperty().SetColor(color)
actor.GetProperty().SetOpacity(0.75)
...
imageViewer.Render()