难道真的是RedBook错了?

多谢CSDN上happy__888([顾问团]寻开心)的热心指点,明白了法向量的矩阵变换方式和顶点的矩阵变换方式是不同的。以前确实是没有注意过这个问题。
心蓝兄有一篇文章介绍了这一点:http://xreal.51.net/Game/NormalMatrix.htm

推导过程见上文,最后的结论是:
假设矩阵M为顶点Vo的模型视图变换矩阵,No为顶点Vo的法线。Ve为进行过模型视图变换后的眼坐标系下的顶点坐标,Ne为Ve的法线。那么有:

Ve = M * Vo;
Ne = No * M-1;

这样就可以从另一个方面理解RedBook上的通过GL_EYE_LINEAR模式自动生成纹理坐标的操作的几何意义。

T = (P * M-1) * VT
即:把世界坐标系下的平面P变换到眼坐标系中,然后再求同在眼坐标系中的顶点V到变换后的平面的距离。

但这样的效果上和GL_OBJECT_LINEAR就又是一样的了:纹理坐标同顶点的世界坐标有关而与眼坐标无关。

实际上也可以应用矩阵乘法的结合率以另一种几何变换方式得到相同的结论:
T = (P * M-1) * VT = P * (M-1 * VT);

难道真的是RedBook错了?

posted @ 2004-12-24 09:41  Pointer  阅读(662)  评论(0编辑  收藏  举报