1

私の質問は、メッシュを移動する方向を計算する方法がわからないことを除いて、透視投影 (OpenGL) での 3D シーンのパンニングに似ています。

さまざまなメッシュを選択できるプログラムがあります。メッシュが選択されたら、カーソルをクリックしてドラッグするときに移動させたいと思います。カーソルが上に移動すると、メッシュが上に移動し、適切な方向に移動します。言い換えれば、メッシュを視線方向に垂直な平面に沿った方向に移動させたいのです。

カーソル位置に Delta (x,y) の Vector2 があり、カメラとメッシュの中心の Vector3 viewDirection があります。Delta と viewDirection を使用して 3D 空間でメッシュを移動する方法をどのように判断できますか? この計算を行うために他の情報が必要ですか (アップやアイなど)?

翻訳のスケールがずれていても構いませんが、今は方向性を見つけようとしているところです。

編集:何らかの理由で、上方向の取得について混乱がありました。明らかに、指定されたパースペクティブ アップ ベクトルにカメラの回転を適用することで計算できます。

4

1 に答える 1

1

追加のベクトル が必要になります。upDirectionこれは、カメラから「上」を指す単位ベクトルです。これで、クロス積viewDirectionupDirection取得rightDirectionして、カメラから「右」を指すベクトルを取得できます。

デルタを(または)yに沿ったモーションにマッピングし、デルタを のモーションにマッピングします。これらのベクトルはワールド空間にあります。upDirection-upDirectionxrightDirection

マウスの速度に合わせて移動速度をスケーリングすることができます。透視投影を使用している場合は、カメラに対するモデルの奥行きに合わせて移動速度をスケーリングする必要があります (オブジェクトをカメラから遠ざけるほど、マウスと一致させたい場合はオブジェクトをより速く移動する必要があります) .)

于 2013-04-15T17:00:32.903 に答える