第四排VP Matrix

Chr*_*oph 7 c++ matrix-multiplication glm-math

如果有关于矩阵乘法的问题.存储在View Projection Matrix第四行的信息是什么?我认为旋转和缩放信息存储在上面的3x3矩阵中,然后在第四列中进行转换,最后一个元素设置为1.我很难,因为我得到了我的VP矩阵的以下结果:

当不应用旋转且不进行平移时(注意所有值都被舍入):

0.34 0 0 0
0 0.61 0 0
0 0 -1 -0.2
0 0 -1 0
Run Code Online (Sandbox Code Playgroud)

应用-100的翻译:

0.34 0 0 0
0 0.61 0 -61.73
0 0 -1 -0.2
0 0 -1 0
Run Code Online (Sandbox Code Playgroud)

平移-100,然后在正X轴上旋转30°,然后在正Y轴上旋转180°:

-0.34 0 -3 0
0 0.53 0.3 -53.46
0 -0.5 0.86 49.8
0 -0.5 0.8 50
Run Code Online (Sandbox Code Playgroud)

它看起来不对我.有趣的部分:它有效.那么这条线的信息是什么?

0 -0.5 0.8 50
Run Code Online (Sandbox Code Playgroud)

谢谢你的帮助!

Ken*_*ima 0

对我来说,你的矩阵看起来有点奇怪。通常,第四行将包含齐次坐标系的第四个分量,也就是说,类似的东西[x,y,z]/w需要在整个行上加 1 以进行仿射变换。我猜你的矩阵是有效的,因为第四行中的奇数被分解到3x3矩阵的上部。您是否尝试更改矩阵串联的顺序,例如M'=M1*M0vs. M'=M0*M1。Jim Blinn 在他的 Dirty Pixels 和文章中对齐次坐标给出了很好的解释。

此外,该网站还包含有关齐次变换的很好的演练