TangentSpace的法线转换到ViewSpace
来源:互联网 发布:淘宝怎么改评价 编辑:程序博客网 时间:2024/06/06 01:54
图片稍后补上
对于顶点来说,从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相乘是一个向量,向量等于他自己的转置:GN = (GN)T
(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矩阵.
- TangentSpace的法线转换到ViewSpace
- 法线转换
- 法线从object space到eye space的转换((normal matrix)
- 法线从object space到eye space的转换((normal matrix)
- 法线从object space到eye space的转换((normal matrix)
- ray marching shader 2:viewspace 转换 worldspace
- 求三角形的法线
- 法线的颜色
- 法线贴图的生成
- 3D顶点转换和法线转换
- 3D顶点转换和法线转换
- 法线
- 【转载】Shader中为何法线转换要用视图矩阵的转逆矩阵
- UnityShader从入门到放弃(三)将法线的颜色填充给物体
- Unity3D 法线转换与切线空间总结
- 世界空间的法线映射
- 法线贴图光照的演示
- 地形教程 - 法线的计算
- EFFECT C++总结
- EffectCookBook笔记Chapter4-11
- 软件光栅器的设计思想
- "Android 屏幕适配"-Android面试必问"精华技能点"汇总
- disney BRDF代码解释
- TangentSpace的法线转换到ViewSpace
- SHADOWMAP
- Shadow Map ———— PCF(percentage-closer filtering)
- liunx误删文件回复方式
- Shadow Map ———— PCSS(percentage-closer Soft Shadow)
- 如何在CodeBlocks中添加头文件graphics.h
- liunx删除了之后没有释放空间
- 推荐系统大师项亮都来了,就问你约不约?
- 从inotify机制说到FileObserver实现原理