Choose your operating system:
Windows
macOS
Linux
渲染逼真人体皮肤的能力,对于任何现代电子游戏引擎来说都不可或缺。为了满足此需求,虚幻引擎4(UE4)现在提供了一种专门用于皮肤或蜡状表面的明暗处理方法,称为 次表面轮廓 。 次表面轮廓明暗处理模型有与 次表面 明暗处理模型类似的属性,其关键区别在于渲染方式有所不同。 次表面轮廓使用基于屏幕空间的渲染方法,因为这有助于更好地显示人体皮肤上的微妙次表面效果,而反向散射是仅在少数情况(例如,耳朵)下才会出现的次级效果。 以下文档将阐述什么是次表面轮廓以及如何在工作中使用它们。
使材质能够使用次表面轮廓
你可通过下列步骤使材质能够使用次表面轮廓。
-
首先,在 内容浏览器 中 右键单击 ,然后从 创建基本资源(Create Basic Asset) 列表中选择"材质(Material)",创建新材质。 创建之后,务必对该材质进行命名。在本示例中,我们已将此材质命名为 MAT_Subsurface_Profile_00 。 完成后,你的 内容浏览器 应该如下所示。
-
接着,在 内容浏览器 中,使用 鼠标左键 双击 该材质以将其打开。
-
材质现已打开,我们需要将其 明暗处理模型(Shading Model) 从 默认点亮(Default Lit) 更改为 次表面轮廓(Subsurface Profile) 。
-
现在,你可以通过在 细节(Details) 面板的 次表面轮廓(Subsurface Profile) 部分中输入,指定一个 次表面轮廓 。
-
现在,此材质已准备好与次表面轮廓配合使用。
创建次表面轮廓
以下是创建次表面轮廓的步骤。
-
首先,在 内容浏览器 中 右键单击 。然后,选择 材质与纹理(Materials & Textures) 选项,并选择 次表面轮廓(Subsurface Profile) 选项。
-
选择并创建次表面轮廓之后,可以对其进行命名。 在此示例中,我们将这个次表面轮廓命名为 SSP_00 。 完成后,结果如下图所示。
创建使用次表面轮廓的材质
材质和次表面轮廓现已创建完毕,你可以开始在其中填充数据。 在下列步骤中,我们将创建可以使用次表面轮廓的材质和材质实例。
-
我们需要执行的第一项操作是,确保打开上文所创建的次表面材质。如果你已打开该材质,请前进到下一步。 否则,为了打开该材质,请先在 内容浏览器 中找到它,然后通过 鼠标左键 双击 将其打开。 完成后,你在屏幕上应该看到类似下图的内容。
-
打开材质后,可以布置一些材质表达式节点。在本教程中,我们将使用下列节点。
-
矢量参数(Vector Parameter) x 1
-
标量参数(Scalar Parameter) x 2
-
-
材质表达式节点现已添加到图中,我们现在需要对其进行命名,并在其中填充一些默认值。在此示例中,我们将对节点指定下列名称和默认值。
属性名称
值
Base_Color
R:1.0 G:1.0 B:1.0
Roughness
0.35
Subsurface_Amount
0.5
填写所有内容后,你的着色器图应该如下所示。
-
材质表达式节点现已设置完毕,我们现在可以将它们连接到主材质节点。 要将节点连接到主材质节点,请使用 鼠标左键 单击节点 右侧 的 白色圆圈 。 按住 鼠标左键 向 右 拖动,这时会出现连接线。按住 鼠标左键 继续向 右 拖动,直至到达主材质节点上要使用的输入为止。 当鼠标位于你要使用的输入上时,释放 鼠标左键 以建立连接。
-
所有内容现已连接完毕,我们现在可以向材质添加次表面轮廓。 为此,请先在 细节(Details) 面板的 材质(Material) 部分中找到 次表面轮廓(Subsurface Profile) 输入。 然后,使用 鼠标左键 在指示 无(None) 的区域中单击。 执行此操作时,你将看到上述步骤中创建的次表面轮廓,请通过单击选中此轮廓。
如果你未提供次表面轮廓,那么系统将会使用默认的次表面轮廓。使用的默认次表面轮廓是白种人皮肤的近似表示。
-
次表面轮廓已应用,材质表达式已链接至主材质节点,你现在可以编译着色器并准备好根据此材质建立材质实例。 完成材质后,它应该如下所示。
在材质实例中使用次表面轮廓
-
材质现已创建并通过编译,你现在可以建立一些材质实例,以便更快地微调参数。 要根据材质来建立材质实例,请先在 内容浏览器 中找到该材质,然后 右键单击 该材质并选择 创建材质实例(Create Material Instance) 选项。 完成后,你的 内容浏览器 应该如下所示。
-
材质实例现已创建完毕,请在 内容浏览器 中使用 鼠标左键 双击 将其打开。打开后,你应该会看到类似下图的内容。
-
要更改材质实例中的次表面轮廓,请先确保启用 覆盖次表面轮廓(Override Subsurface Profile) ,然后 通过使用 鼠标左键 单击 次表面轮廓(Subsurface Profile) 输入,提供要使用的次表面轮廓。单击该输入后,你应该会看到可供你选择的次表面轮廓。
如果你已在主材质中提供次表面轮廓,那么不需要在材质实例中将其覆盖。仅当你希望使用与已使用的次表面轮廓不同的次表面轮廓时,才需要进行覆盖。
应用次表面轮廓材质
-
材质实例现已创建完毕,我们可以开始测试新材质。 为此,我们首先需要创建新的空白关卡以便在其中工作,方法如下:打开主菜单,然后从 文件(File) 选项中选择 新建关卡(New Level) 。 当系统提示你选择关卡类型时,请选择 空关卡(Empty Level) 。
-
新关卡已创建完毕,我们现在需要添加一些光源,以便测试次表面材质的外观。我们将要添加的第一个光源是 点光源 。要向场景中添加点光源,我们首先需要找到点光源:它位于 模式(Modes) 菜单的 光源(Lights) 选项下。找到点光源之后,你可添加一个点光源到屏幕,方法如下:首先使用 鼠标左键 选中这个点光源,然后按住 鼠标左键 将其拖到场景中,最后释放 鼠标左键 即完成添加。添加到场景后,请使用 鼠标左键 单击该光源,将其选中。然后,输入下列值。
属性名称
值
位置(Location):
X:230,Y:-67,Z:79
强度(Intensity):
128
接下来,我们将添加一个 聚光源 。聚光源位于"模式"(Modes)面板的 光源(Lights) 部分中点光源的正下方。你可以像添加点光源一样,将聚光源添加到屏幕。添加聚光源之后,请输入下列值。
属性名称
值
位置(Location):
X:-320,Y:100,Z:-270
旋转(Rotation):
X:0,Y:50,Z:0
强度(Intensity):
39764
完成后,你应该看到类似下图的内容。
-
所有光源现已添加完毕,我们现在可以添加用来执行测试的静态网格体。在本示例中,我们将使用下列网格体。
StaticMesh'/Game/StarterContent/Props/SM_Chair.SM_Chair'
如果你找不到SM_Chair网格体,那么可能是因为你未将初学者内容包包括在你的项目中。 要了解更多关于初学者内容包的信息,请参阅
[初学者内容包](Basics/Projects/Browser/Packs)文档页面。找到该网格体后,请将其从 内容浏览器 拖放到关卡中。 放入关卡后,请将其位置设置为环境中的 0,0,0 。 完成后,你的关卡视口应该如下所示。
-
静态网格体现已放入关卡,我们现在可以对其应用次表面材质。 为此,请先在 内容浏览器 中找到次表面材质。 找到该材质后,请将其从 内容浏览器 拖放到网格体上,以应用该材质。
调整次表面轮廓
-
将材质实例应用于椅子之后,现在可以调整次表面轮廓设置。 为此,我们首先需要在 内容浏览器 中使用 鼠标左键 双击 该次表面轮廓,以将其打开。 执行此操作时,你应该会看到类似于下图的显示内容。
你可使用 鼠标左键 单击要编辑的属性以显示取色器,从而调整 次表面轮廓 的属性。
-
散射半径: 执行散射的距离(采用世界空间单位)。
-
次表面颜色: 次表面颜色可用作次表面效果的遮罩或权重。黑色表示不会发生次表面散射。 白色表示所有光线都进入材质并向四周散射。非灰阶值可以对进入表面的 颜色成分进行更多控制,从而产生外观更加复杂的着色。
-
衰减颜色(Falloff Color): 衰减颜色用于定义光线进入材质后的材质散射颜色。 如果你希望在看到散射的区域实现更加复杂的着色,那么应该避免在此处使用鲜艳的颜色。
-
-
请记住,你可以实时调整次表面轮廓的参数,如下所示。
提示与技巧
次表面轮廓的渲染方式决定了你需要了解一些提示与技巧,才能充分地加以利用。
散射半径
将次表面轮廓的 散射半径(Scatter Radius) 设置为相当大的数值将导致下图所示的渲染错误。
在左侧的图中,"散射半径"(Scatter Radius)设置为 50。 请注意,这看起来就像是在表面渲染了多幅图像一样。 现在,看一下右图。在此图中,"散射半径"(Scatter Radius)设置为 5.0。 请注意,图像看上去更加柔和更加自然。这就是我们尝试实现的效果类型。
将材质实例与次表面轮廓相结合
将材质实例与次表面轮廓结合使用是一种相当不错的方法,这样就可以 对结果进行最大程度的控制,其原因如下。
-
材质实例允许你实时地调整值,这样就可以更迅速地看到结果。
-
你可使用 不透明(Opacity) 输入来限制次表面对表面的影响。但是,建议你保持此值设置为1,并在次表面轮廓内调整参数。仅当你发现单单调整次表面轮廓无法实现所需的结果时,才应调整此值。
-
每个取色器的 值(Value) 滑块都控制次表面效果的影响范围。这个值设置得越接近白色,效果越显著。这个值设置得越接近黑色,效果就越不明显。