2

メッシュ モデルのビューを固定点からレンダリングしています。つまり、カメラを仮想的にワールド空間の既知の座標に配置しています。たとえば、次の図を参照してください。 ここに画像の説明を入力

座標がわかっている各赤い頂点にカメラを配置します。カメラの変換行列を計算するにはどうすればよいですか? たとえば、移動したい位置が である場合(x,y,z)、翻訳が明らかに であることがわかり[x,y,z]ます。ただし、向き(0,0,0)を変える必要があるため、回転する必要があります。この回転の計算方法がわかりません。

基本的に、次のようになるカメラの 4x4 変換行列を回復したい

|r11 r12 r13 0|
|r21 r22 r23 0|
|r31 r32 r33 0|
| x   y   z  1|

どんな助けでも大歓迎です

4

1 に答える 1

2

通常、カメラの向きはその状態に関連付けられています。この方向は、多くの場合、View Plane Normal (VPN) および View Up Vector (VUV) としてキャプチャされます。他の 2 つのクロス積である View Right Vector (VRV) または View Left Vector (VLV) もあると便利な場合があります (必須ではありません)。

( 0 , 0 , _ _ 0) 変換の回転部分をさまざまなビュー ベクトルに適用するだけです。球の表面を横切ってカメラの位置を回転させるだけなので、カメラが向けられているポイントを保持する必要があります。

これを計算するには、回転ベクトルはR = V 0 × V 1 (順序が間違っている可能性があります... しかし、これでおわかりになるはずです) であり、角度は θ = cos -1 [( V 0 ∙<B >V 1 ) / || V 0 || || V 1 ||]。クォータニオンまたは角度軸回転行列のいずれかを使用して、カメラの位置と方向を回転させることができます。

または、OpenGL を使用している場合は、これを行う関数が既に用意されています。それはgluLookatと呼ばれます。他の何かのために廃止されたのかどうかはわかりませんが、昔は非常に便利でした。

于 2013-08-02T15:37:18.307 に答える