大家好!

这是参考2019年版本的Substance Painter制作的两个教程中的第一个,有关将纹理从该程序导出到各种目的地的信息:从其他3D软件(例如Unity,Unreal,V-Ray等)到一组PBR(基于物理的渲染)范例的通用纹理。

到目前为止,在我已在Youtube播放列表“ Videotutorials Substance Painter-All”中发布的教程中,实际上,我展示了如何使用“材质”,“蒙版”,“画笔”和其他工具,但没有展示如何导出以表格形式获得的结果贴图上的UV贴图纹理图像,可在其他软件上使用。

此操作似乎很简单(理论上,只需单击“文件”菜单中的“导出纹理”并继续),但实际上要记住两点,特别是要避免在“导出”阶段出错(在“日志”窗口中Substance),或者甚至更糟的是,在为各种程序生成的Textures中,最终将显示除Substance中创建的材质以外的其他材质。

与我的大多数Substance Painter教程不同,本教程中使用的素材资源(3D模型和其他素材资源)不可用。但是,您可以按照本教程进行学习,而不必对这些特定对象进行复制操作!

好了,在所有这些前提下,让我们开始吧!

我们将在本教程中使用的项目

我使用“ PBR-金属粗糙度(Allegorithmic)”模板创建了一个新的Substance项目,该模板与之前在YouTube上的“播放列表”中发布的视频教程中使用的模板相同; 导入3D模型后,我为该模型配备了一些Substance默认材料,然后使用选定的模板提供了以下信息通道:

  • Base Color
  • Height
  • Roughness
  • Metallic
  • Normal

SP 2019 20191028 006 Esportare le Textures I parte Presets nativi 01

我们出口统一性5(标准金属)的预设

现在假设我们要导出纹理集(在我的情况下为三个):例如Unity 2019的纹理集列表中的每个纹理集一个。

首先,让我们打开“文件”菜单,然后选择“导出纹理”项。

SP 2019 20191028 006 Esportare le Textures I parte Presets nativi 02

在“导出文档-导出”窗口中,我们可以设置一些参数。 其中,我们特别指出:

  • 单击顶部的按钮,磁盘上用于存储要创建的纹理图像的路径;
  • 该按钮旁边的文件格式(默认情况下应为PNG)和位深度(默认情况下为每个通道8位);
  • 在配置菜单中,导出预设; 在本例中,我们选择Unity 5-Standard Metallic;
  • 纹理的分辨率; 如在播放列表的上一教程中所预期的那样,可以在此处使用较低的分辨率工作,然后设置较高的分辨率,以便在导出中生成纹理。

SP 2019 20191028 006 Esportare le Textures I parte Presets nativi 03

因此,从理论上讲,所有内容都应准备好进行导出,但是单击“导出”,我们将显示错误消息“导出完成,但出现了一些错误(请参阅日志)” ...

SP 2019 20191028 006 Esportare le Textures I parte Presets nativi 04

出口错误:信息渠道缺失

因此,让我们看一下“日志”选项卡,如果没有可用的话,可以从“窗口-视图-日志”中激活它。

在此工作表中,我们了解到在三个“纹理集”中缺少两个信息通道:“不透明”和“排放”。

SP 2019 20191028 006 Esportare le Textures I parte Presets nativi 05

要了解此错误的原因,我们再次从“文件”菜单中打开“导出纹理”窗口,但这一次我们转到“导出文档”窗口中的“配置”选项卡,然后选择“ Unity 5-标准金属”预设进行检查 它。

SP 2019 20191028 006 Esportare le Textures I parte Presets nativi 06

如我们所见,Unity 5 with Metallic工作流程的导出预设可创建4个Textures图像:

  • 称为“ Albedo Transparency”的RGB + A类型图像(其中A代表Alpha,不透明度或透明度通道),将被传递到Unity Albedo通道,并且在三个RGB通道中具有基本色和不透明度在Alpha通道中进行映射
  • RGB + A型图像,在这种情况下,它将在RGB中存储金属信息,并在Alpha透明通道中存储从“转换后的贴图-光泽度”中获取的信息;
  • 并非从Input Map-Normal开始而是从Converted Map-Normal OpenGL创建的称为Normal的RGB类型图像;这种区别很重要,因为这样生成的地图不仅会带来“法线”通道中定义的信息,还会带来在“高度”通道中定义的信息(例如,还记得我关于皮带不缝合的教程吗?);这样,“法线”和“高度”将合并为一个可被Unity 5使用的法线贴图;
  • 最后,从“输入贴图-发射”通道生成的RGB图像称为“发射”,可用于发光材料(灯泡,火焰,LED灯,霓虹灯等)。

根据渠道选择正确的文件格式

RGB + A图像的存在,因此在此预设中具有透明通道,这也使我们理解了另一件事:在“导出”选项卡中,我们将不得不选择能够封装这4个通道的文件格式。

Substance默认选择的8位PNG项很好,因为PNG格式已经提供了4个RGBA通道,而JPG或BMP之类的文件格式就不好了,因为这些格式仅提供了3个 没有Alpha信息的RGB通道,因此-在Preset Unity 5 Metallic的情况下-透明度(Opacity)和材料的平滑度(Glossiness)都将丢失。

SP 2019 20191028 006 Esportare le Textures I parte Presets nativi 07

添加纹理集的信息渠道

好的,我们说我们还需要有关“不透明度”和“发射性”的信息; 是的,但是如何将这些信息渠道添加到我们的材料中?

答案就在“纹理集设置”选项卡上:在这里我们可以找到材料的信息通道列表,并且在每个通道旁边还有一个技术细节:与每个通道关联的颜色或信息空间; 例如,对于基本色,我们将sRGB8作为默认设置,即sRGB色彩空间中的彩色图像,每个通道具有8位信息,而对于可以用灰度表示的通道(例如粗糙度和金属色),我们有 线性空间中的8位数字(字母L),而对于“高度”,我们在线性空间中具有16位浮点(16F)的图像,对于法线贴图,我们具有具有16位浮点的彩色图像(RGB) 精度(16F)。

SP 2019 20191028 006 Esportare le Textures I parte Presets nativi 08

请注意,为“高度”和“正常”提供了16位信息,但是请记住,在导出阶段,使用“导出文档”选项卡的默认设置(如我们所见,设置值为8位),此信息 仍将被压缩以适合8位。

要将“不透明度”和“发射”通道添加到当前选择的“纹理集”,然后单击“通道”旁边的+符号,然后从将出现的列表中选择这些通道; Substance Painter会自动设置用于这两个通道的数据类型(对于记录,这是线性空间中的8位数字L8,用于不透明度,然后用灰度图像表示,而对于发射,我们具有 sRGB8色彩空间中的彩色图像,因为发光也可以着色:因此,这不是我们可以用L8表示的简单发光强度,它可以生成灰度的缩放图像,但是在颜色和 强度)。

SP 2019 20191028 006 Esportare le Textures I parte Presets nativi 09

但是要小心:我们仅针对当前的纹理集添加了这两个信息通道;为了避免错误,我们还必须对项目的其他纹理集重复该操作...

…或者下一次,使用适合我们目的的模板创建项目;例如,关于Unity 5,Substance Painter 2019在创建新项目时提供“ Unity 5(Allegorithmic)”模板,以查找已针对导出到Unity 5而优化的这些设置和其他设置。我们将看到如何创建自定义预设,也将看到如何创建自己的模板。

检查所有渠道的信息;使用填充层

在为所有纹理集添加缺少的信息通道后,我们可以通过从3D视图右上角的选择器中选择它们,或按几次快捷键“ C”来分别在3D视图中查看这些通道,以对其进行更改循环(快捷方式“ M”以返回到物料的整体视图)。

对于某些通道,我们注意到实际上,物质并没有生成信息:我们注意到它是由于在我的示例中,将棋盘格纹理应用于“正常”,“高度”,“不透明度”和“发射”等通道。

SP 2019 20191028 006 Esportare le Textures I parte Presets nativi 10

缺少此信息可能会在导出阶段构成一个相当大的问题:实际上,该物质最终将为纹理中的这些通道赋予一个值,通常将某些纹理的颜色(如不透明度或发射度)设置为黑色; 如果对于发射来说,这通常是可以的(因为在大多数情况下,材料不发光),则对不透明度不利,因为黑色的不透明度(即0)实际上表示透明的物体!

有多种解决方案可以解决此问题。 在这里,我告诉您我通常的工作:对于项目的每个纹理集,我在底部添加一个默认的填充层,即填充级别; 默认情况下,这种类型的图层的“高度”和“发射”为0.0(黑色:没有浮雕或不发光),另一方面,“不透明度”为1.0(白色,不透明的对象,不透明):在大多数情况下, 很好。

SP 2019 20191028 006 Esportare le Textures I parte Presets nativi 11

如前所述,必须在每个“纹理集”的“层”堆栈的底部插入“填充层”:这样,它将不覆盖存在的其他层的信息,并且最终只会用默认值填充丢失的信息通道,该默认值 ,通常情况下会没事的。

SP 2019 20191028 006 Esportare le Textures I parte Presets nativi 12

概括 ...

总结:创建项目时,我们应该从基于目标软件的模板中选择合适的模板,以获取信息通道和其他合适的设置。

如果缺少信息通道,我们可以通过为当前项目的列表中存在的每个纹理集在纹理集设置中添加必要的信息通道(并最终修改技术设置)来解决该问题。

在继续进行导出之前,我们可以在3D视图中滚动带有C的通道,以识别任何丢失的信息,并在必要时使用填充层解决问题,即将填充级别放置在堆栈的底部项目的每个“纹理集”的“层”选项卡中的层和材质的组合。

最后,在导出所有内容之前,请检查文件格式,如果需要此信息,请设置一个Alpha通道(例如PNG),否则设置另一种格式,具体取决于您的需要。

对于从Substance Painter导出纹理的两部分中的第一部分,就是这样!

在下一个情节中,我们将看到如何定义自己的自定义导出预设,以便导出我们感兴趣的纹理,以及使用Substance宏变量以自定义名称方案创建它们;等等。我们还将看到如何创建我们自己的模板,以及我们打算对所有新项目进行的设置。

与往常一样,我邀请您在YouTube上的视频评论中表达疑问,疑问或要求澄清的地方。再见!