法线向量扰动、副法线

3D数学 学习笔记(9)凹凸映射(bump mapping)和切线空间(tangent space)

凹凸映射和切线空间在图形学中也是用的较多的,下面给大家介绍下凹凸映射和切线空间,并和大家说下凹凸映射和切线空间的区别和优缺点。
在这里插入图片描述
凹凸映射(bump mapping)
用于修改模型表明的发型,可以模拟出模型的“凹凸感”,但不改变顶点位置。
有两种方法:

  1. 高度纹理(高度映射,height map):模拟表面位移(displacement),得到修改后的法线值。
  2. 法线纹理(法线映射,normal map):直接存储表面法线。

高度纹理
使用高度图,表示模型表面的高度,只可以直观看出模型表面的凹凸情况。缺点是计算更复杂了,需要计算像素的灰度值。

法线纹理
存储表面的法线方向。法线方向分量范围在[-1, 1],像素的分量范围在[0, 1],要做一个映射。
在这里插入图片描述

切线空间

每个模型的顶点都有属于自己的切线空间,原点就是顶点本身,z轴为法线方向,x轴为切线方向,y轴就是法线和切线的叉积,也称副切线(bitangent)或副法线。可以理解为每个点法线的扰动方向。

左:模型空间下的法线纹理。右:切线空间下的法线纹理。
在这里插入图片描述

颜色生成原因:

  • 模型空间:每个点存储的法线方向都是不一样的,如果有n(0, 1, 0),经过映射后就对应RGB(0.5, 1,0.5)浅绿色。
  • 切线空间:每个点法线方向都是z轴方向,即(0, 0, 1),对应RGB(0.5, 0.5, 1)浅蓝色。

优缺点对比
模型空间
实现简单,直接可得到法线。生成简单。
可以提供平滑的边界(法线都在同一空间,可以直接插值)。
切线空间
自由度高,可以重用法线纹理。因为模型空间下只能对应创建时的模型,而切线空间法线是指相对与法线的,放在不同网格也可以得到合理的结果。
可进行uv动画(控制纹理的uv坐标)。
可压缩。因为z方向是确定的,可以直接存xy,再推出z方向。

参考

https://gameinstitute.qq.com/community/detail/121062

猜你喜欢

转载自blog.csdn.net/aoxuestudy/article/details/120672561