首页 > 个性签名 正文
【空间贴图】法线贴图的原理和工作方式

时间:2023-03-03 23:11:38 阅读: 评论: 作者:佚名

开始输出的时候意味着需要更多的输入,继续复习摘要提取。仍然保持以前的思维方式,将程序的脉络转换为美术也能理解的脉络,进行整理。

法线从制作法线贴图到如何在明暗器中使用,很难用简单的几句话来说明,法线有严格的标准。(阿尔伯特爱因斯坦,Northern Exposure,《艺术》)这篇文章涵盖了一些图形学的内容,但不会深入展开。例如,TBN(Tangent Binormal Normal)矩阵。反而用更通俗易懂的语言解释法线贴图的原理和工作方式,重点放在美术工作者的阅读上。其中使用的书和博客等作为参考,在文章末尾列出。

1简介

人之所以能分辨立体和平面,是基于光影(明暗关系)。学美术的同学都知道素描的基础,物体的三大面五大曲。物体受到光后的三个主要着色区域:亮面、灰面和暗面。五个音调是明亮的色调、灰色色调、阴影交接线、反射和投影。那么,计算机绘图的过程也是如此。基于这个理论,我们可以在地图上做出明暗变化,模拟假立体效果。

在计算机图形开发过程中,3D建模软件开始支持高模多边形网格。游戏引擎和我们玩的游戏设备不支持高模型。这就是为什么引入法线贴图技术。在此技术中,高模式法线基于顶点的纹理坐标,然后烘焙到2D法线纹理。然后,将法线贴图用于低多边形网格,以模拟在游戏中看起来像高模块的照明。因此,如果场景中没有灯光,法线贴图将无法正确显示。

什么是 2法线

在二维空间中,曲面可以是平面;对于平面,直线表示与平面垂直的直线或曲面的方向。与此曲面垂直的直线表示平面的方向,即平面的法线。对于曲面,法线是垂直于曲面切线的直线。因此,定义法线是垂直于曲面相切接触点的直线。

这样,如果3D空间中的曲面是平的,则法线垂直于该平面,因此垂直于该平面的直线或垂直方向将成为法线。曲面将弯曲,法线将成为在一点与曲面相切的平面垂直的直线。然后,与二维曲面一样,在曲面上选择点,然后绘制剪切平面而不是相切。该平面与曲面上的点接触。这就是我们的切割平面。然后,指示方向的垂直线成为法线。

3法线贴图原理

法线贴图是使用深度或曲面变形向模型添加凹凸(立体)的效果,但网格不会产生实际变形。是2D图像纹理,可更改灯光对网格的影响。

对象曲面明暗变化的直接原因是光线照射角度的差异,法线是模拟具有大量面的模型的照明信息。照明信息最重要的是入射方向和入射点的法线角度。法线是记录有关此角度的信息。

j2lq49k0/730fb46010454e98b209893257dc7637?_iz=31825&from=ar;x-expires=1706863108&x-signature=bpSeh7OYjjG2kyjKUIn%2FtoHNkSM%3D&index=5" width="350" height="350"/>

4法线贴图储存

法线贴图使用RGB通道来储存信息。一个单一的白色像素由RGB三个不同的通道组成,也就是原色相加。每个颜色通道的取值范围在0到1之间(8位颜色的值是0到255)。

但重要的不是法线贴图是什么颜色。而是了解存储在红绿蓝通道中的数据是怎样的。所以重点是法线贴图并不是由颜色组成的贴图,而是由三个黑白数值贴图,通过通道合成的法线贴图。他们的作用在于用黑白的数值来控制光线的反射角度。

法线是一个方向,我们需要三个不同的变量来读取三维空间中的方向,也就是XYZ。比如我们在XYZ三个轴上都移动一个单位。如果我们绘制出新的向量,我们就有了一个三维的向量坐标。当然我们可以有很多不同的值。不同的值对应了向量中不同的点。

法线贴图的RGB通道可以包含X、Y、Z通道的向量数据。红通道控制光线的左右方向X轴,绿通道控制光线的上下方向Y轴。蓝通道模拟模型的深浅Z轴。我们把向量数据值存储在像素的RGB颜色通道上。所以法线贴图表达的是一种方向信息,只存放方向数据。光线可以通过它表面的方向进行计算。

向量

向量(也称矢量)是指具有大小(magnitude)和方向的量。在游戏中3D向量既可以表示一个方向,也可以表示一个点。

5三个空间坐标系

坐标系有很多种,一般在使用法线贴图的时候会有几个选项,最常用的就是切线空间法线和模型空间法线,当然还有一个比较少用到的世界空间法线。这三个又可以被理解为世界空间坐标系,模型空间坐标系和切线空间坐标系。

模型空间法线

模型空间保存的是模型空间坐标系中的高模方向。模型空间是模型的局部3D空间。向上总是向上,向左总是向左。模型可以被旋转和位移,但模型不能有变形。

世界空间法线

世界空间保存的是世界坐标系中的高模法线方向。因此低模取出该点法线就可以直接使用,前提是低模的世界坐标系与高模一致,不能有旋转这样会导致法线方向改变。

切线空间法线

在一个不同的坐标空间中进行光照,法线贴图向量总是指向这个坐标空间的正Z轴方向,所有的光照向量都相对于这个正Z轴方向进行变换,而不管最终变换的方向如何。这样我们就能始终使用同样的法线贴图。

6烘焙法线概念

基本上来说法线烘焙的好与坏最主要需要考虑三个大的方面。

软硬边(平滑组)

从上面的内容可以知道,软件基本上是使用的点法线。比如相邻的两个点共用了一个法线,通过算法就会变成软边的效果。如果法线没有互相共用,单独的点都有单独的法线。这样就会有多根法线,就会变成硬边的效果。

左侧的图像是具有硬边的模型。这将导致一些严重的问题,可以在黄色和蓝色星星上看到。蓝色区域计算两次常规细节,黄色区域根本不计算。右侧的图像是一个具有平滑法线的模型。这将允许在烘焙法线贴图时更接近细节。所以调整低模的软硬边会改变烘焙的结果。

UV

尽可能把UV的排列方式做到横平竖直,尤其是在烘焙分辨率比较低的法线贴图时,可能会有锯齿。一般来说可以倒角解决。但如果能从源头规避掉潜在的问题肯定更好。

同时硬边需要断开分离,我们知道法线贴图表达方向是一种方向信息。两个不同方向的信息相交重叠到了一个点上,就会出现法线贴图有一到缝。如果我们把硬边模型的低模边缘分离的话,通过隔开一定距离(edge padding)就可以解决这个问题。简单来说就是给两个uv shell更多的像素。

Cage

Cage的功能就是把作用于cage上使用的平均法线把高模的信息去映射到低模上使用的正常法线。可以看到如果使用软边烘焙法线方向是会根据模型的大小发生变化,也就意味着烘焙是基于法线方向的,结果也会发生变化。而用作cage的平均法线方向没有发生变化。因为平均法线是根据两个面之间的角度去计算。

  • 评论列表

发表评论: