2016-10-02 135 views
0

我想分析我的4*4 ModelView Matrix的每个组件。了解ModelView矩阵

我开始知道ModelView Matrix的起始3*3存储旋转。 enter image description here

如果我想我的对象有一个no rotation with respect to camer所以我的模型视图矩阵看起来像这样

enter image description here

如何改变我的模型视图矩阵,如果我想有NO Translation or Scaling?任何人都可以解释这背后的数学。

回答

1

这个问题比你意识到的要难一些。 虽然我们可以确定矩阵的元素有助于X轴缩放,Y轴缩放,旋转,平移等,但是随着变换的迭代应用,这些变得混杂起来。为了取回组件,你必须对矩阵进行QRT分解,这将会超出你的水平(并不是很多,但是当你对矩阵的基本理解仍然有点不稳定时,这并不是你期望理解的) 。

2

左上角的3×3定义了一个坐标系的基向量。这不仅仅是旋转,还包括缩放,剪切和类似的东西。想象一下你可以伸展三个橡胶腿,并可以朝任何方向倾斜。这是左上角的3×3。如果要旋转坐标系,则将标记为X,Y,Z的树腿分别旋转到您希望由其他坐标系中的该名称标记表示的方向。如果你想扩展事物,你可以伸展每条腿。如果你让它们不垂直的东西被剪断。这就是它的全部。

但是,因为所有内容(除了翻译)都混合在左上方的3×3部分中,所以从中“提取”单个转换并不是微不足道的。要遵循的粗略步骤如下:

  1. 主轴变换Principal axis theorem以查找可能已应用的任何各向异性缩放的主轴。
  2. 分解成剪切和旋转部分。

翻译恰好坐在最右边一列。最下面的一行必须是[0 0 0 1],以便它上面的行中发生的事情以所需的方式工作。

+0

Actuall我试图解决这个问题http://stackoverflow.com/questions/39814688/rotating-an-object-around-an-axis?noredirect=1#comment66921299_39814688 – user6250837

+0

你能指导我在这... – user6250837