虚幻引擎 Dot Product 节点

Dot Product(点积)节点是虚幻引擎5中一个非常基础但强大的数学工具,常被用于实现光照、边缘光(菲涅尔效应)、方向遮罩等核心效果。它的核心价值在于量化两个向量之间的方向关系,生成一个范围在 -1 到 1 之间的标量值

📝 节点基础:Dot Product 在计算什么?

我们可以把点积的结果看作两个向量“方向一致程度”的度量。其数学本质是 A·B = |A||B|cosθ,当两个向量都经过归一化(Normalize)处理后,结果就简化为 cosθ,即夹角的余弦值

  • 结果为 1:两个向量完全相同,夹角 0°。

  • 结果为 0:两个向量互相垂直,夹角 90°。

  • 结果为 -1:两个向量完全相反,夹角 180°。

这个简洁的特性,使其可以应用到材质、蓝图、控制绑定(Control Rig)等多种系统中。

🛠️ 关键操作步骤与配合节点

Dot Product 通常需要与其他节点组合,才能发挥出最大作用。下面是一套经典且通用的设置流程:

  1. 添加与连接:在节点面板搜索 Dot 或 Dot Product 节点并添加到图表。然后将需要进行计算的两个向量(如法线、视线、光源方向)分别连接到 A 和 B 输入端。

  2. 归一化处理在任何 Dot Product 计算之前,请务必使用 Normalize(归一化)节点处理输入的向量。 这能确保向量长度为 1,使其输出严格在 -1 到 1 之间,保证判断逻辑的准确性

  3. 结果调整:点积的输出是带有负值的,这通常不符合我们对颜色或蒙版 0 (黑) 到 1 (白) 的定义,需要进行转换

    • 绝对值(Abs:将结果范围变为 0 到 1。适用于只需关注“是否垂直”的场景,比如制作前后对称的发光效果

    • 饱和/钳制(Clamp:将结果钳制在 0 到 1 之间。例如,可以将菲涅尔节点中默认开启的“Clamp Fresnel Dot Product”选项设为 False,以便获得负值区域的自发光效果

    • 反转(One Minus:用 1 减去 点积结果,实现逻辑翻转。菲涅尔边缘光效果的形成,就源于此操作

  4. 逻辑控制Step 和 SmoothStep 节点常用来创建硬边缘遮罩或实现柔和过渡,这是实现卡通渲染风格的关键

🧩 三个核心应用案例

案例一:打造菲涅尔边缘光 / 自发光材质

菲涅尔效应是指视线与表面夹角越大(越接近边缘),反射/发光越强的现象。这是一个Dot Product最经典的应用案例,能为科幻道具或角色增添科技感。

  • 核心逻辑:视角方向 与 表面法线。

  • 节点步骤

    1. 右键获取 Camera Vector (相机向量)

    2. 再获取 Vertex Normal (顶点法线,或Pixel Normal)。

    3. 用 Normalize 节点归一化这两个向量。

    4. 将它们连接到 Dot 节点上,计算点积。

    5. 点积结果连接 One Minus 节点,实现“从边缘到中心”的翻转。

    6. 将 One Minus 的输出连接到材质的 自发光 (Emissive Color) 接口。

    7. 想要更强的控制,可以将最终输出与一个 Multiply (乘法)节点相乘来调节强度

案例二:制作方向遮罩

使用方向遮罩可以在模型上精确地混合材质,例如模拟积雪只在顶层出现的效果。

  • 核心逻辑:表面法线 与 “世界向上” 向量。

  • 节点步骤

    1. 获取 World Position 并连接到 Constant 中 (0, 0, 1) 作为世界向上向量。

    2. 获取 Pixel Normal (像素法线)并用 Normalize 归一化。

    3. 将二者连接到 Dot 节点。

    4. 将点积结果连接 Smooth Step 节点,制作平滑的过渡遮罩。

    5. 最后用 Smooth Step 的输出,作为 Lerp (线性插值)节点的 Alpha(蒙版)输入,来混合两种基础材质

案例三:在蓝图中检测角色视野

在游戏玩法中,Dot Product可以用来判断一个目标是否在角色的视野范围内。

  • 核心逻辑:角色正朝向 与 目标方向。

  • 节点步骤

    1. 在角色蓝图的事件图表中,获取角色的 Get Actor Forward Vector (获取前向向量)

    2. 获取目标的 Get Actor Location (获取位置),然后减去自身位置,再用 Normalize 归一化,计算出指向目标的方向。

    3. 将这两个向量连接到 Dot 节点。

    4. 当点积结果大于某个阈值,就意味着敌人进入了你的视野范围

      • 计算精确角度:如需精确角度,可将点积结果连接到 ACos (反余弦)节点(单位:弧度),再通过 Radians to Degrees 转换成度数

🚀 进阶技巧:直接使用材质函数

在需要更高级控制时,建议使用虚幻内置的材质函数:

  • 菲涅尔(Fresnel)函数:引擎已封装的节点,效果与手动连接法线和视线向量一致,但提供了更多内置控制选项

  • 向量运算(Vector Ops)函数:提供“限制菲涅尔点积”等高级功能,可用于实现更精确的材质效果控制

💎 总结

Dot Product是一个通过简单数值就能精确描述向量关系的节点。掌握后你会发现,许多看似复杂的高级效果,都是由它的巧妙使用构建而成。

感谢您的来访,获取更多精彩文章请收藏本站。

THE END
喜欢就支持一下吧
点赞8 分享
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称表情代码图片

    暂无评论内容