我想分析4*4
ModelView Matrix的每个组件。
我开始知道ModelView Matrix的起始3*3
存储了旋转。
an example 'Default Payload'
如果我希望我的对象有no rotation with respect to camer
,那么我的ModelView Matrix就像这样
如果我想要NO Translation or Scaling
,如何更改我的ModelView Matrix?任何人都可以解释这背后的数学。
答案 0 :(得分:2)
左上角3×3定义坐标系的基矢量。它不仅仅是旋转,还包括缩放,剪切和类似的东西。想象一下三个橡胶腿,你可以伸展和任何方向的角度。这就是左上角3×3的作用。如果要旋转坐标系,则将标记为X,Y,Z的树腿旋转到您想要由另一个坐标系中的该名字对象表示的方向。如果你想缩放东西,你可以伸展每条腿。如果你制作非垂直的东西会被剪掉。这就是它的全部内容。
然而,因为一切(除了翻译)混合在左上角3×3部分中,从它“提取”单个变换并不是一件容易的事。要遵循的粗略步骤是:
翻译恰好位于最右边的列中。最下面的行必须是[0 0 0 1],以便在它上面的行中发生的事情以所需的方式工作。
答案 1 :(得分:1)
问题比你意识到的要困难一些。 虽然我们可以确定矩阵的元素对x轴刻度,y轴刻度,旋转,平移等有贡献,但是当迭代地应用变换时,这些元素会混淆。要重新获得组件,你必须对矩阵进行QRT分解,这将超出你的水平(不是很多,但是你不能期望理解的东西,而你对矩阵的基本理解仍然有点不稳定) 。