博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
法线从object space到eye space的转换((normal matrix)
阅读量:6082 次
发布时间:2019-06-20

本文共 839 字,大约阅读时间需要 2 分钟。

  对于顶点来说,从object Space转换到eye space, 使用model-view矩阵就好了.那么顶点的法线是否也可以直接使用model-view矩阵转化?

  通常情况下是不行的.

  如下两张图是顶点的tangent和normal向量使用m-v矩阵从object space到eye space的变换:

  >>>>>>>>>>>>>>>>  

  可以看到在eye-space中,tangent的方向仍符合定义,normal则不再垂直于tangent了.m-v矩阵不适用于normal.

  令T为tangent,MV为model-view矩阵.P1, P2为tangent联系的2个顶点.

  T = P2 - P1

  T' = T * MV = (P2 - P1) * MV = P2 * MV - P1 * MV = P2' - P1'

  因此T'保留了tangent的定义.但对于normal,你也可以找到N=Q2-Q1代表它,但是变换后Q2'-Q1'却不能保证垂直于T'.object space到view space,角度关系被改变了.

  如何求出normal的变换,维持与tangent垂直?假设该变换为G.

  normal与tangent垂直:

  N'.T' = (GN).(MT) = 0

  点积转化为叉积:

  (GN).(MT) = (GN)T * (MT) = (GN)T(MT) =  (NTGT)(MT) = NTGTMT = 0

  注意到NTT为0:

  若GTM = I,则上式成立.因此G=(M-1)T.

  即normal matrix是model-view矩阵的逆矩阵的转置矩阵.

  若model-view矩阵是一个正交矩阵,则G=M.这便是例外情况下normal matrix为model-view矩阵.

  转自:http://www.cnblogs.com/flytrace/p/3379816.html

你可能感兴趣的文章
条款16:成对使用new以及delete的时候应该采取相同的形式
查看>>
0415第七周学习进度条
查看>>
ps 网页配图设计
查看>>
EXTJS布局示例(panel,Viewport,TabPanel)
查看>>
php安装xunserch
查看>>
GCC builtin vector (gcc内建函数)学习
查看>>
高性能的JavaScript--数据访问(1)
查看>>
Fire Game
查看>>
base64编码解码
查看>>
java基础讲解06-----字符串
查看>>
会计的思考(44):史上最富有的会计--洛克菲勒的会计视角
查看>>
宏的写法和特点
查看>>
OC门的工作原理
查看>>
《Spring1之第八次站立会议》
查看>>
关于mysql的初步学习 (一)
查看>>
VB6在win10下的使用经验
查看>>
DB2数据库中得到当前年月日,时分秒的语句
查看>>
IOS第三方地图-百度地图集成
查看>>
swift学习网站
查看>>
DocumentFragments
查看>>