【Substance】Substance Painter基本制作流程

这篇东西主要来自于官网Substance Painter入门视频教程的要点总结,记录sp中基本概念和制作流程。
中文版链接(中文视频是优酷的不用翻墙)

准备工作

创建项目&导入模型
File → New打开New Project窗口,Select选择要导入的模型。
Normal map format : 法线标准,DirectX (X+, Y-, Z+) 和OpenGL (X+, Y+, Z+)。
Compute tangent space per fragment :在切线空间计算片元的切线。
Document resolution: 贴图分辨率(可以在工作过程中在Texture Set界面改分辨率,而且如果中途修改分辨率并不是对原先画好的贴图进行简单的缩放,而是重新生成,因此放大分辨率不会有模糊的问题)。

Docks
sp界面右上角的一列图标为我们在制作中要用到的菜单窗口,我们可以点击图标来打开窗口,也可以将窗口拖动至任意位置,关闭的窗口将会回到该位置显示为图标。

Texture Set & Set Shader
导入模型中的不同部分为不同的Texture Set,不同的Texture Set可以使用不同的Shader来给每个部分做不同的材质效果。

Texture Set List窗口可以看到当前导入模型的所有Texture Set,右侧显示的是它们各自使用的Shader,默认为Main Shader,可以点击下拉框创建新的Shader。Shift + Alt + 右键点击模型可以快速选中点击位置所在的的Texture Set。

在Shader Settings窗口可以编辑当前选中的Texture Setting所使用的Shader的属性,可以选择使用哪种着色方式、编辑名字等。

在Texture Set Settings窗口可以管理当前选中的Texture Set的通道(不同的Shader需要不同的输入通道,如pbr matel-rough-with-alpha-blending就需要一个Opacity的通道作为透明度),编辑各类属性,查看已经烘焙的贴图。

烘焙
在Texture Set Settings窗口点击Bake Mesh Maps可以打开烘焙窗口。

下方按钮Bake all texture set和bake xxxx mesh maps分别为为所有Texture Set烘焙和只为当前选中的Texture Set烘焙。左侧可勾选各种烘焙项。
烘焙的贴图可以被许多Smart Material使用,Smart Material的一些generator会根据网格的Normal Map、Ambient Occlusion Map等智能地生成效果,如在孔洞、棱角处的特殊效果。

使用fill layer完成70%

根据视频教程作者推荐的方式,制作流程先使用fill layer来完成70%左右的效果,再使用standard layer绘制细节完成剩余部分。因此第一步我们将通过fill layer、mask、effect stack和各种混合模式的配合来完成初步的材质效果。

base fill layer
创建一个名为base的fill layer,fill layer的property面板可以选定该fill layer覆盖的通道,我们在这里选定基本底色、粗糙度、金属度等。按C可以在各通道视图间切换,M可以回到正常材质渲染视图。

various fill laye
在base层的上方添加更多fill layer来为材质添加丰富性,比如你想要模型表面有更丰富的粗糙度变化,那么就添加一个覆盖通道为rough的fill layer,并通过mask来限定它。颜色、凹凸等同理。

mask & effect stack
在base fill layer上叠加的various fill layer需要使用mask来限制区域和程度,基本方法为为various fill layer添加black mask,再为mask添加effect stack来得到想要的mask。

effect stack
上图所示下拉框可以为选中的mask或者layer添加effect。按住Alt+左键点击mask可以只看mask视图(灰度),按M还原。接下来介绍几种视频教程中使用到的实用effect。主要为generator effect和fill effect。generator effect会根据网格拓扑结构和形状做一些智能的区域限制,因此会使用烘焙的贴图如Position Map、Worldspace Normal Map、Ambient Occlusion Map等。fill effect则是简单的纹理,不会根据网格特性调整。许多effect需要选择triplanar三向纹理模式来避免出现断层。

Generator/Dirt
孔洞、角落处(Occluded Areas)更亮,可以用于限制针对这些区域的材质效果(如生锈特别严重)。

Generator/Light
模拟光照效果,Verticle Angle拉到270为从上向下照射,即越水平的面越亮。

Generator/Mask Editor
可以实现丰富的mask类型,教程中使用Curvature成分,将Mode设为Dual,可以让网格的转角区域变亮,可以用于限制针对这些区域的材质效果(如磨损特别严重等)。或者使用Position Gradient成分,可以产生上下、左右等方向的渐变效果。Mask Editor还可以引用两张Texture配合各自的混合模式来对生成的效果进行限制。

fill effect
有Grunge Concrete Old、Grunge Map、Grunge Scratches Rough、Grunge Rust Fine、Bnw Spot等等Texture可选(Grunge开头的一大堆),可以实现划痕、磨损等等效果。

filter effect
过滤器,可对mask或layer做特殊的处理。如HSL Perceptive可以调整HSL通道来调整颜色,常用于fill layer的effect;Blur则可以产生模糊的效果。

混合模式
无论是layer stack还是effect stack,都是由底而上进行叠加,通过每一项设置的混合模式来计算每一步叠加后的结果。

在观察Layers窗口中,可以在每一项的右侧看到选择的混合模式以及透明度。需要注意的是,这些信息是基于窗口左上角所选择的通道的。上图中所有的混合模式和透明度都用于Base Color通道的混合,而同一图层的不同的通道可能有不同的混合模式和透明度,甚至默认的混合模式也是不同的。如Base Color通道的默认混合模式为Normal,即覆盖;Height通道的默认为Linear Dodge(Add),这种混合模式会将每个图层的颜色叠加起来;AO通道的默认为Multiply,即相乘;Normal通道的默认为Normal Map Detail,为与法线相关的一些计算方法,等等。
几种常见的混合模式:
Normal模式为简单覆盖,上层会完全覆盖掉下层的结果
Lighten(Mix)为变量,可以用于上层mask的白色区域叠加在下层mask之上的情况(如在点状区域的基础上再加上划痕区域)
Multiple为相乘模式,可以用于想要用上层mask的黑色区域屏蔽掉下层mask的情况(如下层为一个大区域的grunge效果,通过multiple模式的上层mask将下层的作用区域限定在一定范围)等
这段可能说的不太清楚,各种混合模式的使用方式详见视频教程,关于更多混合模式的参考可以看这篇帖子

Smart Material & Smart Mask & Layer Instancing
制作完的mask或folder(将多个layer放进一个文件夹里)可以创建Smart Mask和Smart Material,之后就可以在其它Texture Set上直接使用。但这样各个Texture Set上对这个材质的改动是无联系的。为了能够让在一个Texture Set上对material的改动自动应用到其它的Texture Set上,我们可以通过右键点击folder,选择Instantiate Across Texture Sets,选中要将当前layer集复制到哪些Texture Set上。在那些Texture Set上就会出现当前选择的复制。

通过这种方法得到的layer folder右侧会有上图所示图标,点击图标会在Property面板显示当前的材质继承关系。只有源材质才可以编辑,且所有改动将会自动应用到所有继承的Texture Set中。

手绘材质完成剩余30%

standard layer
fill layer是不允许绘制的,因此我们需要创建standard layer进行手绘。

在standard layer的Properties窗口中,有四栏分别为Brush,Alpha,Stencil,Material,分别包含了笔刷四个方面的信息。
Alpha栏:决定了笔刷的形状(如箭头形状的笔刷,是由于使用了箭头形的Alpha遮罩)
Brush栏:包含了笔刷的大小、透明度、旋转等信息,Angle表示Alpha遮罩的旋转,即笔刷形状的旋转,Jitter相关的属性可以使笔刷画出类似泡沫的效果。Follow Path选项开启会使Alpha遮罩随着画笔的绘制路径而旋转,Alignment选项为笔刷投影至网格表面的方式。
Stencil栏:可以为笔刷设置模板,使绘制区域被限制在所选择的stencil内。
Material栏:决定了绘制的结果。Alpha和Brush都与绘制的区域和强度有关,但没有定义绘制的结果。Material中可以定义笔刷对各个通道的影响结果。

Brush/Tool/Material
在Properties窗口中点击右键,可以看到将当前笔刷保存为Brush/Tool/Material三个选项。其中Brush类型会包含Brush栏和Alpha栏的信息,但独立于Material栏的信息;Material类型则只包含Material栏的信息。Tool则是包含了所有栏的信息。在Shelf窗口可以找到sp自带的Brush/Tool/Material资源,在选择时也要注意这三中资源类型所包含的笔刷信息。

快捷键

  • Ctrl + 右键上下移动 = 缩放brush size
  • Ctrl + 右键左右移动 = 改变alpha hardness
  • Ctrl + 左键上下移动 = 旋转alpha(改变brush angle)
  • Ctrl + 左键左右移动 = 改变brush flow
  • 按住A =绘制时禁用笔刷stroke opacity的build up效果(即多次涂抹使不透明度增加)
  • 按住Shift = 绘制时画直线

Paint Effect
effect的一种,可在add effect的下拉栏中选择添加,在effect stack中添加一个可以绘制的effect来手动灵活地调整mask的遮蔽和显示范围。mask本身是可以直接绘制的,但不建议这样做,可以通过给mask添加paint effect来达到相似的目的。对于mask的paint effect而言,绘制的通道仅为grayscale。在绘制grayscale通道时,可以按X在(当前值,1-当前值)切换笔刷产生的灰度值。

Projection Tool
可以在左侧的工具栏中找到Projection Tool,使用方法和配合stencil的brush工具差不多,但stencil是通过灰度纹理限制brush绘制范围,Projection Tool则可以设置多通道的纹理,并在笔刷涂抹的区域将纹理透射到网格上。详见视频教程第9集。

Clone Tool
类似PS的仿制图章。使用方法为:

  • 新建一个standard layer;
  • 将所有你需要仿制的通道的混合模式设置为Passthrough
  • 按住V鼠标左键点击选择采样位置;
  • 绘制;

Clone Tool的克隆结果可以随着被采样纹理的改变动态地改变。

Anchor System

之前说过generator effect会采用烘焙的AO Map、Height Map等作为输入来生成与网格形状结构相关的分布结果。但是烘焙的结果并不包含后期绘制的AO、Height等信息,即这些后期添加的效果并没有被generator纳入计算。如上图,在某些位置绘制了更丰富的Height信息,但铁锈材质没有在这些位置形成任何积累效果,这是因为铁锈材质中使用的generator没有将这些额外的Height信息纳入计算。
我们可以使用Anchor System来弥补这一点。Anchor System用于使一个layer中某些channel的信息能够在另一个layer中被引用(set a target channel in one layer in order to reference that channel data in another layer)。
在绘制这些Height信息的图层上点击右键选择Set anchor point,图层下会出现一个锚点。之后在铁锈材质中使用的mask editor generator中设置micro height的来源为该锚点,锚点图层的Height信息就可以被该generator引用。

设置Anchor后的铁锈积累效果。需要注意的是,Anchor仅可以被位于其所在layer上方的layer引用,在这个例子中,我们绘制额外高度信息的layer必须放在铁锈layer的下方。

添加AO
我们还可以为额外绘制的Height和Normal信息添加AO效果。具体方法为:在具有额外的Height或Normal信息的layer上添加filter effect,选择MatFX HBAO(horizontal based ambient occlusion),选择相应的Channel Source即可。

在图层添加了Filter/MatFX HBAO后的效果。

Level Effect

在layer窗口点击add effect → add level来为layer添加level效果。在properties面板中可以选择要调整色阶的通道。

Mask With Color Selection

在一个Texture Set中,可能存在一些材质与整体不同的部分(如上图中圈起来的铁丝部分),我们需要为它单独创建材质,并通过Mask来避免影响Texture Set中的其它部分。怎么比较好地为这些位置创建Mask呢?我们可以使用烘焙的ID Map来进行Mask With Color Selection。

具体方法:右键点击→Mask With Color Selection;或者添加Black Mask后add effect→add color selection。color selection效果会采用烘焙的ID贴图作为输入,你可以点击Pick Color来选择你的Mask需要暴露的ID颜色。这种Mask方法需要在建模时做好模型零件的ID以及烘焙ID Map配合,下面介绍另一种方便的区域Mask方法。

Mask With Polygon Fill Tool
这种方法通过模型的几何部件来快速地选择区域。先创建一个black mask,添加paint effect,选择工具栏中的Polygon Fill工具。

Properties窗口中,Color地值决定了被你选中的区域会在Mask上变成什么颜色(即你是想要在mask中遮蔽/暴露你选择的区域),可以按X快速地在0-1间切换。四种Fill Mode模式:

  • Triangle Fill:逐个选择或框选三角形
  • Polygon Fill:逐个选择或框选多边形
  • Mesh Fill:选择整个单独Mesh
  • UV Chunk Fill:选择整个独立的UV区域

后两种mode会比较常用。

Iray渲染和导出贴图

Iray渲染
点击右上方Rendering(Iray)按钮即可进入渲染窗口,使用Iray引擎进行高质量的渲染。

相关的设置比较无脑,看看名字基本就明白了。Max Samples和Max Time分别是一次渲染中的迭代次数上限和渲染时间上限,无论达到哪个都会停下来。可以先设低一点调整一下大致的效果,确定后再调高质量渲染一次。渲染结果可以保存或分享。

导出贴图

File→Export Textures打开导出窗口,Config可以选择输出配置,根据你导出贴图的用处来选择,sp已经有自带的配置支持很多渲染引擎比如Vray、Unreal、Unity之类的,基本上选就完事了。当然你也可以自己配置,比如生成r、g、b通道分别放metallic、roughness、height之类的贴图。

结尾

上面就是渲出来的结果啦^ ^,2160*2160分辨率跑了10000个iteration,两个小时左右。

这里遇到过一个问题,就是刚开始渲的时候发现算的非常慢,任务管理器一看CPU占用率100%,GPU占用率0%,感觉像是在用CPU计算。这里一个是要在NVDIA控制面板允许sp用独显,但是设置了之后还是没用。最后查了官方文档才知道在程序里也需要设置。

上图的这个设置在Edit→Settings的General栏下,需要把CPU的勾给去掉,只勾选独显。设置完了再跑渲染CPU占用率就低了很多了,速度也比之前快不少。

官网sp入门视频教程的内容大概就是这些了,最近因为要在Unity里做VR项目,之后会学Substance In Unity(Unity Asset Store的官方插件)的配置使用。

猜你喜欢

转载自blog.csdn.net/weixin_41885426/article/details/94914564