虚幻引擎 Add / Subtract / Multiply / Divide 节点

在虚幻引擎5的蓝图中,AddSubtractMultiplyDivide是最基础的数学运算节点,通常用于处理游戏逻辑中的数值计算和材质中的颜色与纹理变换。下面以游戏逻辑(蓝图Actor)和材质(材质编辑器)为例,为你梳理这四个节点的完整使用案例和具体操作步骤。


一、准备工作:创建蓝图类

在进行任何蓝图节点操作之前,首先需要一个可用的蓝图类:

  1. 打开虚幻引擎5编辑器,在 内容浏览器(Content Browser) 的空白处 右键单击,从菜单中选择 蓝图类(Blueprint Class)

  2. 在弹出的 选择父类(Pick Parent Class) 窗口中,选择 Actor 作为父类,单击”选择”。

  3. 为新建的蓝图类命名,例如 BP_Math_Demo,然后双击打开蓝图编辑器。

  4. 进入 事件图表(Event Graph) 标签页,即可开始添加和连接节点

提示:在材质编辑器中操作运算节点的步骤同样适用,你只需创建材质资源并在材质图表中执行即可。


二、四则运算节点的基本操作

在事件图表中,右键单击空白区域,在弹出的搜索框中输入运算符对应的字符即可快速创建运算节点

  • 加法节点:输入 +

  • 减法节点:输入 -

  • 乘法节点:输入 *

  • 除法节点:输入 /

每个运算节点包含两个输入引脚(A 和 B)和一个输出引脚(Result),输入可以是变量、常量或其他节点的输出值。这些节点的输入引脚最初为灰色”通配符”状态,当你将某类数据类型的引脚连接到通配符上时,引脚会自动转换为对应的数据类型(整数 int、浮点数 float、向量 vector 等)

此外,每个运算节点都可以添加更多输入——点击节点右侧的 Add pin(+号) 按钮,即可新增输入引脚,实现多个数值的连续运算


三、四个节点的具体应用案例

3.1 Add(加法)——亮度增强与颜色叠加

作用:提亮、叠加、混合、强度增强

  • 常用场景:颜色叠加发光、亮度偏移、多个噪声纹理叠加

  • 效果:数值增大 → 画面更亮、更强烈。

案例:提升角色移动速度

  1. 在 BP_Math_Demo 的事件图表中右键搜索并添加 Event BeginPlay 节点。

  2. 创建 Float 变量命名为 CurrentSpeed,默认值设为 10.0。

  3. 创建 Float 变量命名为 SpeedBoost,默认值设为 5.0。

  4. 添加 Add 节点,将 CurrentSpeed 连接到 A 输入,SpeedBoost 连接到 B 输入。

  5. 将 Add 节点的输出结果通过 Set 节点写回 CurrentSpeed 变量。

  6. 连接执行引脚:BeginPlay → Set CurrentSpeed

  7. 添加 Print String 节点将 CurrentSpeed 的最终值打印到屏幕上,验证结果(10 + 5 = 15)。

材质中的应用:在材质图表中,将基础颜色输出与自发光颜色通过 Add 节点叠加,可实现基础的发光效果

3.2 Subtract(减法)——压暗与差值计算

作用:压暗、反转、差值、去除成分

  • 常用场景:颜色减暗、用 One Minus 实现反转效果、计算两个数值的差值。

  • 在材质着色器图表的溶解效果中,Subtract 常用于配合时间变量周期性改变蒙版大小,从而实现动态的溶解动画

案例:玩家受到伤害计算生命值

  1. 在 BP_Math_Demo 的事件图表中添加 Event ActorBeginOverlap 节点(碰撞重叠事件)。

  2. 创建 Float 变量命名为 PlayerHealth,默认值设为 100.0。

  3. 创建 Float 变量命名为 DamageAmount,默认值设为 15.0。

  4. 添加 Subtract 节点,将 PlayerHealth 连接到 A 输入,DamageAmount 连接到 B 输入。

  5. 将 Subtract 节点的输出通过 Set 节点写回 PlayerHealth

  6. 连接执行引脚:ActorBeginOverlap → Set PlayerHealth

  7. 添加 Print String 节点打印更新后的生命值(100 – 15 = 85)。

3.3 Multiply(乘法)——纹理缩放与遮罩控制

作用:变暗、衰减、遮罩、强度缩放

  • 常用场景:贴图 × 遮罩 = 局部显示、颜色 × 亮度 = 控制强度、光照衰减、纹理比例调整

  • 在蓝图中,使用 ForEachLoop 结合 Multiply 节点可以实现数组中每个值乘以一个系数的批量操作

案例:动态缩放纹理比例

  1. 在内容浏览器中新建材质资源(右键 → 材质),命名为 M_TextureScale,双击打开材质编辑器。

  2. 在材质图表中右键添加 Texture Sample 节点,设置一张基础纹理。

  3. 右键添加 Texture Coordinate 节点,输出材质的 UV 纹理坐标。

  4. 右键添加 Multiply 节点,创建 Scalar Parameter 变量命名为 Scale,默认值设为 1.0。

  5. 将 Texture Coordinate 的输出连接到 Multiply 的 A 输入,Scale 连接到 B 输入。

  6. 将 Multiply 节点的输出连接到 Texture Sample 的 UVs 引脚。

  7. 将 Texture Sample 的输出连接到材质节点的 Base Color 引脚。

  8. 单击 Apply 保存材质,将材质赋予场景中的模型,在细节面板中调整 Scale 参数,观察纹理缩放效果

Multiply 是着色器中最核心的混合方式,核心逻辑是 A × B,数值越小结果越暗

3.4 Divide(除法)——世界位置缩放与范围标准化

作用:拉伸范围、归一化、增强对比度

  • 注意分母不能为 0,否则会产生错误。

  • 常用场景:数值范围缩放、配合其他节点做标准化。

案例:世界位置标准化

  1. 在材质图表中右键添加 WorldPosition 节点,该节点输出物体在世界坐标系中的绝对位置(坐标值可能非常大)。

  2. 右键添加 Divide 节点,将 WorldPosition 的输出连接到 A 输入。

  3. 创建 Scalar Parameter 变量命名为 WorldScale,默认值设为 100.0,连接到 Divide 的 B 输入(分母)。

  4. 将 Divide 节点的输出连接到后续材质效果的计算链路中。

  5. 效果:将巨大的世界坐标值(例如几千到几万)缩减到可控范围内(除以系数后变得较小),便于与其他节点进行运算

  6. (可选)配合 Mask 节点提取 X 和 Y 通道分量,通过 Multiply 节点将两个通道相乘,实现三维贴图效果

在蓝图中使用除法时,建议事先检查分母是否为零,可通过 Branch 节点进行条件判断,避免运行时出错。

3.5 高级技巧:数学表达式节点

当需要更复杂的运算逻辑(如三角函数、指数等)时,可以使用数学表达式节点

  1. 在事件图表中右键单击,选择 Add Math Expression(添加数学表达式)

  2. 右键单击新生成的节点,选择 Rename(重命名),输入表达式,例如 round(((pow(A, B)) + B) / B % 10)

  3. 双击节点可查看由 UE5 自动生成的对应子图表结构


四、常见问题与实用技巧

关键点 说明
数据类型匹配 运算节点要求 A 和 B 的数据类型一致或兼容。如无法匹配,右键单击引脚选择”转换为指定类型”
向量运算 Add/Subtract/Multiply/Divide 也支持向量类型运算,遵循 X+X、Y+Y、Z+Z 的分量独立计算规则
性能差异 Add 和 Multiply 在性能上优于 Subtract 和 Divide,条件允许时应优先使用前两者(除法器在 GPU 上延迟通常是乘法的 5~20 倍)
复数输入 点击节点右侧的 Add pin(+号) 按钮,为同一运算添加更多输入(例如连续相加 A+B+C)
编译与测试 修改蓝图逻辑后,务必单击”编译”按钮保存更改,并在游戏模式下运行测试。如有错误信息,在”编译器输出”窗口中根据提示定位修正

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

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

昵称

取消
昵称表情代码图片

    暂无评论内容