sunday-labの日本語訳版です。英語版のXOOPS Cube関連記事を翻訳作業中...

2008年4月17日木曜日

Prevent the unexpected distortion at setDirection()

SceneNode や Camera のクラスについている setDirection() や lookAt() は、指定した座標の方向にノードやカメラの正面を向けることができる非常に便利なメソッドです。ただし、デフォルトの設定では特に回転軸を考えずに、最短距離で回転するため、カメラのオートトラックや lookAt() を扱おうとすると、ありがたくない Z-ROLL が頻発します。



Z-ROLL をロックするには、 setFixedYawAxis() メソッドで固定のヨー回転軸を設定します。これは本来 yaw() メソッドの回転軸をデフォルトの Vector3::UNIT_Y から変更するためのメソッドですが、 setDirection() 内のクォータニオン計算が切り替わり、 Z-ROLL を抑制する効果があります。
(実際、そのための機能です)

pNode->setFixedYawAxis(true, Vector3::UNIT_Y);


第二パラメータ Vector3::UNIT_Y はデフォルト値なので、省略してしまって構いません。これを指定すると、おおむね意図したとおりの回転が得られると思います。

0 件のコメント: