3

私は拡張現実アプリケーションを構築しており、カメラのヨー、ピッチ、ロールがあります。3D 環境にオブジェクトを配置したいと考えています。ユーザーがクリックすると、カメラが向いている場所 (2D 画面の中心) に 3D ポイントがポップアップし、ユーザーが移動すると、それに応じてポイントが 3D 空間で移動するようにしたいと考えています。カメラの位置は変わらず、向きだけが変わります。この点の 3D 位置を復元する適切な方法はありますか? すべての点がカメラの位置から等距離にあると仮定できます。

これは、2 つの軸 (OpenGL のデフォルトの向き) に対して個別に実行できます。これは、垂直軸の変化に対して機能します。

x = -sin(pitch)
y = cos(pitch)
z = 0

これは、横軸の変更にも機能します。

x = 0
y = -sin(yaw)
z = cos(yaw)

コンバインを次のようにする必要があると考えていました。

x = -sin(pitch)
y = sin(yaw) * cos(pitch) 
z = cos(yaw)

それは近いようですが、正確には正しくありません。どんな提案でも大歓迎です!

4

1 に答える 1

1

回転ベクトル(ピッチ、ヨー、ロール)から回転行列に変換したいようです。変換は、回転行列に関するWikipediaの記事で確認できます。アイデアは、行列を作成したら、任意の点を簡単に変換することです。

final_pos = rot_mat*initial_pose

ここで、最終ポーズと初期ポーズは3x1ベクトルで、rot_matは3x3行列です。

于 2012-09-18T20:35:06.643 に答える