Cage的功能就是把作用于cage上使用的平均法线把高模的信息去映射到低模上使用的正常法线。可以看到如果使用软边烘焙法线方向是会根据模型的大小发生变化,也就意味着烘焙是基于法线方向的,结果也会发生变化。而用作cage的平均法线方向没有发生变化。因为平均法线是根据两个面之间的角度去计算。
同时硬边需要断开分离,我们知道法线贴图表达方向是一种方向信息。两个不同方向的信息相交重叠到了一个点上,就会出现法线贴图有一到缝。如果我们把硬边模型的低模边缘分离的话,通过隔开一定距离(edge padding)就可以解决这个问题。简单来说就是给两个uv shell更多的像素。
网页游戏引擎模型法线贴图
尽可能把UV的排列方式做到横平竖直为什么盒子登不上游戏,尤其是在烘焙分辨率比较低的法线贴图时,可能会有锯齿。一般来说可以倒角解决。但如果能从源头规避掉潜在的问题肯定更好。
左侧的图像是具有硬边的模型。这将导致一些严重的问题,可以在黄色和蓝色星星上看到。蓝色区域计算两次常规细节,黄色区域根本不计算。右侧的图像是一个具有平滑法线的模型。这将允许在烘焙法线贴图时更接近细节。所以调整低模的软硬边会改变烘焙的结果。
从上面的内容可以知道,软件基本上是使用的点法线。比如相邻的两个点共用了一个法线,通过算法就会变成软边的效果。如果法线没有互相共用,单独的点都有单独的法线。这样就会有多根法线,就会变成硬边的效果。
在一个不同的坐标空间中进行光照,法线贴图向量总是指向这个坐标空间的正Z轴方向,所有的光照向量都相对于这个正Z轴方向进行变换,而不管最终变换的方向如何。这样我们就能始终使用同样的法线贴图。
世界空间保存的是世界坐标系中的高模法线方向。因此低模取出该点法线就可以直接使用,前提是低模的世界坐标系与高模一致,不能有旋转这样会导致法线方向改变。
模型空间保存的是模型空间坐标系中的高模方向。模型空间是模型的局部3D空间。向上总是向上,向左总是向左。模型可以被旋转和位移,但模型不能有变形。
坐标系有很多种,一般在使用法线贴图的时候会有几个选项,最常用的就是切线空间法线和模型空间法线,当然还有一个比较少用到的世界空间法线。这三个又可以被理解为世界空间坐标系,模型空间坐标系和切线空间坐标系。
法线贴图的RGB通道可以包含X、Y、Z通道的向量数据。红通道控制光线的左右方向X轴,绿通道控制光线的上下方向Y轴。蓝通道模拟模型的深浅Z轴。我们把向量数据值存储在像素的RGB颜色通道上。所以法线贴图表达的是一种方向信息,只存放方向数据。光线可以通过它表面的方向进行计算。
法线是一个方向,我们需要三个不同的变量来读取三维空间中的方向,也就是XYZ。比如我们在XYZ三个轴上都移动一个单位。如果我们绘制出新的向量,我们就有了一个三维的向量坐标。当然我们可以有很多不同的值。不同的值对应了向量中不同的点。
但重要的不是法线贴图是什么颜色。而是了解存储在红绿蓝通道中的数据是怎样的。所以重点是法线贴图并不是由颜色组成的贴图,而是由三个黑白数值贴图,通过通道合成的法线贴图。他们的作用在于用黑白的数值来控制光线的反射角度。
法线贴图使用RGB通道来储存信息。一个单一的白色像素由RGB三个不同的通道组成,也就是原色相加。每个颜色通道的取值范围在0到1之间(8位颜色的值是0到255)。
物体表面产生明暗变化的直接原因就是光线照射角度的不同,而法线就是模拟出高面数模型的光照信息。而光照信息最重要的就是光入射方向与入射点的法线夹角。法线就是记录了这个夹角的相关信息。
法线贴图是使用深度或表面变形为模型添加凹凸(立体)的效果,但不会让网格产生真实的变形。是一个2D图像纹理,它可以改变光线对网格的影响。
那么在3D空间中,如果曲面是平直的,那么法线就垂直于该平面的方向,所以这个垂直于平面的线或垂直方向就变成了法线。曲面是弯曲的,法线将是在某个点上与曲面相切平面垂直方向的直线。那么这和2D曲面上一样会在曲面上选择一个点,然后画个切面代替切线,这个平面刚好接触到曲面上的点,这就是我们的切面。然后一条代表方向的垂直线就变成了法线。
在2D空间中一个曲面可以是平面,对于一个平面来说法线是一条垂直于平面的线或者表示这个曲面的方向。也就是垂直于这个表面的线,代表了平面的方向也就是平面的法线。对于曲面,法线将是一条垂直于曲面切线的直线。所以定义法线是垂直于曲面切线接触点的直线。
在计算机图形学的发展过程中,三维建模软件开始支持高模多边形网格。而游戏引擎中和我们玩的游戏设备不能支持高模,这就是引入法线贴图技术的原因。在这项技术中,我们读取高模的法线基于顶点的纹理坐标,然后将其烘焙到2D法线纹理上。然后把法线贴图用于低多边形网格以模拟照明,在游戏中它看起来像一个高模。所以如果场景中没有灯光,我们的法线贴图就无法正常显示。
人之所以能分辨立体与平面是基于光影(明暗关系)。学习美术的同学都知道素描的基础,物体的三大面五大调。物体受光后三大明暗区域:亮面、灰面和暗面。五个调子是指:亮色调、灰色调、明暗交接线、反光、投影。那么电脑绘制的过程也是一样的。那么基于这个理论我们就可以通过在贴图上做一些明暗变化去模拟一种假的立体效果。
法线比较难用简单几句话说清楚,从制作法线贴图到在着色器里面如何使用都有了严格的标准。本文会涉及到一部分图形学的内容,但不会深入展开。比如TBN(Tangent Binormal Normal)矩阵。而是用更为通俗易懂的语言去阐述法线贴图的原理以及工作方式,侧重于美术从业者阅读。其中使用了的书籍以及博客等作为参考会在文章末尾列出。
当开始输出时就意味着需要更多的输入,继续复习总结归纳提炼。还是保持着之前的思路,把程序的语境转化成美术也能够理解的语境去整理。
使用法线贴图,我们还可以增加任何纹理的细节水平:布料、沙子、石头、砖块、碳等等。您可能已经在《战地风云》系列中看到过法线贴图的使用:这就是 DICE 使衣服和污垢看起来如此逼真而几乎不影响性能的原因。此外,法线贴图可以模拟电缆、铆钉、按钮和膛线等小细节。
使用法线贴图的最佳方法是向纹理添加细节。例如,我们有一个石墙纹理。当它在没有法线地图的情况下被照亮时,它看起来很无聊和扁平,就像一堵彩绘墙。但是当我们添加匹配的法线贴图时,感觉每块石头都有它的体积。虽然墙仍然是一个带有纹理的大平面多边形。
现在我们可以将高多边形模型的法线贴图放在低多边形模型上。现在,游戏引擎将反射法线地图所讲述的光线。对我们来说,这意味着我们可以使用平面多边形代替高多边形模型,并为游戏玩家提供更好的性能优化。
首先,我们需要制作按钮或类似多边形的东西——一个高多边形模型。需要了解光线将如何反射到它上面。然后我们烘焙一个法线贴图:从所有使用的多边形中写出法线角度。
它之所以有效,是因为 3D 引擎不会 100% 复制现实生活中的物理特性,而是模拟它。如果我们取一个平面并向其添加自定义法线贴图,我们可以通过改变与该平面的光相互作用来模拟体积。例如,在不添加真实多边形的情况下,在平坦的衣服上制作一个 3D 按钮的错觉。
我们了解到,简单的法线贴图可用于平滑多边形之间的边界。但是,我们也可以在单个多边形上弯曲法线,以在多边形是平面时创建 3D 对象的错觉。
但是,如果我们将法线贴图与立方体一起使用,它会得到一个有趣的结果:法线贴图将使边缘变得平滑。为了避免这种情况,3D 建模人员设置了平滑角度参数,这些参数告诉 3D 引擎需要在哪里平滑法线,以及在哪里保持法线不变。
下面是两个多边形的示例,其中包含一个平面法线贴图。如您所见,法线垂直于它们所在的曲面。但是,嘿,我们使用的是计算机,而不是矩形乐高积木。让我们让计算机平滑每个多边形中心之间的过渡。因此,计算机将制作一个法线贴图:
让我们取一个多边形,并在多边形的中心添加一条垂直线——法线。现在,当光线落在多边形上时无忧手游盒子下载安装,游戏引擎可以测量光线和法线之间的角度差。我们知道光线的反射角度与它们落下的角度相同,它是对称的。
但是光照贴图不能显示表面的体积和纹理,只能根据角度改变光强度。光照贴图烘焙使用均匀发光的纹理,因此光线始终垂直于表面。因此,让我们教表面以不同角度反射光线。
为了显示光线如何从模型上落下和反射,我们使用了烘焙光照贴图。光照贴图显示当光线落在纹理上时纹理的外观。例如,游戏中的手电筒使用光照贴图:游戏引擎只是将手电筒的光照贴图覆盖在纹理上。
由 3840 个多边形组成的球体看起来又好又圆。但是这些多边形仍然可见,因为闪电落在球体上。你到处都可以看到这些边缘。不三国霸业单机安卓版游戏,我们不能弯曲多边形,它们可能只是平面。
多边形就像乐高积木:如果你有十几块积木,你只能制作一辆小型玩具车,但如果你有数千块积木,你可以制作一个 1:1 的汽车复制品。因此,要对详细的 3D 对象进行建模,您只需要添加数千个多边形。
3D 对象由多边形组成:平面、正方形和三角形表面。多边形非常适合对书籍、房屋和 Minecraft 方块等简单对象进行建模。但是,如果你想制作一个苹果甚至一个球体的详细模型,粗糙的多边形边缘会让它看起来很糟糕。
专题: 三国版游戏单机 单机游戏三国杀 单机三国棋游戏上一篇手机淘宝如何购买网页游戏
下一篇什么网页可以查看游戏记录