1

OpenGLでさまざまな軸のカメラ回転を取得しようとしています(ただし、特にJava、LWJGL、およびjMEを使用しています)。カメラオブジェクトを使用すると、方向をVector3fとして取得できますが、これはコンポーネント化された回転を取得するためには機能しないようです。各軸は別の軸に関連付けられているように見えます。オフセット付きの角度コンポーネントを使用したtoAngleAxisは簡単なハックでしたが、ほとんどの状況で正しく機能しないことがわかりました。残念ながら、私は数学があまり得意ではありません。そうでなければ、この問題を解決できた可能性があります:)繰り返しになりますが、X、Y、Z軸をコンポーネント化し、ラジアンで0ラジアンから2PIラジアンにする必要があります。

誰か助けてもらえますか?

よろしくお願いします、クリス

4

2 に答える 2

3

オイラー角、ヨー/ピッチ/ロール、およびクォータニオンの向きについて読むことをお勧めします。これらのトピックは、関係するすべてを理解するのに役立ちます。私が正しく理解していれば、あなたは指定された方向からオイラー角を構築しようとしています。

オイラー角を操作するためのいくつかのアルゴリズムについては、このコードを参照してください。特に、あなたが欲しいのはsetDirectionメソッドだと思います。

これにより、方向ベクトルからのヨーとピッチが得られます。ただし、「ロール」には方向ベクトルを中心とした回転(または単一のクォータニオン回転として指定された方向)が必要になるため、必要な回転は2回転のみであることに注意してください。

于 2009-06-14T18:09:05.093 に答える
1

回転エンゼルを取得するには、デカルト座標で指定されたビューベクトルを球面座標に変換するだけです。数式はウィキペディアにあります。

viewvector = <x, y, z>

r = sqrt(x² + y² + z²)
phi = arctan2(y, x)
theta = arccos(z / r)

ビューベクトルから取得できる回転エンジェルは2つだけであることに注意してください。3番目の回転角を取得するには、投影面のx軸またはy軸を知っている必要があります。

于 2009-06-14T18:06:44.850 に答える