材质编辑器 - 如何在材质中使用次表面散射

本页面的内容:

“次表面散射”术语用来描述光线穿过透明/半透明表面时发生散射的照明现象。 虚幻引擎 4 (UE4) 提供了称为 次表面 的特殊 明暗处理模型 ,专门用于需要此类互动的材质,例如皮肤或蜡状物。 以下操作指南将阐述在材质中使用次表面散射所需了解的所有内容。

启用次表面明暗处理模型

使材质能够使用次表面明暗处理模型的步骤如下所示。

  1. 首先,通过在 内容浏览器右键单击,然后从 创建基本资产(Create Basic Asset)列表中选择“材质”(Material),创建新材质。 创建之后,务必对该材质进行命名。在此示例中,材质将命名为 MAT_Subsurface_00。 完成后,您的 内容浏览器 应该如下所示。

    SSM_Create_New_Material.png

  2. 接着,使用 鼠标左键双击 该材质以将其打开。

    SSM_Open_New_Material.png

  3. 材质现已打开,我们需要将其 明暗处理模型(Shading Model)默认点亮(Default Lit)更改为 次表面(Subsurface)

  4. 此材质现在已可用作次表面材质。

设置次表面材质

继续使用上文中启用了次表面散射的材质,让我们设置一个基本材质,以便查看关卡内作用中的次表面散射。

  1. 我们需要布置一些材质表达式节点,以便有一些可处理的内容。 在本示例中,我们将添加下列节点。

    • 矢量参数(Vector Parameter)x 2

    • 标量参数(Scalar Parameter)x 2

    SSM_Adding_Nodes.png

    我们使用参数材质节点而非一般材质节点的原因是,这样可以根据此材质来建立材质实例,从而方便在编辑器内进行微调。

  2. 在开始连接节点之前,我们首先需要对其命名,并为其设置默认值。这些节点的名称及默认值如下所示。

    SSM_Named_Nodes.png

    属性名称
    Base_Color R:1.0,G:1.0,B:1.0
    Roughness 0.35
    Subsurface _Amount 0.5
    Subsurface_Color R:1.0,B:0,G:0
  3. 命名材质节点并填写正确的数据之后,可以将各个材质节点连接到主材质节点。 要将节点连接到主材质节点,请使用 鼠标左键 单击节点右侧的白色圆圈。 按住 鼠标左键 拖动,这时会出现连接线。 按住 鼠标左键 继续向右拖动,直至到达主材质节点上要使用的输入为止。 当鼠标位于您要使用的输入上时,释放 鼠标左键 以建立连接。

  4. 所有节点都已连接完毕,请务必按 应用(Apply)按钮以编译材质。编译完成后,结果如下图所示。 SSM_Finshed_Material.png

  5. 编译材质完成后,您现在可关闭材质窗口。接着,在 内容浏览器 内,选中该材质,右键单击,然后从菜单中选择 创建材质实例(Create Material Instance)选项。

应用次表面材质

  1. 材质实例现已创建完毕,我们可以开始测试新材质。 为此,我们首先需要创建新的空白关卡以便在其中工作,方法如下:打开主菜单,然后从 文件(File)选项中选择 新建关卡(New Level)。 当系统提示您选择关卡类型时,请选择 空关卡(Empty Level)

  2. 新关卡已创建完毕,我们现在需要添加一些光源,以便测试次表面材质的外观。我们将要添加的第一个光源是 点光源。要向场景中添加点光源,我们首先需要找到点光源:它位于 模式(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

    完成后,您应该看到类似下图的内容。

  3. 所有光源现已添加完毕,我们现在可以添加用来执行测试的静态网格。在本示例中,我们将使用下列网格。

    StaticMesh'/Game/StarterContent/Props/SM_Chair.SM_Chair'

    如果您找不到 SM_Chair 网格,那么可能是因为您未将起步内容包括在您的项目中。 要了解更多关于起步内容的信息,请参阅 起步内容 文档页面。

    找到该网格后,请将其从 内容浏览器 拖放到关卡中。 放入关卡后,请将其位置设置为环境中的 0,0,0。 完成后,您的关卡视口应该如下所示。 SSM_Adding_Meshes.png

  4. 静态网格现已放入关卡,我们现在可以对其应用次表面材质。 为此,请先在 内容浏览器 中找到次表面材质。 找到该材质后,请将其从 内容浏览器 拖放到网格上,以应用该材质。

使用次表面材质

次表面材质现已应用完毕,您可以开始调整材质实例的设置。 在下列各节中,我们将回顾如何控制次表面材质的外观,以及如何调整材质实例中的各种选项以获得我们所需的结果。

“不透明”(Opacity)控制

在次表面材质的当前设置中,“不透明”(Opacity)输入控制着我们要让对象散射的光线量。 设置 0 将允许所有光线散射,而设置 1 不允许任何光线散射。 以下示例显示椅子网格的背部,其中,左图的“不透明”(Opacity)值设置为 0,中图设置为 0.5,而右图设置为 1.0。 请注意,随着数值从 0 增大到 1,我们可以看到穿过对象的光线量变得越来越少。 SSM_Different_Opacity_Settings.png

虽然“不透明”(Opacity)确实有助于消除大量散射光,但是您可能会注意到,仍存在一些次表面散射。要完全消除该效果,您还必须调整“次表面颜色”(Subsurface Color)的 值(Value)(下面的“次表面颜色值”一节提供了这方面的更多信息。)

次表面颜色值

虽然您可通过“不透明”(Opacity)输入来调整次表面散射量,但也可以使用 取色器 中的 值(Value)滑块进行此调整。 例如,将“不透明”(Opacity)设置为值 1.0 并将“次表面颜色值”(Subsurface Colors Value)从白色调整为黑色将有效地关闭次表面散射,如以下示例所示。 SSM_Color_Value_Example_00.png

如果您执行相反的操作,将 取色器 中的 值(Value)滑块调整为白色,那么将重新启用次表面散射,如以下示例所示。 SSM_Color_Value_Example_01.png

以下是以实时方式调整值的示例。请注意,随着颜色值从红色调整为黑色,次表面散射影响量也会受影响。

使用纹理作为次表面影响蒙版

您可使用纹理作为蒙版,以进一步控制接收或不接收次表面散射的区域。 为此,您只需将所要使用的纹理作为蒙版连接到材质的 不透明(Opacity)通道。 在以下示例中,我们不仅使用蒙版纹理,还使用标量值来控制蒙版强度,以便进一步控制所发生的次表面散射量。

SSM_Masked_Texture.png

蒙版纹理根据从黑色到白色的值来工作。接近黑色的值将允许次表面效果穿透,而接近白色的值不允许次表面效果穿透。

下图为使用蒙版纹理时以上材质在关卡中的显示效果。 请注意椅子上的黑色斑点。 这些黑色斑点是在蒙版纹理中使用纯白色值的结果。

SSM_Masked_Texture_Result.png