在创建电影或过场动画时,你常常需要想办法更好地突显角色或场景的轮廓。这时你需要用到一种光照技术,称为边沿光照或边缘光照。
菲涅尔(Fresnel) 这一术语用于说明你看到的光线如何根据视角的变化以不同的强度反射。例如,你站在水池边,低头看脚下的水,你会发现水面的反射不是特别强烈。随着你抬起头,使你的视线与水池中的水面平行,你会开始发现水面越来越波光粼粼。水和玻璃都表现出很强的菲涅尔倾向,即视线垂直于表面时,它们看起来相对透明,视线未垂直于表面时,它们会反射更多光线。
简单菲涅尔效果制作

用物体的顶点法线与摄像机向量进行点乘。点乘运算可以获取两个向量之间的夹角。因为摄像机向量设置指向摄像机,所以当顶点法线与我们的视线垂直时(也就是顶点法线与摄像机向量夹角为0度时),该点的值为1,当顶点法线与摄像机向量夹角为90度时,该点的值为0。材质里预览使用的模型为一个球型,所以从我们视角里看到的圆的圆心为1,边缘为0。然后为了使我们能够调节这个效果,我们可以乘以一个数值,这个数值决定着中间白色区域(靠近1的区域)的大小。使用power(由于power乘方运算的特点,power可以用于调节对比度)节点可以调节黑色区域与白色区域的过度。当数值越接近0时,过度越柔和,当数值越大时,过度越坚硬。最后用saturate将数值钳制在0到1之间,再用1-x使黑白反向,就形成上图的效果。
Fresnel节点
虚幻引擎中有已经封装好的菲涅尔节点。

Fresnel节点有3个参数:
| ExponentIn | 此输入将控制菲涅尔效果的衰减。 |
| BaseReflectFractionIn | 这指定了视线垂直于表面时的高光度反射率。将其设置为值1实际上会禁用菲涅尔。 |
| 法线(Normal) | 你可以输入法线贴图来更改菲涅尔效果的渲染方式。法线贴图必须从切线空间变换为世界空间。 |
ExponentIn对应我们制作的简单菲涅尔效果的黑色部分大小,BaseReflectFractionIn是黑与白之间的过度效果。
Fresnel_Function 材质函数
向量操作(Vector Ops) 类别中的 Fresnel_Function 材质函数是高度可自定义的菲涅尔版本,用于提供对菲涅尔效果的多个不同方面的控制。

| 法线向量(V3)(Normal Vector (V3)) | 你可以在此处输入法线来修改菲涅尔效果的渲染。为获得准确的结果,你必须通过变换节点(切线空间到世界空间)来传递法线贴图。 |
| 摄像机向量(V3)(Camera Vector(V3)) | 手动更改用于确定摄像机和表面法线之间点积的摄像机向量。 |
| 反转菲涅尔(B)(Invert Fresnel(B)) | 反转菲涅尔的效果。如果你希望菲涅尔仅在中心或边缘应用,这会很有用。 |
| 能力(S)(Power(S)) | 输入标量以控制菲涅尔效果的范围(或衰减)。输入的数字越大,受影响的区域越小。输入的数字越小,那么菲涅尔节点影响的表面区域越大。 |
| 使用低开销对比度(B)(Use Cheap Contrast(B)) | 启用此属性后,菲涅尔节点会使用开销更低的方法来计算亮色与暗色之间的对比度。 |
| 低开销对比度暗色(S)(Cheap Contrast Dark (S)) | 此属性将控制菲涅尔的昏暗程度。这仅在启用 使用低开销对比度(Use Cheap Contrast) 时有效果。 |
| 低开销对比度亮色(S)(Cheap Contrast Bright (S)) | 此属性将控制菲涅尔效果的明亮程度。这仅在启用 使用低开销对比度(Use Cheap Contrast) 时有效果。 |
| 限制菲涅尔点积(B)(Clamp Fresnel Dot Product (B)) | 将菲涅尔点积的结果限制在0到1之间。 此属性默认为true,但你可以使用设置为false的 静态布尔(Static Bool) 将其覆盖。 |