7

世界空間の座標をカメラの座標に変換する方法について混乱しています。

私の現在の理解は、カメラの空間ベクトルを計算する必要があるということです。

n=アイポイント-lookat

u = up(0,1,0)X n(正規化)

v = n X u

次に、<U、V、N>が得られたら、各ポイントに単純に乗算しますか?

4

2 に答える 2

5

仮定しましょう:

  • 目の位置E =(e_x、e_y、e_z)、
  • 視線方向D =(d_x、d_y、d_z)
  • Up-VectorUP =(up_x、up_y、up_z)

次に、最初に正規直交フレームを作成します。

  • R = DX UP
  • U = RXD
  • ここで、D、R、Uを正規化すると、カメラの正規直交フレーム(D、R、U)が作成されます。

グローバル座標フレームをカム座標フレームに変換するために、次の行列M_Rを適用できます。

  • | R_x、R_y、R_z、0 |
  • | U_x、U_y、U_z、0 |
  • | -D_x、-D_y、-D_z、0 |
  • | 0.0、0.0、0.0、1.0 |

カムがグローバル原点に配置されていない場合は、平行移動M_Tも適用する必要があります。

  • | 1、0、0、-e_x |
  • | 0、1、0、-e_y |
  • | 0、0、1、-e_z |
  • | 0、0、0、1 |

最終的に、グローバルからカム座標への完全な変換行列は次のようになります。

  • M = M_R * M_T
  • | R_x、R_y、R_z、(Rドット-E)|
  • | U_x、U_y、U_z、(Uドット-E)|
  • | -D_x、-D_y、-D_z、(DドットE)|
  • | 0.0、0.0、0.0、1.0 |
于 2012-12-12T08:50:55.297 に答える
0

以前の投稿にエラーがあると思います

このマトリックス

| R_x, R_y, R_z, (R dot -E) |
| U_x, U_y, U_z, (U dot -E) |
| -D_x, -D_y, D_z, (D dot E)|
| 0.0, 0.0, 0.0, 1.0|

(私はopenGLでテストします、これは正しいです)

| R_x, R_y, R_z, (R dot -E) |
| U_x, U_y, U_z, (U dot -E) |
| -D_x, -D_y, -D_z, (D dot E)|
| 0.0, 0.0, 0.0, 1.0|
于 2013-09-05T14:27:11.687 に答える