2011-10-18 101 views
2

我正在創建一個用python編碼並基於ODE(Open Dynamics Engine)的模擬器。爲了可視化,我選擇了VTK。如何在3D場景中使用和設置座標軸

對於模擬中的每個對象,我創建一個相應的源(例如vtkCubeSource),映射器和actor。我能夠正確顯示對象並在仿真運行時更新它們。

我想添加座標軸以獲得參考點並顯示每個座標軸的方向。這樣做,我意識到,默認情況下,X和Z在屏幕平面,Y向外指向。在我的計劃中,我有一個不同的約定。

我已經能夠顯示軸在2種方式:

1)Image

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

2)Image(顏色不匹配與第一殼體)

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

在第二個中,允許用戶設置許多與軸顯示方式有關的參數。在第一個,我只設法設置線寬,但沒有別的。

所以,我的問題是:

  • 這是在3D場景定義和顯示軸的正確方法是什麼?我只是想讓他們處於一個固定的位置和方向。
  • 如何爲軸顯示和一般可視化設置不同的軸定位約定?

回答

1

好吧,如果你不惹對象的變換矩陣顯示 目的,很可能它足以只是把你的相機變成 不同的位置,同時使用軸接近2.簡單的方法來調整 你的相機位置是:Pitch(),Azimuth()和Roll()。

如果您搞砸了對象變換,那麼對 座標軸應用相同的變換。


DženanZukić親切回答[email protected]郵件列表這個問題。 http://www.vtk.org/pipermail/vtkusers/2011-November/119990.html