材质编辑器 - 在材质中使用次表面轮廓

渲染逼真人体皮肤的能力,对于任何现代电子游戏引擎来说都不可或缺。为了满足此需求,虚幻引擎 4 (UE4) 现在提供了一种专门用于皮肤或蜡状表面的明暗处理方法,称为 次表面轮廓。 “次表面轮廓”明暗处理模型具有与 次表面 明暗处理模型类似的属性,其关键区别在于渲染方式有所不同。 “次表面轮廓”使用基于屏幕空间的渲染方法,因为这有助于更好地显示人体皮肤上的微妙次表面效果,而反向散射是仅在少数情况(例如,耳朵)下才会出现的次级效果。 以下文档将阐述什么是次表面轮廓以及如何在工作中使用它们。

使材质能够使用次表面轮廓

您可通过下列步骤使材质能够使用次表面轮廓。

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

  2. 接着,在 内容浏览器 中,使用 鼠标左键双击 该材质以将其打开。

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

  4. 现在,您可以通过在 细节(Details)面板的 次表面轮廓(Subsurface Profile)部分中输入,来指定一个 次表面轮廓SSP_Apply_SSP.png

  5. 现在,此材质已准备好与次表面轮廓配合使用。

创建次表面轮廓

以下是创建次表面轮廓的步骤。

  1. 首先,在 内容浏览器右键单击。然后,选择 材质与纹理(Materials & Textures)选项,并选择 次表面轮廓(Subsurface Profile)选项。

    2.png

  2. 选择并创建次表面轮廓之后,可以对其进行命名。 在此示例中,我们将这个次表面轮廓命名为 SSP_00。 完成后,结果如下图所示。

    SSP_Creating_Naming_SSP.png

创建使用次表面轮廓的材质

材质和次表面轮廓现已创建完毕,您可以开始在其中填充数据。 在下列步骤中,我们将创建可以使用次表面轮廓的材质和材质实例。

  1. 我们需要执行的第一项操作是,确保打开上文所创建的次表面材质。如果您已打开该材质,请前进到下一步。 否则,为了打开该材质,请先在 内容浏览器 中找到它,然后通过 鼠标左键双击 将其打开。 完成后,您在屏幕上应该看到类似下图的内容。

  2. 打开材质后,可以布置一些材质表达式节点。在本教程中,我们将使用下列节点。

    • 矢量参数(Vector Parameter)x 1

    • 标量参数(Scalar Parameter)x 2

    SSP_Material_Nodes.png

  3. 材质表达式节点现已添加到图中,我们现在需要对其进行命名,并在其中填充一些默认值。在此示例中,我们将对节点指定下列名称和默认值。

    属性名称
    Base_Color R:1.0 G:1.0 B:1.0
    Roughness 0.35
    Subsurface_Amount 0.5

    填写所有内容后,您的着色器图应该如下所示。 SSP_Named_Value_Nodes.png

  4. 材质表达式节点现已设置完毕,我们现在可以将它们连接到主材质节点。 要将节点连接到主材质节点,请使用 鼠标左键 单击节点 右侧白色圆圈。 按住 鼠标左键 拖动,这时会出现连接线。按住 鼠标左键 继续向 拖动,直至到达主材质节点上要使用的输入为止。 当鼠标位于您要使用的输入上时,释放 鼠标左键 以建立连接。

  5. 所有内容现已连接完毕,我们现在可以向材质添加次表面轮廓。 为此,请先在 细节(Details)面板的 材质(Material)部分中找到 次表面轮廓(Subsurface Profile)输入。 然后,使用 鼠标左键 在指示 无(None)的区域中单击。 执行此操作时,您将看到上述步骤中创建的次表面轮廓,请通过单击选中此轮廓。

    如果您未提供次表面轮廓,那么系统将会使用默认的次表面轮廓。使用的默认次表面轮廓是白种人皮肤的近似表示。

  6. 次表面轮廓已应用,材质表达式已链接至主材质节点,您现在可以编译着色器并准备好根据此材质建立材质实例。 完成材质后,它应该如下所示。

在材质实例中使用次表面轮廓

  1. 材质现已创建并通过编译,您现在可以建立一些材质实例,以便更快地微调参数。 要根据材质来建立材质实例,请先在 内容浏览器 中找到该材质,然后 右键单击 该材质并选择 创建材质实例(Create Material Instance)选项。 完成后,您的 内容浏览器 应该如下所示。

    SSP_Create_New_Material_Instance.png

  2. 材质实例现已创建完毕,请在 内容浏览器 中使用 鼠标左键双击 将其打开。打开后,您应该会看到类似下图的内容。

  3. 要更改材质实例中的次表面轮廓,请先确保启用 覆盖次表面轮廓(Override Subsurface Profile),然后 通过使用 鼠标左键 单击 次表面轮廓(Subsurface Profile)输入,提供要使用的次表面轮廓。单击该输入后,您应该会看到可供您选择的次表面轮廓。

    如果您已在主材质中提供次表面轮廓,那么不需要在材质实例中将其覆盖。仅当您希望使用与已使用的次表面轮廓不同的次表面轮廓时,才需要进行覆盖。

应用次表面轮廓材质

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

调整次表面轮廓

  1. 将材质实例应用于椅子之后,现在可以调整次表面轮廓设置。 为此,我们首先需要在 内容浏览器 中使用 鼠标左键双击 该次表面轮廓,以将其打开。 执行此操作时,您应该会看到类似于下图的显示内容。

    SSP_Subsurface_Profile.png

    您可使用 鼠标左键 单击要编辑的属性以显示取色器,从而调整 次表面轮廓 的属性。

    • 散射半径(Scatter Radius):执行散射的距离(采用世界空间单位)。

    • 次表面颜色(Subsurface Color):次表面颜色可用作次表面效果的蒙版或权重。黑色表示不会发生次表面散射。 白色表示所有光线都进入材质并向四周散射。非灰阶值可以对进入表面的 颜色成分进行更多控制,从而产生外观更加复杂的明暗处理。

    • 衰减颜色(Falloff Color):衰减颜色用于定义光线进入材质后的材质散射颜色。 如果您希望在看到散射的区域实现更加复杂的明暗变化,那么应该避免在此处使用鲜艳的颜色。

  2. 请记住,您可以实时调整次表面轮廓的参数,如下所示。

提示与技巧

次表面轮廓的渲染方式决定了您需要了解一些提示与技巧,才能充分地加以利用。

散射半径

将次表面轮廓的 散射半径(Scatter Radius)设置为相当大的数值将导致下图所示的渲染错误。 SSP_Big_Small_Scatter_Radius.png

在左侧的图中,“散射半径”(Scatter Radius)设置为 50。 请注意,这看起来就像是在表面渲染了多幅图像一样。 现在,看一下右图。在此图中,“散射半径”(Scatter Radius)设置为 5.0。 请注意,图像看上去更加柔和更加自然。这就是我们尝试实现的效果类型。

将材质实例与次表面轮廓相结合

将材质实例与次表面轮廓结合使用是一种相当不错的方法,这样就可以 对结果进行最大程度的控制,其原因如下。

  • 材质实例允许您实时地调整值,这样就可以更迅速地看到结果。

  • 您可使用 不透明(Opacity)输入来限制次表面对表面的影响。但是,建议您保持此值设置为 1,并在次表面轮廓内调整参数。仅当您发现单单调整次表面轮廓无法实现所需的结果时,才应调整此值。

  • 每个取色器的 值(Value)滑块都控制次表面效果的影响范围。这个值设置得越接近白色,效果越显著。这个值设置得越接近黑色,效果就越不明显。