2

Pythonでコーディングされ、ODE(Open Dynamics Engine)に基づくシミュレーターを作成しています。視覚化のために私はVTKを選びました。

シミュレーション内のすべてのオブジェクトに対して、対応するソース(vtkCubeSourceなど)、マッパー、およびアクターを作成します。オブジェクトを正しく表示し、シミュレーションの実行中にオブジェクトを更新することができます。

基準点を持ち、各軸の方向を示す軸を追加したいと思います。そうすることで、デフォルトでは、XとZが画面の平面内にあり、Yが外側を向いていることに気付きました。私のプログラムでは、別の慣習があります。

私は2つの方法で軸を表示することができました:

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)

2つ目では、ユーザーは軸の表示方法に関連する多くのパラメーターを設定できます。最初のものでは、線幅を設定することしかできませんでしたが、それ以外は何も設定しませんでした。

だから、私の質問は次のとおりです。

  • 3Dシーンで軸を定義して表示する正しい方法はどれですか?私はそれらを固定された位置と向きにしたいだけです。
  • 軸の表示と一般的な視覚化の両方について、軸の方向に異なる規則を設定するにはどうすればよいですか?
4

1 に答える 1

1

表示のためにオブジェクトの変換行列をいじらない場合は、軸アプローチ2を使用しながら、カメラを別の位置に配置するだけで十分な場合があります。カメラの位置を調整する簡単なメソッドは次のとおりです。Pitch()、 Azimuth()およびRoll()。

オブジェクト変換をいじる場合は、同じ変換を軸に適用します。


DženanZukićはvtkusers@vtk.orgメールリストでこの質問に親切に答えました。 http://www.vtk.org/pipermail/vtkusers/2011-November/119990.html

于 2011-11-11T20:33:49.950 に答える