Hello,大家好,今天给大家带来法线科普四:法线图的故障排除,我是麦狗。这是法线系列的第四部分,但它与其他部分是独立的,可以作为一个独立的部分来看。
之前的三篇链接:
下面是我遇到过的法线图问题的汇编,以及我知道的一些解决方法。
一、在我的模型边缘有“接缝”
当你的UV中的连接面被一个硬边隔开时,就会发生这种情况。每个面都会争先恐后地修改边缘的像素的颜色,大多数时候会有一个接缝,当它影响到我们模型的法线时就会非常明显,产生这些奇怪的线条。
解决办法:如果你分割UV岛,使它们在UV空间中不再相连,每个岛的颜色将保持分离,因为它们不再争夺UV空间。
经验法则非常简单:只要你的模型上有一条硬边,就在你的UV中分离出由它连接的面。
二、我的法线图看起来非常不对,尤其从某些角度看
这个问题的出现有多种原因,让我们来讨论其中一些原因。
1.你正在使用错误的切线空间。我们试图用法线贴图来弯曲你低模上的法线,在烘焙程序中的计算方式可能与你用来渲染模型的程序不同。如果这些计算方式不同,你的法线贴图可能看起来非常奇怪,特别是从某些角度看。
另外,你有可能把世界空间法线贴图当作切线空间法线贴图使用。在这种情况下,请确保你正在烘烤一个切线空间法线贴图,并以此来使用它。
解决方案:
1.总是尝试使用Mikk切线空间基础来计算你的法线图。这是一种标准化的法线计算方式,是为了避免这类问题而制定的。如果你的法线图烘焙程序不能使用Mikk,请尝试使用一个程序,如handplane,在一个切线空间和另一个切线空间之间切换。
2.你在你的法线图上使用了伽马校正:法线图不是带有颜色信息的常规图像。它们携带表面法线信息,并不像彩色图像那样表现。伽马校正是对图像颜色的一种调整,它可以以不需要的方式改变法线图的颜色。要消除您的法线图中的伽马校正,请将您的法线图的颜色空间改为线性/线性颜色/raw,或者在虚幻引擎中取消勾选sRGB选项。
3.你没有把切线空间法线贴图作为切线空间法线贴图使用:确保你的引擎没有把你的切线空间法线贴图作为物体空间法线贴图、凹凸贴图、位移贴图等。
4.你的低模法线在烘焙程序中与你的渲染程序中的低模法线不同:如果你在导出/导入过程中丢失了平滑组/硬边信息,如果你使用的是自定义/加权法线,而你的渲染程序不支持或丢弃了这些信息,就会发生这种情况。
在这种情况下,比较两个应用程序中的低模,如果它们看起来不一样,试着改变导入/导出设置,调整你使用的文件格式(obj文件失去法线信息)和你的程序与自定义法线的兼容性。
三、如何制作一个尖锥体的法线图?
解决方案:你...不需要。你不需要对所有东西都使用法线贴图。尖锥体是一个典型的例子,但还有许多其他地方不需要法线贴图。
我们使用法线图来改变我们的低模法线的法线方向。有时候,我们的法线的方向是完全正确的,不需要任何调整。其他时候,我们的低模的法线是非常弯曲的(比如在尖峰的情况下),高模的细节不能与低模的表面正确对齐。在这些情况下,我只需用这个颜色擦除法线图的细节。
这种颜色是50%的红色、50%的绿色和100%的蓝色,不会改变切线空间法线图的法线方向,所以你可以用它来擦除投影效果不好的细节。
尖锥只是一个例子,说明法线贴图可能无法解决你的问题。重要的是,我们要记住,在有些情况下,法线贴图并不是最好的解决方案,它们是有限的,我们不能期望它们在每一种情况下都能做到我们所需要的。有时候,我们花了很多时间试图让法线贴图发挥作用,而我们可以直接将细节添加到漫反射贴图或低模上,而不依赖法线贴图来解决这个具体细节。
四、我的模型上的细节看起来是颠倒的
这是一个非常普遍的问题,在很多视频游戏中都可以看到,甚至是AAA级游戏。
正如我们在本教程中所看到的,法线贴图是使用纹理的绿色、红色和蓝色通道来改变当光线从我们模型的侧面、顶部和前面射来时的反射情况(请记住这是一个简化的解释,并不是100%准确)。
问题是,有些应用程序认为绿色通道应该显示模型从下面照亮,而有些应用程序认为它应该显示模型从上面照亮。这有时被称为 "法线图的右侧性"。
OpenGL apps(右手,正绿色通道):Blender, Maya, Modo, Toolbag, Unity.
DirectX apps(左手,负绿色通道):3DStudio Max, CryEngine, Source Engine, Unreal Engine.
Substance Painter可以处理这两种类型的法线贴图,并输出这两种类型的法线贴图。
解决方案:反转你的法线图的绿色通道。大多数游戏引擎在纹理中都有反转法线图的选项,或者你可以在Photoshop中手动反转纹理的绿色通道(导航到通道标签,选择绿色通道并按Ctrl+i)。
五、有些部分看起来很平,或者缺少一些细节
当烘焙法线贴图时,想象一下烘焙程序从你的低模表面按照你的低模法线投射射线,直到射线碰到高模并发生弯曲。然后,烘焙程序将这些信息存储到法线贴图中。
这些已经投射出去的光线不能永远地走下去,因为它们可能会撞到你的高模的很远的地方,然后错误地弯曲,所以烘焙程序限制了这些光线的投射距离,有时,这些光线甚至在撞到高模之前就已经停止了。在这种情况下,我们就会失去细节,我们的法线图就会有平坦的颜色区域。
解决方案:我们必须控制烘焙距离。
1.有些程序只会寻找你的低模外面的细节,而忽略你的低模 "里面 "的东西(尽管大多数现代烘焙师会从两个方向寻找)。在这种情况下,调整你的模型,使低模完全适合你的高模内部。
2.其他程序,如Max会使用一个包裹器cage,一个你可以修改的低模的 "挤压 "版本,以精确控制烘焙过程的极限。
3.其他程序让你用一个数字来设置烘烤距离(Substance Painter中的最大正面和背面距离)。
你也可以尝试让低模和/或高模更加相似,这样射线就可以在你的模型中到处获得细节。另一个选择是使用不同的cage距离烘烤两个法线贴图,并将它们混合在你的纹理的不同部分。不过,一些法线贴图纯粹主义者可能会对你大喊大叫。
六、我的法线图有扭曲的细节
这是一个非常常见的问题。它发生在我们的低模法线与高模细节不能正确对齐时,所以它们看起来是弯曲的(实际上,如果你从顶点法线方向看,它们是完全对齐的),这通常是因为你有一些面形成一个极端的角度。
解决办法:
1.通过增加一个斜面来软化你的极端角度。
2.将你的极端角度的边缘转换成硬边缘/将面分割成不同的平滑组。
3.使用自定义法线/使用加权法线。
七、我的法线图看起来有像素化或有带子
Earthquake(又称法线图之神)在这里对这个问题写了一个非常好的解释。
如果你的低模和高模非常相似,你的大部分法线图都会有基本的法线图颜色,在你的低模和高模不同的地方会有不同的颜色。
如果我们有相反的情况,你的低模和高模有很大的不同,法线图将有更多的颜色种类,渐变将开始出现。
这些软梯度很麻烦,因为我们需要大量的颜色来表示它们,而压缩纹理的最常见方法是基于减少颜色的总数。
解决方案:
1.让你的低模与高模更相似:这样一来,法线贴图要做的工作就少了,而且它看起来会与第一张图片更相似,避免了这些大而软的渐变。修改你的低模的法线,使它们与高模更好地对齐,也会有帮助。
2.使用16位法线贴图:默认情况下,大多数图像使用8位颜色深度。这意味着你的纹理的每个颜色通道可以使用0到1之间的8个不同的值。当你考虑所有3个颜色通道时,这给我们提供了256种可能的颜色。
当我们有软梯度时,我们可能会在我们的模型中看到带子,因为图像没有足够的颜色来表示如此小的颜色变化。
16位图像可以为每个通道使用16个不同的值,这意味着有多达65536种可能的颜色。这意味着软梯度的范围要大得多。请注意,16位图像的尺寸比8位大(因为它们携带更多信息)。另外,有时16位图像有alpha通道,被称为24位图像。
也有bit深度更高的图像,但它们不用于法线图,因为16 bit已经足够了。
使用抖动dithering。我们的纹理中缺乏色彩是一个已经存在了几十年的问题,几十年前出现的一个解决方案是使用抖动dithering:这个想法是,我们在纹理中交替使用像素来表示梯度,当你放大图像时,它的效果很好。你通常可以在导出纹理的时候激活它。
确保你的法线图被正确地压缩了:当纹理被压缩时,计算机采取类似颜色的区域,并合并它们来创造一个颜色的 "补丁",减少你的图像中的颜色数量。这对普通图像来说通常是好的,但对法线图来说却很糟糕:不仅破坏了你的梯度,还可能合并你的颜色通道中的信息。有一些专门为法线图设计的压缩算法。确保你的游戏引擎将图像解释为法线贴图(通常在你的纹理资产中选择一个选项将其标记为法线贴图),压缩设置将被自动配置。
八、在我的模型的某些部分有一些可见的像素
显而易见的解决方案是为你的模型的那一部分增加UV岛的大小,或者使用更大的纹理,但让我们看看一些不太明显的解决方案。
以双倍的最终法线贴图分辨率进行烘焙,然后缩小图像的大小:如果你使用的是512x512的纹理,以1024x1024的分辨率烘焙你的法线贴图,然后将图像转换成512x512。这样,你最终纹理的每个像素将从4个像素中获取信息,形成一种 "抗锯齿 "并减少像素化。这对其他烘焙过的图像也是如此,而且你还会保留一个高分辨率的纹理版本,以备以后需要增加某些区域的细节。
注意到在这张图片中,法线图的分辨率是一样的,但是我们用1024分辨率烘焙出来的法线图看起来更加圆润,和高模的法线图相似,因为它在还原过程中储存了一些额外的信息。
注意:在减少你的法线图的大小时,确保你使用Bilinear重采样选项,因为其他重采样选项可能会以意想不到的方式改变你的法线图。
你可以把你的UV岛堆叠在一起,这样他们就可以在你的模型的不同部分使用相同的法线图信息。只要确保你把模型的一边移到UV空间之外的一个单元,这样烘焙程序就不会试图同时从两边获取细节。你可以更进一步,对一些细节使用修饰纹理或贴花,以优化你的纹理使用。
纹理使用像素网格,而像素是方形的。如果你有一些细节形成了一条线,试着将这条线垂直或水平地对齐。这样一来,像素网格和你的纹理细节就会对齐。
九、我的模型是对称的,但法线图看起来是不对称的
当对你的模型应用对称性时,法线方向可能会改变,因为面的连接方式已经改变。有时,这意味着你可以在模型的中心看到一条缝。为了避免这种情况,请确保你的低模法线在中心位置是对齐的,并在需要时调整平滑。
另一个可能的原因是三角测量:当把模型导入游戏引擎时,它们总是被三角测量,有时,这个过程会改变低模法线,在低模面的对角线上会出现一些伪影。为了避免这种情况,在烘焙前对模型进行三角测量,烘焙法线贴图,然后应用对称性修改器。
最后,希望以上的解决方式能对大家产生帮助。
- End -
来源:Thepoly公众号
热门课程
专业讲师指导 快速摆脱技能困惑相关文章
多种教程 总有一个适合自己专业问题咨询
你担心的问题,火星帮你解答今天,我来和大家聊聊,迪士尼动画《海洋奇缘》系列是怎么用Maya软件为他们最新的续集打造获奖动画的。
有哪些听起来高大上、实际上转行同学也能胜任的岗位?试试虚拟现实工程师!
增强现实(AR)和虚拟现实(VR)是当前备受瞩目的创新技术,对相关的增强现实开发、虚拟现实开发、数字孪生开发工程师的人才需求,......
在这个短视频盛行的时代,越来越多的人想要尝试自己进行短视频剪辑,却常常因为缺乏专业知识而无从下手。别担心,今天就为大家带来短视......
今天,我们聊聊皮克斯的《头脑特工队》系列
中国首个AIGC导演共创计划今日正式上线:同学,做导演不要?
中国首个AIGC导演共创计划定于12月6日正式上线。该计划由快手自研视频生成大模型产品“可灵AI”,联合李少红、贾樟柯、叶锦添......
近日,中央广播电视总台《2025年春节联欢晚会》发布官方吉祥物形象“巳(sì)升升”,祝福全球华人在新的一年如意康宁、好事连连。