首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在同一渲染窗口中渲染2个.vtp切片

如何在同一渲染窗口中渲染2个.vtp切片
EN

Stack Overflow用户
提问于 2019-03-29 03:03:22
回答 1查看 41关注 0票数 0

我有一些切片在.vtp格式(也是vtm),我想可视化在一起,在他们之后的工作。

我已经设置了阅读器,映射器,演员,渲染窗口和相机坐标,但是当渲染图像时,它只给我第一个切片(Slice10),而不给我第二个切片(Slice11)

代码语言:javascript
复制
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()

我希望在相同的渲染窗口中有两个切片,一个在另一个窗口上,可能有一些距离,但中心相同,以便将它们保存在一起作为唯一的图像,并在此上工作

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-03-29 20:38:06

您的代码基本上是正确的,除了您为两个不同的角色设置了相同的映射器,因此实际上您显示的是两个相同的几何图形(第19到24行)。更改:

代码语言:javascript
复制
# actors
actor1 = vtk.vtkActor() 
actor1.SetMapper(mapper1)

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

至:

代码语言:javascript
复制
# actors
actor1 = vtk.vtkActor() 
actor1.SetMapper(mapper1)

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

它会起作用的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55405102

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档