世界空間の座標をカメラの座標に変換する方法について混乱しています。
私の現在の理解は、カメラの空間ベクトルを計算する必要があるということです。
n=アイポイント-lookat
u = up(0,1,0)X n(正規化)
v = n X u
次に、<U、V、N>が得られたら、各ポイントに単純に乗算しますか?
仮定しましょう:
次に、最初に正規直交フレームを作成します。
グローバル座標フレームをカム座標フレームに変換するために、次の行列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 |
最終的に、グローバルからカム座標への完全な変換行列は次のようになります。
- | 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 |
以前の投稿にエラーがあると思います
このマトリックス
| 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|