步履蹒跚

知其然,知其所以然 - real-time rendering.
posts - 85, comments - 172, trackbacks - 0, articles - 0

难道真的是RedBook错了?

Posted on 2004-12-24 09:41 Pointer 阅读(411) 评论(0)  编辑 收藏 所属分类: 开发随笔
多谢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错了?


标题  
姓名  
主页
Email (博主才能看到) 
验证码 *  看不清,换一张 [登录][注册]
内容(请不要发表任何与政治相关的内容)  
  登录  使用高级评论  新用户注册  返回页首  恢复上次提交      
"五向定位"职业成长路线公开课(上海、南京、大连)
Google站内搜索


相关链接: