【发布时间】:2018-07-16 08:31:56
【问题描述】:
我需要在 PyQt 应用程序中集成 VTK 可视化。但是,当我将模型放入 QVTKRenderWindowInteractor 时,显示器会显示一些不希望的透明效果(见下图)。无论我尝试加载什么,这都会发生在曲面或点云上。
有什么方法可以在 QVTKRenderWindowInteractor 中实现正确的表示?
第一张图片是来自vtk.vtkConeSource()的圆锥体。
第二张图片是来自 PCL 测试的 cturtle.pcd 点云。
左: 没有 QVTKRenderWindowInteractor。 右:与QVTKRenderWindowInteractor
我附上了问题的示例代码以供重现。 这是没有Qt的代码:
#!/usr/bin/env python
import vtk
from vtk.util.colors import tomato
"""This simple example shows how to do basic rendering and pipeline creation."""
cone = vtk.vtkConeSource()
cone.SetResolution(8)
coneMapper = vtk.vtkPolyDataMapper()
coneMapper.SetInputConnection(cone.GetOutputPort())
coneActor = vtk.vtkActor()
coneActor.SetMapper(coneMapper)
coneActor.GetProperty().SetColor(tomato)
coneActor.RotateX(30.0)
coneActor.RotateY(-45.0)
ren = vtk.vtkRenderer()
renWin = vtk.vtkRenderWindow()
renWin.AddRenderer(ren)
iren = vtk.vtkRenderWindowInteractor()
iren.SetRenderWindow(renWin)
ren.AddActor(coneActor)
ren.SetBackground(0.1, 0.2, 0.4)
iren.Initialize()
ren.ResetCamera()
ren.GetActiveCamera().Zoom(1.5)
renWin.Render()
iren.Start()
这是 QVTKRenderWindowInteractor 内部的等效显示:
#!/usr/bin/env python
import vtk
from PyQt5.QtWidgets import QApplication
from vtk.qt.QVTKRenderWindowInteractor import QVTKRenderWindowInteractor
from vtk.util.colors import tomato
"""A simple example that uses the QVTKRenderWindowInteractor class."""
app = QApplication(['QVTKRenderWindowInteractor'])
cone = vtk.vtkConeSource()
cone.SetResolution(8)
coneMapper = vtk.vtkPolyDataMapper()
coneMapper.SetInputConnection(cone.GetOutputPort())
coneActor = vtk.vtkActor()
coneActor.SetMapper(coneMapper)
coneActor.GetProperty().SetColor(tomato)
coneActor.RotateX(30.0)
coneActor.RotateY(-45.0)
ren = vtk.vtkRenderer()
widget = QVTKRenderWindowInteractor()
widget.GetRenderWindow().AddRenderer(ren)
ren.AddActor(coneActor)
ren.SetBackground(0.1,0.2,0.4)
widget.Initialize()
ren.ResetCamera()
ren.GetActiveCamera().Zoom(1.5)
widget.GetRenderWindow().Render()
widget.Start()
widget.show()
app.exec_()
【问题讨论】:
-
我无法在 Mac OS 10.11.6 和 VTK 8.1 上重现该问题。你用的是什么版本的VTK?
标签: python-3.x qt rendering pyqt5 vtk