Blender材质处理插件:Decalmachine地图集

Blender材质处理插件:Decalmachine地图集
推荐:将NSDT场景编辑器加入你的3D工具链

DECALmachine 上下文中的图集是将单个贴花纹理打包到单个纹理表中的过程,然后使用单个材料和一组纹理来获得所有这些单独的贴花。
这对于在Unity,虚幻引擎等游戏引擎中进行高效渲染是必要的。

在 DECALmachine 中,这是一个 2 步过程:

  1. 地图集创建
  2. 地图集使用和导出

注意

DECALmachine 中的图集由一组纹理与文件结合使用,其中包含有关集中每个贴花特定位置的元数据。
图集和修剪表共享相同的数据格式,因此为什么地图集贴花在数据文件中也称为修剪data.json

地图集创建

DECALmachine 2.0 提供了 2 个地图集。
一个用于飞机贴花库,一个用于示例和示例面板库。
因此,如果您打算从这些库中导出贴花,则不必创建自己的地图集,您可以使用提供的地图集。

但是,如果您想导出自己的贴花,您还必须创建自己的 Atlas。

注意

您可以将各种贴花库中的贴花打包到一个地图集中。您不必创建每个图书馆的地图集!

Atlas Creation是从Decal,Atlas & Trim Sheet Creation面板完成的。


使用和导出图集

使用地图集

在DECALmachine中使用图集意味着更改贴花的UV以匹配该贴花在集中的位置。
单个贴花的紫外线覆盖了整个紫外线空间,但图集贴花只覆盖了其中的一小部分。
随着UV的改变,属于同一图集的所有贴花也将共享一个图集材质

使用地图集的这一过程是可逆的,因此您可以随时使用独特的纹理恢复原始贴花。

注意

由于裁切贴图使用与图集相同的数据格式,因此裁切贴花可以立即将这些贴图用作图集。
无需从修剪贴花创建新的地图集,尽管如果您愿意,您仍然可以这样做。

连接和拆分地图集贴花

为方便起见,DECALmachine 还提供了连接和拆分图集贴花的工具,因为共享单个图集材质的贴花如果也是单个对象,则可以更有效地渲染。

出口图集

导出图集仅指将图集纹理复制到所需目标位置的过程。
如果要对纹理进行通道打包,可以直接从贴花导出面板的图集部分进行操作

您可以选择从同一面板中导出您的图集贴花和任何其他选定对象,或者只使用 Blender 的原生对象导出。


统一

Unity 带有两个主要的渲染管线:HDRP 和 URP。
HDRP 支持延迟渲染,而 URP 仅支持前向渲染,因此不支持贴花着色器。

高密度转换脉冲

HDRP提供了它自己的贴花着色器,你可以尝试一下。
但最有可能的是,您需要使用自定义着色器,用于DECALmachine的贴花。

延迟贴花将毫不费力地与它们下面的任何材料混合,甚至是有纹理的材料

随着着色器图的出现,创建自己的贴花着色器很容易,每个人都可以做到。

贴花着色器可以非常简单,例如只影响法线,也可以稍微复杂一些 - 但仍然非常简单:

着色器图形法线贴图贴花着色器

用于简单/子集/面板贴花的着色器,影响颜色、法线、AO、金属度、平滑度和发光

着色器图形信息贴花着色器

用于信息贴花、影响、颜色、金属度、平滑度和发光的着色器

可以从此存储库下载上面的两个着色器。

放大着色器编辑器

还可以使用 ASE 生成完全相同的着色器。
ASE不仅提供更好的体验,而且您还可以为贴花添加视差,看起来与DECALmachine在Blender中使用的视差完全相同。

阿塞帕拉拉克斯

使用白色高度图的 ASE 中的贴花视差

后备方案

在 URP 的前向渲染中,无法重现 HDRP 中可以进行的材质混合。贴花总是不透明的,就像在Blender中一样。

因此,如果您使用 URP,我建议您使用修剪表而不是贴花。

注意

理论上,您仍然可以使用简单的光照着色器在 URP 中使用贴花,可以选择 alpha 映射。
但是您有责任自己将贴花材料与衬垫材料相匹配。
这在简单、普通的材料上是可能的,但对于有纹理的材料是不可行的。

虚幻引擎

关于DECALmachine和虚幻引擎4的部分由Thad Clevenger慷慨提供,他在DECALmachine 2.0的发布中进行了干预,并在整个开发过程中提供了反馈。

注意

我恳请您不要联系 Thad 寻求这方面的支持,绝对不要在一般的 DECALmachine 上。
相反,请提交您可能遇到的任何问题,并在 Blender 艺术家或多边形计数上讨论。

背景

我是Funcom的高级美术师,负责我们的下一个大项目,我的任务是帮助确定我们的车辆/硬表面物体的管道。
在做了大量研究之后,我们最终决定使用中间聚乙烯/贴花工作流程,我相信你们大多数人都熟悉。这就是DECALmachine的用武之地。DECALmachine 使创建、管理和编辑贴花的过程变得更加容易。

不用说,我想把它添加到我们的管道中。然而,我们立即面临一个大问题。UE4不具备在Blender或Unity中实现与DECALmachine相同的视觉效果所需的所有功能。
值得庆幸的是,在我们的一位程序员(Marcos Pereira)的搜索和帮助下,我们能够将该功能添加到UE4中,并在UE4中与DECALmachine接近1比1的奇偶校验。

截至目前,在贴花方面,Unity 仍然比 UE4 更强大,但如果你的项目使用的是虚幻引擎,并且你想要一个贴花解决方案,那么这是我找到的最好的解决方案。

1. 修补虚幻引擎

正如我上面提到的,在本教程时版本 4.24UE4仍然没有Unity所拥有的所有贴花功能。
具体来说,允许您独立编辑贴花的不透明度通道。
为了获得与 DECALmachine 的奇偶校验,您必须能够在贴花的漫反射、金属、粗糙度和法线通道中独立编辑贴花的不透明度。

好消息是,您可以通过少量代码更新来解决此问题。此处可在此处找到此问题的修复程序。您需要一个 Github 帐户才能访问此链接。

我不是程序员,所以我假设你会让你的一位程序员查看此链接并在必要时添加代码。
希望Epic能够自己更新它,然后这一步将不再是必需的,但根据我们的程序员的说法,这并不难实现。

代码更改实际上有什么作用?

它允许您创建一种新型的不透明度贴图,基本上是 3 个蒙版合二为一。根据蒙版所在的通道(R、G 或 B),每个通道都会影响贴花的不同部分。

此贴图的 R 通道中的蒙版只会影响贴花的漫反射通道和自发光通道。 此贴图的 G 通道中的蒙版只会影响贴花的法线通道。 此贴图的 B 通道中的蒙版只会影响贴花的金属和粗糙度通道。

下面的代码显示了我上面所说的内容。

Out.MRT[0].a = Opacity.r; // Emissive
Out.MRT[1].a = Opacity.g; // Normal
Out.MRT[2].a = Opacity.b; // Metallic, Specular, Roughness
Out.MRT[3].a = Opacity.r; // BaseColor

为什么此功能很重要?

虚幻引擎01

如上图所示,贴花仅在某些区域(即螺栓周围)显示其法线,但它在螺栓本身上显示其所有通道(漫反射、金属、粗糙度和法线)。
只允许贴花的法线出现在某些区域,给人一种非常好的“内置外观”。正因为如此,无论我在它后面使用什么材料,这个螺栓将始终看起来像背景的一部分。 结合视差遮挡,这与真实几何几乎无法区分。

在不更改代码的情况下,UE4中的贴花在所有通道中平等地共享透明度。这会阻止您实现从背景对象到贴花的这些漂亮的过渡。

2. 贴花机

注意

本节仅引导您完成图集和导出过程。
上面的视频形式也更详细地介绍了它。

现在,您已经实现了上面的代码,您可以创作贴花了。
您可以使用任何程序编写它们,但是我没有发现任何比DECALmachine和Blender开箱即用更好的了。实际上,我对Blender很陌生,并且仍然在Maya中完成大部分工作。但是,将我的模型仅针对DECALmachine带入Blender仍然是值得的。完成后,我总是可以将它们带回Maya,并且Blender是免费的,所以没有理由不得到它。

虚幻引擎02

我在此多维数据集资产上放置了一些贴花来表示最终模型。一旦您在 DECALmachine 中完成了自己的资产并对一切外观感到满意,那么就该创建一个图集了。
这是DECALmachine中一个非常强大的功能,所以一定要花一些时间来完成上面的图集部分。

要从您放置的贴花创建新的图集,您需要通过点击热键在 Blender 中打开 DECALmachine 侧边栏。然后单击 MACHIN3 选项卡并转到贴花、图集和修剪表创建部分。单击从场景创建新的贴花图集,然后根据需要重新打包/调整。
一旦你满意,你需要存储选定的阿特拉斯N

虚幻引擎03

Next, Select your Atlas in in the export panel, and have your decals Use the Atlas.

UnrealEngine04

Now we can export the textures we need to set up everything in UE4.

虚幻引擎05

您的导出面板应如下所示

确保您在“通道打包”部分中启用了掩码。 四个下拉菜单应设置为以下内容:

  • 子集遮挡
  • 阿尔法
  • 子集遮挡
  • 没有

这将创建我们在步骤1中讨论的不透明度蒙版, 这是在虚幻引擎中让这一切看起来正确的最重要的纹理。
导出纹理后,您需要将模型导出为 fbx。只需选择所有内容并将其导出为一个对象即可。

3. 完成纹理

我们几乎已经准备好在UE4中设置所有内容了。然而,在我们这样做之前,我喜欢在物质画家中完成我的纹理,以便我可以自定义我的图集材质。
此外,UE4目前没有4.24 版支持AO的网格贴花,所以我喜欢在纹理中伪造它们。通常这是一个坏主意,但在这种情况下,这是唯一的选择。我将在下一步中解释如何操作。

对于此步骤,我使用Substance Painter,但您可以随意执行此操作。
在 Painter 中,很容易在我的贴花等中添加磨损和污垢。 为此,我带来了以下地图,我刚刚将其导出到Painter中:

  • 曲率
  • 正常
  • 子集

然后,我使用这些贴图为UE4生成最终的图集纹理。
我使用 Subset 纹理来遮罩我希望贴花材质的位置 - 在这种情况下是金属和油漆。
右下角的通风口仅在法线贴图中,因此不会接收任何材料。

虚幻引擎06

这是我完成后在 Painter 中立方体的样子。请注意,这里没有视差,只是正常。
我在左边的贴花上添加了金属材料,并将右上方的贴花涂成黄色。我还在所有东西中添加了一些垃圾。

假装AO

由于UE4没有用于贴花的AO通道,因此请确保“仅显示法线贴图的贴花”的任何部分在彩色贴图中显示为黑色。

注意

DECALmachine本身不提供法线贴图等地图集的色彩图。

这真的有助于使事情看起来正确,所以我强烈建议这样做。完成后,它应该看起来像下图。

虚幻引擎07

使用反转子集蒙版应用黑色

如果操作正确,它将自动在UE4中工作。 这是由于我们在步骤 2 中导出蒙版纹理的方式。这很复杂,但您需要知道的是,如果您的贴花仅显示其法线贴图,那么对于您的漫反射/基色纹理,它应该显示为黑色。

此时,您可以从 Painter 导出最终纹理。
之后,您应该有一个基础颜色、填充粗糙度/金属和法线贴图。

将这些纹理与您从DECALmachine导出的高度贴图和不透明度贴图一起导入UE4。

4. UE4中的贴花着色器

现在我们已经创建了最终的图集纹理,我们需要在UE4中设置贴花着色器。
当然,我们将在这个工作流程中使用网格贴花,而不是贴花演员。

造成这种情况的原因有很多,但仅凭性能就值得。与使用投影贴花演员相比,缺点是您无法在引擎中移动它们。但是,DECALmachine可以轻松调整它们,您只需再次重新导出网格即可。

首先,创建一个材料并随心所欲地称呼它。这将是您的贴花材料。

虚幻引擎08

在“材料详细信息”选项卡中,将材料域、混合模式和贴花混合模式更改为上述属性。

现在,只需将我们创建的所有地图插入到正确的位置即可。将基色、金属色、粗糙度和法线插入相应的通道。

此过程的唯一新部分是我们在步骤 2 中导出的蒙版纹理。
确保将纹理在其属性中设置为 sRGB,并将其连接到不透明度通道,如下所示。

虚幻引擎09

您还可以看到,我已将Parrallax遮挡映射节点连接到纹理节点的UV输入,然后进入下面的设置。

视差遮挡贴图

将地图集高度图插入顶部。我建议您使用我在下面设置的其他所有设置。
但请随意使用它或使用凹凸偏移节点。
凹凸偏移看起来不太好,但更便宜,并且在大多数情况下仍然有效。

虚幻引擎10

结论

现在我们已经正确插入了所有地图,它应该如下图所示。
您可以在背景立方体对象上使用任何材质,由于我们生成的新的不透明度蒙版,贴花看起来很棒。

虚幻引擎11

在这里,我将立方体的材料换成了金属,由于新的不透明度蒙版和代码,贴花完美融合。

虚幻引擎12

这是一个非常基本的例子,但是将贴花与中多边形模型结合使用微细节的优点可能很棒。
不再有纹素密度问题,纹理内存更低,易于编辑,模块化,建模速度更快等。

我希望这对你有所帮助。我知道这是相当技术性的,但它是为那些正在寻找UE4贴花解决方案的开发者准备的。我们的目标是帮助UE4在未来更好地与DECALmachine配合使用。

3D建模学习工作室
专注数字孪生、3D建模、3D仿真、虚拟现实

上一篇:Blender材质处理插件:Decalmachine导出 (mvrlink.com)

下一篇:Blender材质处理插件:Decalmachine导出修剪表 (mvrlink.com)

NSDT场景编辑器 | NSDT 数字孪生 | GLTF在线编辑器 | 3D模型在线转换 | UnrealSynth虚幻合成数据生成器 | 3D模型自动纹理化工具
2023 power by nsdt©鄂ICP备2023000829号