材质 - 在材质中使用菲涅耳效果

本页面的内容:

FN_Fresnel_Sample.png

创建电影时,您常常需要更好地凸显人物的轮廓。这种照明技术通常称为“边缘照明”,它 涉及添加额外的光线,以帮助更好地区分人物边缘与背景。虽然这种技术对于电影来说效果相当不错,但是,向任何 3D 场景添加额外的光线也意味着 额外增加复杂性,这种复杂性有可能会迅速变得难以管理。虚幻引擎 4 (UE4) 提供了一种解决方案,即,允许美工使用人物的材质模拟相同的基本效果。 如此一来,美工就会对该效果的外观拥有更大的控制权,甚至可以使用这种效果向不照亮对象添加照明以提高性能,等等。

菲涅耳效果

菲涅耳效果 术语用来描述您所看到的光线如何根据您的查看角度以不同强度反射。 例如,如果您站在一个池子旁边直视池底,那么将看不到水中的大量反光。 当您开始移动头部,使得池水水面与您的视平线越来越平行时,您会开始注意到水中的反光越来越多。

在 UE4 中,“菲涅耳效果”(Fresnel)材质表达式节点会根据表面法线与摄像机方向的点乘积来计算衰减。 当表面法线正对着摄像机时,输出值为 0,这表示不应产生菲涅耳效果。 当表面法线与摄像机垂直时,输出值为 1,这表示应产生完全的菲涅耳效果。 然后,将结果限制在 [0,1] 范围内,以确保不会在中央产生任何负颜色。下图说明这一概念。

FN_Caculation_Example.png

在球体中央(0 所处的位置),您可以看到这里没有任何菲涅耳效果。这是因为,摄像机正对着表面法线。 当表面法线变得与摄像机越来越垂直时,即,越来越接近数字 1 时,菲涅耳效果变得越来越明显, 而这正是我们所期望的行为类型。

“菲涅耳效果”(Fresnel)节点明细

搜索“菲涅耳效果”(Fresnel)材质表达式时,您会发现在 实用程序(Utility)矢量操作(Vector Ops)下各有一个“菲涅耳效果”(Fresnel)。 虽然这两个材质表达式的名称及作用都相同,但它们在进行设置以备使用方面的确有差别。

“菲涅耳效果”(Fresnel)实用程序

本操作指南使用 实用程序(Utility)下的“菲涅耳效果”(Fresnel),这是两种设置及使用方法中较为简单的一种。 强烈建议 您先使用这个版本,在对这个节点的功能有较好的理解之后再使用另一版本。

FN_Fresnel_Node.png

属性 说明
ExponentIn 此属性控制菲涅耳效果的衰减。
BaseReflectFrctionIn 此属性指定从正对表面的方向查看表面时,镜面反射的小数。将此属性设置为值 1 会有效禁用菲涅耳效果
法线(Normal) 在这里,您可输入法线,以影响菲涅耳效果的渲染方式。此属性无法通过提供法线贴图或矢量 3 输入来设置。

您可使用两个选项来调整“菲涅耳效果”(Fresnel)材质表达式的值。

使用法线贴图时,请确保添加 转换(Transform)表达式节点。这会将该法线贴图从切面空间转换到世界空间。如果未执行此转换,那么您的法线贴图可能无法以您期望的方式来影响菲涅耳效果。

“菲涅耳效果”(Fresnel)矢量操作

矢量操作(Vector Ops)下的“菲涅耳效果”(Fresnel)是菲涅耳效果的高度可定制版本,它使您能够影响菲涅耳效果渲染方式的许多不同方面。 但是,这项附加功能有其缺点,即,不正确的设置可能会导致渲染菲涅耳效果时出现伪影或错误。 仅当 实用程序(Utility)下的“菲涅耳效果”(Fresnel)无法产生您所需的结果时,才应使用这个节点。

FN_Fresnel_Node_VO.png

属性 说明
法线矢量(Normal Vector)(V3) 在这里,您可输入法线,以影响菲涅耳效果的渲染方式。此属性无法通过提供法线贴图或矢量 3 输入来设置。
摄像机矢量(Camera Vector)(V3) 此属性使您能够影响用来确定摄像机与表面法线之间的点乘积的摄像机。
反转菲涅耳效果(Invert Fresnel)(B) 此属性用来反转菲涅耳效果。此属性在您希望仅在中央或边缘处应用菲涅耳效果时非常有用。
强度(Power)(S) 此属性用来控制菲涅耳效果的强度。输入较大的数值将减小所影响的区域。较小的数值将使菲涅耳效果影响较大的区域。
使用低成本对比(Use Cheap Contrast)(B) 此属性允许菲涅耳效果使用成本较低的方法来计算明暗对比。
低成本对比黑暗(Cheap Contrast Dark)(S) 此属性用于控制菲涅耳效果的黑暗程度。此属性只有在 使用低成本对比(Use Cheap Contrast)启用后才有效。
低成本对比明亮(Cheap Contrast Bright)(S) 此属性用于控制菲涅耳效果的明亮程度。此属性只有在 使用低成本对比(Use Cheap Contrast)启用后才有效。

如何在材质中使用菲涅耳效果

以下是创建使用菲涅耳效果的材质的步骤。

  1. 在本示例中,我们将创建一个新材质,但您仍可将此处学习的概念应用于您所需的任何现有材质。 要创建新材质,请在 内容浏览器右键单击,然后从“创建基本资产”(Create Basic Asset)列表中选择“材质”(Material)。 创建材质后,将其命名为 Fresnel_Material

    FN_Creat_New_Material.png

  2. 内容浏览器 中,使用 鼠标左键 双击 该新材质以将其打开。 打开材质后,通过在 选用板 搜索菜单中进行搜索,找到所需的材质表达式节点。 要将材质表达式节点放入材质图,请先使用 鼠标左键 选中您想要放置的节点,然后按住 鼠标左键 将该节点拖到材质图中。 在本教程中,需要下列类型及数量的节点。

    节点名称 数量
    矢量参数(Vector Parameter)节点 2
    标量(Scalar)节点 2
    菲涅耳效果(Fresnel)节点 1

    完成之后,您的材质图应该类似于下图。

    FN_Adding_Nodes.png

    当您搜索“菲涅耳效果”(Fresnel)材质表达式时,您会找到可供您选择的两种不同类型。在本操作指南中,我们仅使用 实用程序(Utility)下的“菲涅耳效果”(Fresnel)。

  3. 需要的材质表达式节点现已添加到材质图中,您可以开始将它们连接到一起并指定参数基本值。 在此示例中,我们将使用下列参数名称和默认值。

    名称
    Base_Color 0.5, 0.5, 0.5
    Roughness 0.5
    Fresnel_Color 1.0, 0.0, 0.0
    Fresnel_Exp 0.8

    完成之后,您的材质图应该类似于下图。

    FN_Completed_Materail.png

  4. 将所有内容连接到一起之后,务必 应用(Apply)保存(Save)材质。保存材质后,您可关闭材质编辑器。

    FN_Apply_Save.png

  5. 材质现已编译、保存和关闭,请在 内容浏览器 中找到该材质,并 右键单击 它。 从弹出菜单中选择 创建材质实例(Create Material Instance)选项。选择此选项将创建新的材质实例。 完成后,您的 内容浏览器 应该如下所示。
    FN_Create_New_Material_Instance.png

  6. 内容浏览器 中,使用 鼠标左键双击 新创建的材质实例将其打开。 打开材质实例后,您可以开始调整材质实例参数,但首先必须通过单击参数名称旁边的灰色框启用要编辑的参数。 执行此操作后,该参数即可编辑。例如,如果启用 Fresnel_Exp 参数,那么您可增强或减弱表面上的菲涅耳效果。

请记住,对 Fresnel_Exp 输入的数值越大,将使菲涅耳效果离边缘越近,而数值越小则该效果越接近中心。 以下是不同 Fresnel_Exp 值对菲涅耳效果的影响示例。 请注意,随着数值增大,菲涅耳效果会离网格边缘越来越近,如以下示例所示。 FN_Different_Fresnel_Exp_Values.png

“菲涅耳效果”(Fresnel)与法线贴图

如果您输入法线贴图到“菲涅耳效果”(Fresnel)的“法线”(Normal)输入,您会看到,可以通过多种非常有趣的方式来影响表面。 这是因为,法线贴图会影响表面法线。正如我们以前所了解到的那样,“菲涅耳效果”(Fresnel)会检查表面法线是否与摄像机垂直。 如果它与摄像机垂直,那么将出现菲涅耳效果。在平滑的球体上,这意味着只会在对象边缘产生菲涅耳效果。 但是,引入法线贴图时,我们将表面法线更改为不再平滑,从而使菲涅耳效果可在表面法线平滑时正常情况下 不会出现该效果的位置出现。

如需这种情况的可视示例,请查看下图,此图显示表面法线对菲涅耳效果的影响。 左侧(图 1)是使用平面表面法线时“菲涅耳效果”(Fresnel)节点的输出。现在,让我们看看右侧的图 2。 在此图中,已输入法线贴图,这使表面法线产生大幅变化。 因为表面法线不再始终平坦,所以显示了更多菲涅耳效果。

FN_Effect_On_Surface_Normal.png

在下图中,我们可以看到不同法线贴图如何以不同方式影响菲涅耳效果。

FN_Fresnel_&_Normal_Map.png

用来创建上述各图的材质就是我们以前创建的材质,但进行了下列修改。

FN_Adding_Normal_Map.png

“菲涅耳效果”(Fresnel)材质表达式也可以通过法线贴图来提供,该贴图可影响菲涅耳效果的渲染方式。 如果您想要使用菲涅耳效果在材质上显示能量护盾等效果,但希望材质在护盾激活前仍正常显示,那么法线贴图特别有用。 要使用以上材质来实现此目标,需完成下列操作。

  1. 首先,更新 半透明照明模式(Translucency Lighting Mode),将其从 体积无方向(Volumetric Non Directional) 更改为 表面半透明体积(Surface Translucency Volume)

  2. 底色(Base Color)粗糙度(Roughness) 更改为使用起步内容 中的 T_Brick_Clay_New_D 纹理。

  3. 接着,更改“法线”(Normal)输入,使其使用同样可在起步内容中找到的 T_Brick_Clay_New_N。

  4. 接着,在选用板中搜索 转换(Transform)表 达式节点,并将其添加到材质图中。确保将其设置为从切面空间转换到世界空间。

  5. 将旧的法线贴图纹理节点连接到“转换”(Transform)节点的输入,并将其输出连接到“菲涅耳效果”(Fresnel)节点的“法线”(Normal)输入,完成后,您的材质应该如下所示。

FN_Fresnel_Normal_Input.png

请注意,砖块看起来丝毫没有菲涅耳效果。 您甚至可以更进一步,添加 乘法(Multiply)常量(Constant) 表达式节点,然后使用这些节点来控制菲涅耳效果的强度。 以下是将这些节点添加到上文所述材质后的情况。

FN_Controal_Fresnel_Effect.png

通过调整已添加的 常量(Constant),您可控制“菲涅耳效果”(Fresnel)对表面的影响。 将数值设置为 0 会关闭此效果,将其设置为任何其他值会使此效果逐步显现,如以下示例所示。

FN_Effect_Amount.png

“菲涅耳效果”(Fresnel)的其他用途

“菲涅耳效果”(Fresnel)的工作方式决定了它不仅可实现边缘照明,还可完成其他任务。 以下是使用“菲涅耳效果”(Fresnel)节点来完成除边缘照明以外的其他任务的一些示例。

结论

向材质添加菲涅耳效果是一种很不错的方法,这有助于更好地凸显人物轮廓,或帮助显示能量护盾特效。 请记住,菲涅耳效果的实现以查看角度和表面法线为基础,因此,如果您想为菲涅耳效果增加一些有趣的细节,请尝试使用其中有少许随机噪声的法线贴图。 并且,请不要忘记,您可使用“菲涅耳效果”(Fresnel)材质表达式来帮助在两个不同输入之间进行混合,这样很容易实现火焰或烟雾等视觉效果。