纹理,或成为Surface Artist所需要了解的知识。 第5部分。材料系统

在教程的前面部分中,我们介绍了如何创建纹理。 更准确地说,所有事物的内在外观(如Yoooriii在第4部分的评论中所述)。 术语已放置到位-像素和纹理像素。 拆除了一些扫描和网格模型,PBR和材料。 最后,我们在“纹理艺术家”的专业下划了一条界线。 看来您已经可以停止并开始工作了。

第1部分。像素 在这里
第2部分。 此处的 蒙版和纹理
第3部分。 此处的 PBR和材料
第4部分。模型,法线和扫掠 在这里
第5部分。材料系统 -您已阅读。

入门块


在本部分中,我们将不做任何练习,因为第五部分的结果非常大。 有关如何在虚幻引擎4中创建和自定义材质的所有信息,请参见Flakky 教程和其他教程 。 现在,我们的任务是尽可能详细地分析该理论(如果缺少任何信息,请告诉我)。

2017年,技术艺术家Harrison Moore在蒙特利尔虚幻开发日演出。 他谈到了他和他的团队使用哪种纹理来确保游戏Paragon具有非常漂亮的材质。 以下是他的演讲的链接。


事实是,我们正在创建一个VR项目,其中纹理的质量非常重要。 例如,在为大型对象(墙壁,地板,大型橱柜,盒子等)创建纹理时,我们遇到了以下事实:标准方法提供了非常像素化的纹理,以及使用硬边和法线贴图创建的倒角(我们进行了分类4个部分),当物体靠近他们的眼睛时,它们看起来像是像素化和可怜的,以至于我们不得不增加纹理的大小来解决此问题。 最终,为了至少达到所需结果的近似值,我们开始铆钉8k纹理。 事实证明,在主要的大型对象上创建8k纹理非常昂贵,但在视觉上令人满意(最大)。

图片

起初,一切进展顺利。 铆接了纹理,质量正常,但是将具有此类纹理的对象组装成场景后,我们意识到这是行不通的。 纹理的体积非常大-为了使我们的项目能够与最终用户一起使用,要求视频卡至少具有3 GB的RAM。 一个这样的纹理的大小为6700万像素。 即使已经完全计算出这些纹理并烘焙出纹理,但驱动所有纹理像素并将它们显示在屏幕上仍不需要视频卡具有很小的计算能力。 但是我们知道,要完全实施PBR,我们不需要1个纹理(也不需要1个通道),但至少需要9个通道。
结果,我们得到的场景中纹理数量巨大,需要进行最疯狂的计算,并且FPS从我们需要的帧数到90到45失败。很明显,为什么几乎所有游戏都只使用BaseColor纹理,而其他游戏实际上却不连接。 例如,VR的Torn游戏:

图片

大多数(我想说90%)的对象都是简单的-这种材料完全由BaseColor组成。 没有法线贴图,没有金属或粗糙度。 不幸的是,网络上可用的游戏屏幕截图不允许您显示此方法的缺点,反之亦然,屏幕快照通常显示所有卡牌,并且图片非常漂亮。 但是,我们不要谈论这个游戏。

首先,我忽略了演讲,我在上面插入了视频。 更确切地说,我浏览了一下并认为这似乎是一个不错的方法,但是我们并没有改变团队中创建对象和纹理的流程,因为这将需要足够的时间来掌握,介绍和发展技能。 但是,面对材料质量问题,我决定重新考虑纹理化方法。
我们开始弄清楚哈里森·摩尔提供的服务。

形成“表面艺术家”概念的前提


等等。 Epic Games的开发人员开发了一种有趣的纹理化方法(更确切地说,是关于它的讨论)。 他们采用了在Substance Painter(或任何其他纹理处理程序)中创建纹理的方法,并将纹理的烘焙从程序直接转移到引擎(更精确地说,此过程可以称为材料的过程生成)。 也就是说,现在已经在引擎本身中执行了烘烤纹理的计算,并且没有创建纹理,而是预先进行了编译。 编译结果(着色器)以引擎可以理解的格式存储,并且当显示带有此着色器的模型时,结果将叠加在模型上。

如何运作?

在引擎中加载大小为1k的任何纹理(材质)的纹理。 也就是说,标准集是“基础颜色”,“ ORM”,“法线贴图”。 此类纹理加载有10-20个片段。 例如,金属的4个品种,皮革的5个品种,塑料,木材的几个品种等。 所有这些都合并到着色器功能中,以便您以后可以轻松连接它们。 1张发票= 1个功能。

图片

图片

之后,它们为我们需要的对象创建蒙版。 在这里,Substance Painter再次变得很有必要-借助它,可以在对象上创建蒙版。 也就是说,您需要指定应在对象的哪些位置显示哪些纹理,然后在对象的正确位置绘制所需的纹理:

图片

图片

在屏幕截图上方,您可以看到如何将飞行机器人涂成鲜艳的颜色。 简要地说-专门这样做是为了查看哪些遮罩位于何处。 第二张屏幕截图显示了其中一个蒙版。

这些遮罩将上传到引擎。 他们还分别为每个对象创建一个法线贴图,以平滑倒角,借助倒角显示一些小的技术元素,并将其加载到引擎中。

接下来,创建一个新的着色器(材质),在其中添加创建的遮罩。 必要的着色器功能会添加必要的纹理(例如,生锈的金属,塑料和新鲜金属),然后编写代码(几乎不需要编写任何代码,毕竟所有Epic Games尽了一切可能使我们工作起来都很方便),其中我们指出了如何正确混合蒙版,在哪个蒙版下显示哪些纹理,如何显示污垢纹理等。

组装完所有内容后,将编译着色器并显示结果。

好吧,看来这件事-毕竟,可以在Painter中完成同一件事,并获得现成的结果。 但是,事实并非如此。 瓷砖是罪魁祸首。

有关平铺的一些知识


平铺(从字面上看-平铺,平铺)-这是纹理的重复,就好像平铺相比小于纹理化(UV)的区域一样。 如果纹理的尺寸较小,则必须填充在UV空间中形成的间隙。 显卡会根据需要开始多次复制,以缩小差距。 拼贴以一种有趣的方式工作-视频卡计算每个纹理纹理(例如1k大小)。 而对于重复的零件,由于已经存在,因此不会进行任何计算。 视频卡仅复制并粘贴数据。 复制粘贴。 而且,它几乎不影响性能。 即使您进行10,000 * 10,000重复的平铺(并以我们的示例中的数字表示约100亿像素重复一分钟),这也不会对资源造成任何影响,因此您的项目将不会停止一秒钟。

继续


也就是说,我们现在可以收取发票。 在工厂的正确位置显示,并精确地复制(重复)以获得所需的质量。 由于平铺,纹理像素的大小大大减小,从而提高了纹理本身的质量。
这种方法的缺点是数学-现在,要在对象上显示纹理,着色器需要多次计算各种操作才能显示最终结果,而不是标准的3种纹理,引擎需要考虑遮罩,混合法线,颜色等。

实际上,计算中的损失是平均的:

  1. 您可以并且将重用发票功能。 一次次地在其他物体上。 也就是说,计算总数将相同,但是纹理贴图本身的数量有时会更少。 您不再需要为每个对象创建新的纹理,只需定义纹理区域并使用相同的纹理即可。
  2. 您可以创建较小的蒙版尺寸,例如128 x 128像素。 这将计算减少了数百倍。
  3. 您可以随意平铺纹理,从而获得使用标准纹理方法无法实现的结果。
  4. 通过添加其他计算和蒙版,您可以使用单独的通道,例如,使粗糙通道的平铺比彩色贴图小,从而破坏了图像的视觉重复并创造了整个表面的独特感。
  5. 您可以以使纹理函数相对于对象在世界空间中的坐标移动的方式来施加纹理函数-这样,您可以将两个相同的对象使用相同的着色器放置,但是它们看起来都是唯一的。

应该理解,这种方法并不适用于所有平台。 例如,由于计算的复杂性,手机游戏已经很难以这种方式组装。

标准纹理化方法和新材质层系统(如Epic Games的家伙称为这种方法)的缺点最简单的例子是Final Fantasy15。为了提高图片质量,他们发布了4k纹理的包装。 什么是4K纹理? 每个通道有1600万个texel错误计算。 并且如果有9个用于PBR标准?
在这里,材料层系统的功能开始尽可能地发挥作用。 要使用纹理在角色上收集衣服,使用3-4个纹理(可能更多)就足够了。 总的来说,它将小于标准的高分辨率纹理,性能大约处于同一水平,并且可以通过平铺来控制质量并将其设置得更高。

物料层系统


来自Epic Games的家伙走得更远,展示了“材料层系统”的测试版,该版本没有引起大肆宣传,但事实证明它相当容易出错。
在此视频中可以看到她的工作示例:


基于该系统尚不适合工作这一事实,我们熟悉了它,很高兴有一天可以完成它,但是现在我们拒绝使用它,而是切换到手动创建着色器,直接在着色器中指定每个蒙版。
结果,我们开始尝试和试验。

我们如何摆脱法线贴图


刚开始,使用纹理的过程并不是很顺利-我们用纹理实现了理想的效果,但是我们仍然受到法线贴图的极大限制,因为需要为每个对象生成该贴图,以创建漂亮的倒角感觉。 尽管我们创建了高质量的纹理,但在接近相机对象时,即使使用8k的纹理,斜角仍然有很多不足(我记得我们正在开发一个VR项目)。 但是8k纹理是非常大量的纹理像素。 如此之大,以至于2套完整的纹理将FPS压缩到最多45帧(对于VR,您需要90帧)。

然后我们熟悉了创建斜角的方法,我在第四部分中对此进行了简要介绍。 在对象模型上创建倒角使几乎完全摆脱法线贴图成为可能。 是的,我们增加了多边形模型,但不超过20-40%,而斜角的质量却飞涨。

这种方法使我们摆脱了另一个问题-边缘接缝。 在模型上创建倒角,不再需要沿硬边切割模型。 原则上,模型上没有硬边,所以岛变大了,它们开始包含较大的空间,现在我们在模型上应用纹理时,模型上几乎没有接缝。

这并不意味着现在在所有对象上都没有单独的法线贴图。 简而言之,大多数标准对象都可以在模型中使用倒角,而无需其他法线贴图。

最终,逐渐减少蒙版,增加着色器并使之复杂化,我们开始创建复杂的材料,使我们可以对非常漂亮的表面进行纹理处理:

图片

地板上方包含2个纹理-铁带-32x32像素和六边形-32x32像素。 该材料的公式非常复杂-运算量很大-大约295条指令。 对于普通材质,这样的着色器将需要更多的计算能力,但每个通道仅使用32x32 = 1024纹素。 9个通道= 10k纹素,在计算此材质+蒙版128x128时必须考虑在内。 大量的操作由少量的纹理像素来平整以进行处理。 结果,我们得到了一个非常快速便捷的着色器的美丽画面。
由于使用了遮罩,对平铺和通道的有效控制,您可以创建非常复杂的着色器,以生成漂亮的材质,同时实际上不占用资源。

例如,目前我们为整个项目使用约10-15个纹理(以及使用标准方法的几个独特的完全纹理化对象)。 几乎每个物体上都有相同的金属。 着色器的变化-我们向材质中添加不同的颜色,我们移动纹理粗糙度贴图,在蒙版上施加划痕,它们的坐标控制对象的坐标(如果我们谈论的是静态对象),这会导致其对象带有碎屑,裂缝,污垢。
提高屏幕分辨率时,我们只需调整平铺就足够了,以使纹理像素的数量与屏幕上的像素数量相匹配。 使用标准的纹理化方法,您将必须铲除所有纹理,在Painter中拾取旧项目,然后重新保存它们。 并且您需要确保纹理不会消失。 然后,所有这些都需要重新导入到引擎中,并确保在那里一切正常,着色器将比以前更快地计算出更大的纹理。

用纹理思考


当我与3D艺术家讨论纹理主题时,我一再被告知,大多数对象不能使用纹理进行组装,这需要具有独特图案和其他组件的单独纹理。 例如,此乔木:

图片

在纹理化平面图中表示此对象的复杂性在于它具有独特的时刻:

图片

可以将织物顶部的皮带图案制成单独的纹理,然后简单地应用到织物纹理上。 或将皮带缝制到织物纹理中,然后使用皮带获得独特的织物纹理:

图片

使用此纹理时,皮带在织物上的缝制将在同一区域中不断重复,但这不会很明显。

湿点是由口罩造成的,并沾有污垢或其他东西。 它看起来已经很独特了。

边缘也通过纹理来区分,并且它的大小将非常小,重复出现。 您可以通过遮罩将其显示在模型上。

金属挂钩上的独特图案可与贴花纸一起使用,也可与小张普通卡片的单独层一起使用,可以在扫掠位置下使其平滑并通过面膜显影。

可以使用几何形状或带有阴影的遮罩来实现织物卷上的折叠。 在当前一代的铁中,添加少量顶点不会造成任何负载,并且您始终可以将它们隐藏在远处。

可以对木制物体进行倒角,从而从计算中完全删除法线贴图。 依此类推。 这里最重要的是,所有这些都可以很快进行调整,而无需第三方程序和浪费时间。

最重要的是,所有这些纹理都可以在任何其他着色器中使用,从而调整颜色和斑点。

例外情况


我要说的是,大多数游戏中95%的对象都被此方法覆盖。 通常,即使是手工绘画也属于这种纹理,可以通过它来实现。 但是,并非在该技术阶段可以实现所有目标。 例如,具有特殊元素的复杂字符。 即使您仔细考虑了它们,也可以用纹理覆盖它们-及时查看它们,将它们切断并使其变暗很重要。

我被提供来演示沙发(如下图)作为无法纹理的元素。

图片

但是,如果您仔细观察,沙发具有3种质地(皮革在上面,室内装潢,腿用木头)和2种困难-这些是褶皱和接缝,可以通过两种方式模仿折叠:

  1. 附加顶点。
  2. 另外一个小的法线贴图将发出折叠波(一种更具吸引力的方法)。

接缝也是如此-可以用遮罩将其突出显示并为接缝赋予纹理纹理,或者再次使用附加的法线贴图。

可以使用纹理和蒙版模拟所有的中断,所有的过渡,以产生相同的结果,但是使用的纹理数量较少(我们只需要在项目中使用标准织物的纹理,并直接在着色器中更改其颜色即可)。

在这里您可以提出一个问题-枕头周围的褪色怎么办? 口罩爆炸般解决了此类问题

此外,我们可以为椅子使用相同的纹理。对于其他沙发,用于座椅上具有相同织物的椅子。我们可以通过将纹理的颜色乘以所需的颜色来使所有这些多样化。而且,我们无需从头开始创建纹理,只需收集蒙版并正确应用纹理图层即可。因此,我们将减少加载纹理的体积,但保持质量甚至提高它。但是,值得注意的是,这是我们的工作流程,并且材料的收集在工作室之间,工作室和平台之间通常可能有所不同。

表面艺术家


因此,我们在表面上平稳地接近了艺术家。表面美术师的主要任务是学习了解可以使用纹理执行的操作,什么是顶点以及什么是标准的纹理化方法。了解使用哪些口罩以及在何处获得所需的效果。

您还需要了解,并不是所有的蒙版都可以使用蒙版完成-碰巧某些对象必须具有带有高多边形模型的法线贴图,才能传达曲面弯曲的所有细微差别。例如,角色上服装面料的复杂弯曲,或者武器上细节的微妙之处。同样,织物本身已经使用纹理和蒙版进行了纹理化处理。

在我看来,识别纹理是一项相当艰巨的任务,因为我们的大脑针对的是独特的纹理,因为它只是用来处理它们的。而且,这是游戏行业的标准,也是一切的基础。但是很久以前,标准是没有附加参数的简单颜色纹理。

重要的是要学习如何使用Substance Designer-这是一个程序,它使您可以创建自己的高质量的蒙版和纹理。
Epic Games的家伙们发表了一篇精彩的文章,“ 虚幻引擎中的工作-Surface Artist ”,讨论了成为一名成熟的Surface Artist的要求。我强烈建议您熟悉它们,以了解在何处增长以及为之奋斗。

而不是结论:

我的名字叫Denis Kuznetsov,我代表Qbercat Studio,我们也在开发游戏“ Cat Movies”(目前我们尚未发布有关该游戏的信息,但是,我们有一个小组联系,我们计划在其中发布开发者日记和促销信息因此,不要惊讶这个组是空的)并且几乎我们所有的材料都是通过发票方法专门创建的。我们的工作室有3位3D艺术家和1位表面艺术家。从表面上看,第一位艺术家平均需要3-5位3D艺术家。这完全取决于着色器的复杂性,最终结果,平台和项目本身。

特别感谢不和谐聊天的“ 虚幻引擎- RuCommunity“我们在激烈的辩论中得出了结论。
感谢Flakky对文本进行了更正。

请记住,如果您发现文章中有任何错误或不正确的信息,我将很高兴收到您的来信。这些导师不是为广告而设计的,这样每个人都可以尽快参与到工作中,了解纹理的本质及其类型。

感谢您的关注=)

Source: https://habr.com/ru/post/zh-CN461545/


All Articles