法线贴图中法线值的坐标空间选择

简介:

法线贴图是目前游戏中被广泛使用的技术,通过从贴图采样法线可以表现物体的凹凸,在法线贴图的实现上,有一个重要的问题需要考虑,就是法线贴图上的法线值应该取在哪个空间.


一  模型空间:法线就直接取建模时的模型空间,这是最容易想到的方法。这种方法在runtime的时候,将光线从世界坐标转换到模型的局部坐标,然后在局部空间同每个pixel的采样到的法线做光照计算。这种方法有个最大的缺点就是法线贴图需要的是唯一化的UV(即模型的每个顶点的nv都不能重复,为什么?想象一下即可,模型需要完全展开到发帖上),这意味着法帖的尺寸较大,不能复用,占内存。


二切线空间:首先切线空间的定义,模型顶点处,以顶点的法向为z轴,模型的局部y轴方向为y轴,用他们叉乘出x轴,在用x和z叉乘出新的y。这样建立的坐标系是和这个点的法向相切的,这个空间叫做正切空间,这个坐标系的数值表示称为改点的正切值,通常和位置uv等其他一并放入顶点buff里。切线空间法线的做法是将某点的法线转换到该点的正切空间上,存储正切空间的法线值。因为正切空间的法线表征了相对这点的凸起情况,所以法帖是可以在模型的不同位置重用的,比如可以平铺何以对折,可以某些部位重用。在runtime计算的时候,要讲光线转换到正切空间计算。节省了贴图的内存,但是要附加顶点的正切属性。这是目前较为流行的法线计算方法。

目录
相关文章
|
存储 编解码 算法
凹凸贴图和法线贴图的区别
凹凸贴图适用于一些简单的凹凸效果,而法线贴图则更适合提供更高精度和真实感的凹凸纹理效果
286 1
|
存储 vr&ar 图形学
如何设置3D模型法线贴图?
如何设置3D模型法线贴图?
137 0
|
6月前
|
API C++ 计算机视觉
【opencv3】鼠标框选矩形并显示当前像素点坐标和矩形中心点坐标C++
【opencv3】鼠标框选矩形并显示当前像素点坐标和矩形中心点坐标C++
|
3月前
|
图形学
球体投影到像素空间的大小
球体投影到像素空间的大小
31 0
|
6月前
|
计算机视觉
OpenCV(三十四):轮廓外接最大、最小矩形和多边形拟合
OpenCV(三十四):轮廓外接最大、最小矩形和多边形拟合
468 0
|
6月前
|
计算机视觉
OpenCV(十三):图像中绘制直线、圆形、椭圆形、矩形、多边形和文字
OpenCV(十三):图像中绘制直线、圆形、椭圆形、矩形、多边形和文字
84 0
|
存储 数据可视化 开发者
位移贴图和法线贴图的区别
位移贴图和法线贴图在原理、使用范围、精度和复杂度、生成方式以及存储方式等方面存在差异,开发者可以根据具体需求选择适合的贴图技术。
171 0
|
图形学
Unity 之 获取物体的旋转角正确数值
不管父物体如何设置,都能获取到物体本身旋转角度的正确数值
1060 0
|
计算机视觉
五、OpenCV绘制线、矩形、圆等基本几何形状
通过javaOpenCV中的Imgproc函数进行简单几何图形的绘制
131 0
五、OpenCV绘制线、矩形、圆等基本几何形状
|
存储 图形学 异构计算
Unity3D 法线转换&切线空间
Unity3D 法线转换&切线空间
607 0
Unity3D 法线转换&切线空间