コンピューターから特定の方向に動くヘッド カメラを制御しようとしています。カメラは、パン (540 度) とチルト (280 度) によってのみ制御されます。問題は、オイラー角をこれらのパン角度とチルト角度にすることです。
XY および Z 回転 (Eurler 角) としましょう。
今度は、(物理的な!) パンチルト カメラを同じ方向に動かしたいと思います。しかし、xyz ベクトルをパンの傾きに変換する方法がわかりません。
コンピューターから特定の方向に動くヘッド カメラを制御しようとしています。カメラは、パン (540 度) とチルト (280 度) によってのみ制御されます。問題は、オイラー角をこれらのパン角度とチルト角度にすることです。
XY および Z 回転 (Eurler 角) としましょう。
今度は、(物理的な!) パンチルト カメラを同じ方向に動かしたいと思います。しかし、xyz ベクトルをパンの傾きに変換する方法がわかりません。
直交同種 4x4 変換行列に切り替える
Ang によるグローバル ワールド X 軸周りの回転:
double c=cos(ang),s=sin(ang);
double Q[16]=
{
1, 0, 0, 0,
0, c,-s, 0,
0, s, c, 0,
0, 0, 0, 1
};
M=M*Q;
Ang によるローカル カメラの X 軸周りの回転:
double c=cos(ang),s=sin(ang);
double Q[16]=
{
1, 0, 0, 0,
0, c,-s, 0,
0, s, c, 0,
0, 0, 0, 1
};
M=((M^-1)*Q)^-1;
glm のような変換行列用のライブラリがありますが、私は自分のものを好みます
ここでは、同種 (4x4) と通常 (3x3+1x3) の 3D 変換行列の違いを確認できます。
今カメラの運転
dユニットがこれを行う場合、前進するには:
x0+=d*Zx;
y0+=d*Zy;
z0+=d*Zz;
横方向の移動には X ベクトルを使用
X軸周りとは異なる回転には、異なるQマトリックスを使用するだけです
Y軸周りの回転
c, 0, s, 0,
0, 1, 0, 0,
-s, 0, c, 0,
0, 0, 0, 1;
Z軸周りの回転
c,-s, 0, 0,
s, c, 0, 0,
0, 0, 1, 0,
0, 0, 0, 1;