Как визуализировать 2 .vtp фрагмента в одном окне визуализации - PullRequest
0 голосов
/ 28 марта 2019

У меня есть несколько фрагментов в формате .vtp (также в vtm), которые я хочу вместе визуализировать, чтобы потом поработать над ними.

Я уже установил читателей, картографов, актеров, координаты окна рендеринга и камеры,но когда изображение отображается, оно дает мне только первый фрагмент (Slice10), а не второй (Slice11)

import vtk

colors = vtk.vtkNamedColors()
Slice10 = 'Slice10_0_0.vtp'
reader1 = vtk.vtkXMLPolyDataReader()
reader1.SetFileName(Slice10)

Slice11 = 'Slice11_0_0.vtp'
reader2 = vtk.vtkXMLPolyDataReader()
reader2.SetFileName(Slice11)

# mapper
mapper1 = vtk.vtkPolyDataMapper()
mapper1.SetInputConnection(reader1.GetOutputPort())

mapper2 = vtk.vtkPolyDataMapper()
mapper2.SetInputConnection(reader2.GetOutputPort())

# actors
actor1 = vtk.vtkActor() 
actor1.SetMapper(mapper1)

actor2 = vtk.vtkActor()
actor2.SetMapper(mapper1)

'''RENDER'''
renderer = vtk.vtkRenderer()
# Background
renderer.SetBackground(1., 1., 1.)
# Add actor to the scene
renderer.AddActor(actor1)
renderer.AddActor(actor2)

'''Render window'''
renderWindow = vtk.vtkRenderWindow()
renderWindow.AddRenderer(renderer)

'''Interactor'''
renderWindowInteractor = vtk.vtkRenderWindowInteractor()
renderWindowInteractor.SetInteractorStyle(vtk.vtkInteractorStyleTrackballCamera())
renderWindowInteractor.SetRenderWindow(renderWindow)

'''Add camera coordinates'''
axes = vtk.vtkAxesActor()
widget = vtk.vtkOrientationMarkerWidget()
widget.SetOutlineColor(0.9300, 0.5700, 0.1300)
widget.SetOrientationMarker(axes)
widget.SetInteractor(renderWindowInteractor)
widget.SetViewport(0.0, 0.0, 0.4, 0.4)
widget.SetEnabled(1)
widget.InteractiveOn()

# Reset camera
renderer.ResetCamera()

'''Begin interaction'''
renderWindow.Render()
renderWindowInteractor.Initialize()
renderWindowInteractor.Start()
renderWindowInteractor.Start()

Я ожидаю, что два фрагмента в одном окне рендеринга один над другим, может быть снекоторое расстояние, но один и тот же центр, чтобы сохранить их вместе как уникальное изображение и работать над этим

1 Ответ

0 голосов
/ 29 марта 2019

Ваш код в основном правильный, за исключением того, что вы устанавливаете один и тот же маппер для двух разных актеров, поэтому фактически вы отображаете дважды одну и ту же геометрию (строки 19–24).Измените:

# actors
actor1 = vtk.vtkActor() 
actor1.SetMapper(mapper1)

actor2 = vtk.vtkActor()
actor2.SetMapper(mapper1)

на:

# actors
actor1 = vtk.vtkActor() 
actor1.SetMapper(mapper1)

actor2 = vtk.vtkActor()
actor2.SetMapper(mapper2)

И это будет работать.

...