私はビデオをレイトレースするようにしています。そのためには、世界座標で、すべてのフレームのカメラローテーション行列が必要です。カメラは原点にあります。翻訳はありません。カメラの回転行列
私は、フレームごとに回転の変化としてカメラの軌跡を持っています。 フレームごとに、このフレームから次のフレームまでカメラがどのくらい回転するかを表す3つの値(ロール、ヨー、ピッチ)があります。これらの回転は、カメラ座標系で理解されるべきである。
フレームのワールド座標ローテーション行列を計算するにはどうすればよいですか?
def rot_x(angle):
cosa = np.cos(angle)
sina = np.sin(angle)
return np.array([[1,0,0], [0, cosa, -sina], [0, sina, cosa]])
def rot_y(angle):
cosa = np.cos(angle)
sina = np.sin(angle)
return np.array([[cosa, 0, sina], [0,1,0], [-sina, 0, cosa]])
def rot_z(angle):
cosa = np.cos(angle)
sina = np.sin(angle)
return np.array([[cosa, -sina, 0], [sina, cosa, 0], [0,0,1]])
matrices = [initial_rot]
for pitch, yaw, roll in frames_data:
rx = rot_x(pitch)
ry = rot_y(yaw)
rz = rot_z(roll)
last_matrix = matrices[-1]
matrices.append(last_matrix.T.dot(rx).dot(ry).dot(rz))
(last_matrixは正規直交である必要がありますので、それの逆転置する必要があります):私が試した何
。
しかし、何かがひどく間違っていて、レンダリングされたビデオがy次元でちらつくだけです。ここで数学に何か問題があると確信しています。
これは、常にカメラを世界の座標系の軸ではなく、カメラ軸ですか? – user3207838