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) 滑块都控制次表面效果的影响范围。这个值设置得越接近白色,效果越显著。这个值设置得越接近黑色,效果就越不明显。