在材质中使用次表面散射

在材质中使用次表面散射着色模型的指南

Windows
MacOS
Linux

"次表面散射"术语用来描述光线穿过透明/半透明表面时发生散射的照明现象。 虚幻引擎 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

Tags
Select Skin
Light
Dark

Welcome to the new Unreal Engine 4 Documentation site!

We're working on lots of new features including a feedback system so you can tell us how we are doing. It's not quite ready for use in the wild yet, so head over to the Documentation Feedback forum to tell us about this page or call out any issues you are encountering in the meantime.

We'll be sure to let you know when the new system is up and running.

Post Feedback