最初物体在模型空间中,通过模型变换改变了物体的位置和朝向物体被变换到世界空间。
按照变换顺序应该先旋转后平移,对于opengl的规则是TR X V。
矩阵T,R都是4X4的T中只有苐4列有效,其他是单位阵的排列R中是前3X3子阵有效,其他是单位阵排列将TR相乘:
可 见,在最后得到的4X4 TR矩阵中等于是把3X3 UVN矩阵填到平移矩陣中,这两个矩阵相乘时互相没有影响对方其实UVN表示坐标系的映射—用(1,0,0)T, (0,1,0)T, (0,0,1)T分别右乘UVN矩阵,得到的列向量正是UVN的3列这就是说三个坐标轴被UVN矩阵变换到世界坐标系中了,而UVN的3列表示的正是 x,y,z轴在世界坐标系下的向量
再加上缩放变换,先看一下R X S :
可见缩放矩阵的作用是分别对三个唑标轴进行缩放这个4X4矩阵,第4列是平移变换3X3部分是缩放和坐标轴变换。因为坐标轴是单位向量所以求3X3每列的模就得到相应的缩放值。
如果是把物体从世界坐标空间变回到模型空间那么逆矩阵就是:
这个4X4的逆变换矩阵就不是没影响啦,第4列是U', V', N'和-T的点积计算这种逆矩陣时要注意,不能直接填-T的!这个逆矩阵是不能直接“填”出来的3X3部分每一行是逆缩放后的坐标轴,第4列是前面矩阵每一列和-T的点积
至於为什么UVN矩阵的逆就是他的转置因为UVN是正交矩阵。坐标轴是一组正交基向量空间中所有向量都可以用这组正交基线性表出。