私は自分自身を構築しようとしていますをOpenGLに表示してください。私はOpenGLのView Matrixを理解しようとしています
私はOpenGLのドキュメントから、このリンク https://www.opengl.org/sdk/docs/man2/xhtml/gluLookAt.xml
を以下のよ、私は次のようしています。目の位置
= eye(xe, ye, ze)
中心位置 = cen(0, 0, 0)
up = up(xu, yu, zu). (e.g. up = (0, 1, 0))
前方ベクトル
f' = cen - eye = (0, 0, 0) - (xe, ye, ze) = (-xe, -ye, -ze)
側ベクトル
s' = f' x up
F」までxは、なぜ私は理解していません、どうしてxf = S'X F 'なぜないのu' = F 'XS'
は、我々はSを正規化、U'、F」
'
u' = s' x f'
はなぜuの理解do't'
s = norm(s'), u = norm(u'), f=norm(f')
我々は(我々は代数クラスで学んだ)行優先で
R =
s_x u_x f_x 0
s_y u_y f_y 0
s_z u_z f_z 0
0 0 0 1
を
回転行列を構築
翻訳行列:。
T =
1 0 0 x
0 1 0 y
0 0 1 z
0 0 0 1
我々は
M = T*R
View Matrix V = invert(M)
V = invert(T*R) = invert(R)invert(T)
V = transpose(R)invert(T)
transpose(R) =
s_x s_y s_z 0
u_x u_y u_z 0
f_x f_y f_z 0
0 0 0 1
invert(T) =
1 0 0 -x
0 1 0 -y
0 0 1 -z
0 0 0 1
ので
View Matrix V = transpose(R)invert(T)
しかし、OpenGLのドキュメントからを知って、Fの変更は
回転を-fします変更我々は負のを楽しみにベクトルを変更する必要がある理由
R =
s_x u_x -f_x 0
s_y u_y -f_y 0
s_z u_z -f_z 0
0 0 0 1
を以下に私は理解しないでください。