2

我正在创建一个用 python 编码并基于 ODE(开放动态引擎)的模拟器。对于可视化,我选择了 VTK。

对于模拟中的每个对象,我创建了一个相应的源(例如 vtkCubeSource)、映射器和演员。我能够正确显示对象并在模拟运行时更新它们。

我想添加轴以具有参考点并显示每个轴的方向。这样做我意识到,默认情况下,X 和 Z 位于屏幕平面内,而 Y 指向外部。在我的程序中,我有一个不同的约定。

我已经能够以两种方式显示轴:

1)图片

axes = vtk.vtkAxes()
axesMapper = vtk.vtkPolyDataMapper()
axesMapper.SetInputConnection(axes.GetOutputPort())
axesActor = vtk.vtkActor()
axesActor.SetMapper(axesMapper)
axesActor.GetProperty().SetLineWidth(4)

2)图像(颜色与第一种情况不匹配)

axesActor = vtk.vtkAxesActor()
axesActor.AxisLabelsOn()
axesActor.SetShaftTypeToCylinder()
axesActor.SetCylinderRadius(0.05)

在第二个中,允许用户设置许多与轴显示方式相关的参数。在第一个中,我只设置了线宽,没有别的。

所以,我的问题是:

  • 在 3D 场景中定义和显示轴的正确方法是什么?我只希望它们处于固定的位置和方向。
  • 如何为轴方向设置不同的约定,无论是显示还是一般可视化?
4

1 回答 1

1

好吧,如果您不为了显示目的而弄乱对象的变换矩阵,那么在使用轴方法 2 时将相机放在不同的位置可能就足够了。调整相机位置的简单方法是:Pitch(),方位角()和滚动()。

如果您弄乱了对象变换,则将相同的变换应用于轴。


Dženan Zukić 在 vtkusers@vtk.org 邮件列表中友好地回答了这个问题。 http://www.vtk.org/pipermail/vtkusers/2011-November/119990.html

于 2011-11-11T20:33:49.950 回答