UE5 Niagara 系列(02):火焰(噪声 + 颜色曲线 + 透明淡出)——从喷泉思路升级到可用火焰

系列路线:

01 喷泉(重力 + 初速度 + 阻力) ✅
02 火焰(噪声 + 颜色曲线 + 透明淡出) ← 本篇

03 爆炸(多 emitter:火球 + 烟 + 火花 + 冲击波)

04 拖尾(Ribbon)

05 与蓝图交互(User 参数驱动)

06 碰撞与事件(Collision / Event Handler)

07 性能优化与 LOD / Scalability

本文目标:从 0 搭出一个"基础火焰"特效,并把火焰拆成 3 个最核心的能力:

  1. 噪声:让火焰翻涌、不走直线
  2. 颜色曲线:让火焰从亮到暗、有层次
  3. 透明淡出:让边缘更软、死亡不突兀

说明:本文继续采用"从空 System 开始"的方式,不靠模板;模块名称在不同 UE5 小版本可能略有差异,但思路一致。


文章摘要

本文是 Niagara 系列第 2 篇,讲火焰的三个核心:噪声、颜色曲线与透明淡出。我们从空 Niagara System 新建火焰特效,先搭出可运行的向上发射结构,再在 Particle Update 加入 Curl Noise Force 让火焰翻涌;用 Normalized Age 驱动颜色/亮度曲线实现亮黄→橙→红暗的变化;最后用 Alpha 曲线与软边材质让火焰自然淡出,避免"硬消失"。完成后你将能独立做出可用的基础火焰,并为下一篇"爆炸多 emitter 组合"打底。


1. 火焰像不像,先抓住三条规律

很多人做火焰失败,原因是把火焰当"橙色烟雾粒子"来调。真正像火焰的关键在于:

1.1 运动规律:上升为主 + 局部翻涌

火焰不是抛物线下落(那更像喷泉)。火焰更像"热气上升",中间夹杂湍流。

1.2 颜色规律:内亮外暗 + 随生命周期变暗

火焰通常出生更亮(偏黄白),随后变橙、变红、变暗并淡出。

1.3 透明规律:软边 + 末端淡出

如果不做透明淡出,粒子会"突然消失",立刻出戏。


2. 从空 System 创建火焰(不靠模板)

2.1 新建空 System

  1. 内容浏览器右键 → FX → Niagara System

  2. 点击 Create Empty Niagara System(空系统)

  3. 命名:NS_Fire_Basic

2.2 添加一个空 Emitter(先做单层火焰)

在 System 中点击 Add Emitter → 新建空 emitter

命名:NE_Fire_Main

为什么先单层?因为新手最容易卡在"看不到效果"。单层先跑通,第二层外焰后面再复制改参数即可。


3. 先搭出"能跑起来的火焰骨架"(无噪声、无曲线也能看到火苗)

这一步只做基础:持续生成 + 向上速度 + 阻力(可选弱重力)+ 能渲染。

3.1 持续生成:Spawn Rate(Emitter Update)

添加 Spawn Rate

  • Rate = 120(建议范围 80~200)

3.2 出生初始化:Initialize Particle(Particle Spawn)

添加 Initialize Particle

  • Lifetime = 0.6 ~ 1.2(随机范围更自然)
  • Sprite Size = 12 ~ 26
  • Color = (1,0.3,0,1) 或先给一个浅橙(后面用曲线接管)

3.3 初速度:Add Velocity(Particle Spawn)

添加 Add Velocity

想要火苗散一点:

  • 使用"锥体随机方向"

3.4 阻力:Drag(Particle Update)

添加 Drag

  • Drag = 1.0 ~ 4.0

火焰需要更"黏"一点,Drag 通常比喷泉更大,避免粒子乱飞。

3.5 (可选)弱重力:Gravity Force(Particle Update)

火焰本质是上升,不需要真实重力下落。你可以:

  • 不加 Gravity
  • 或加很弱的 Gravity 让它更稳:
    • Gravity = -50 ~ -200

3.6 渲染:Sprite Renderer

确保有 Sprite Renderer

  • Material:先用一个简单可见材质(后面再换火焰软边材质)
  • 看不见就把 Sprite Size 临时调到 40

到这里你应该能看到"向上飘的粒子"。它还不像火焰,下一步加噪声。


4. 火焰第 1 核心:噪声(让火焰翻涌)

最常用的是 Curl Noise Force(卷曲噪声力),效果像小涡流。

4.1 添加 Curl Noise Force(Particle Update)

Particle Update 添加:

  • Curl Noise Force

推荐起手参数(先照抄,再微调):

  • Strength:80 ~ 220
  • Frequency:0.8 ~ 2.0

调参心得(很重要):

  • Strength 太小:火焰像"直线烟"
  • Strength 太大:火焰被吹散成一团雾
  • Frequency 低:大块翻涌(更像营火)
  • Frequency 高:碎抖(像能量/魔法火)

4.2 防止噪声把火焰吹散(常见坑)

如果加了噪声后火焰散掉了,按这个顺序处理:

  1. 先加大 Drag(通常最有效)
  2. 降低 Curl Noise Strength
  3. 缩小 Cone Angle(初速度方向别太散)

5. 火焰第 2 核心:颜色曲线(用 Normalized Age 做"亮→暗"的生命周期)

这一步决定火焰"有没有温度"。

5.1 关键变量:Normalized Age(0→1)

  • 0:刚出生
  • 1:即将死亡

我们用它驱动颜色。

5.2 颜色随时间变化(Particle Update)

添加颜色相关模块(名称可能是):

  • Color Over Life / Scale Color / Set Color

推荐一个通用火焰配色(从 0 到 1):

  • 0.0:偏黄白(更亮)(1.0, 0.95, 0.75,1)
  • 0.4:橙色 (1.0, 0.55, 0.18,1)
  • 0.8:偏红暗 (0.6, 0.12, 0.04,1)
  • 1.0:更暗 (0, 0, 0,0,0)

注意:新手常犯错是"全程一个橙色",结果看起来像橙色雾。颜色必须随生命周期变化才像火。

5.3 "更亮"的做法(可选)

如果你想让火焰更亮(尤其内焰):

  • 可以在材质端做"自发光/Emissive"
  • 或在颜色曲线前段把 RGB 推高一点(但注意别过曝导致一片白)

6. 火焰第 3 核心:透明淡出(解决硬边、硬消失)

火焰最怕"粒子突然没了"。

6.1 做软边材质(空间软边)------最小可用版

这部分只做"最小可用",不堆复杂节点。目标:让每个 sprite 的边缘是柔的,而不是硬圆。

6.2 新建材质(建议)

在内容浏览器:

  1. 新建 Material:M_Fire_Sprite_Soft
  2. 材质设置:
    • Blend Mode:Translucent(半透明)
    • Shading Model:Unlit(不受光照,便宜稳定)
    • (可选)勾选 Two Sided

6.3 材质里必须有的 2 条线(最小版)

(1) 颜色:用 Particle Color 控制

  • Particle Color (RGB) 连接到 Emissive Color
    • 或者 Emissive = ParticleColor.rgb * 强度系数(比如 5~20)

(2) 透明:用软边遮罩 × Particle Alpha

你需要一个"软边遮罩":

  • 用一张软边圆形贴图
    • 导入一个灰度贴图:中心白、边缘黑(或渐变)
    • 采样得到 Mask(0~1)

然后:

  • Opacity = Mask * ParticleColor.a

这样你在 Niagara 里做的 Alpha 曲线才能真正影响透明度。

6.4 把材质用到 Niagara

回到 Niagara:

  • Sprite Renderer 里把 Material 替换成 M_Fire_Sprite_Soft

到这一步你会明显感觉:边缘变软、淡出更自然、整体更像火。


7. 让火焰更像"火苗":大小曲线 + 拉伸(可选但强烈建议)

7.1 大小随生命变化:Scale Sprite Size

Particle Update 添加:

  • Scale Sprite Size

给你一条简单好用的曲线(Scale 倍数):

  • Age=0.0:0.6
  • Age=0.2:1.1
  • Age=0.75:0.9
  • Age=1.0:0.0

作用:

  • 出生别太大(避免一坨)
  • 中段长起来(像火苗)
  • 末端收缩消失(更自然)

7.2 让火焰"细长":按速度方向对齐/拉伸(Renderer 里找)

Sprite Renderer 中找类似选项(不同版本位置不同):

  • Alignment / Facing Mode / Sprite Facing
  • 如果有 Velocity 相关选项,优先尝试:
    • Alignment = Velocity(或类似)

如果没有"按速度对齐"选项,也可以先跳过,不影响核心效果。


8. 调试清单:出现这些症状怎么修

8.1 像烟不像火

  • 提高出生阶段亮度(颜色曲线前段偏黄白)
  • 缩短 Lifetime(火焰不该飘太久)
  • 增加噪声翻涌,但同时加大 Drag 稳住

8.2 散得太开

  • Drag 加大
  • Curl Noise Strength 降低
  • Cone Angle 缩小

8.3 硬边/硬消失

  • Alpha 曲线末端必须到 0
  • 材质 Opacity 必须软边(渐变/噪声)

9. 性能小贴士(火焰比喷泉更容易吃性能)

火焰常用透明材质,容易 Overdraw。你至少要有这个直觉:

  • 平均存活粒子数 ≈ SpawnRate × 平均Lifetime

如果你:

  • SpawnRate 200
  • Lifetime 1.5
    同时粒子数约 300(这只是数量;透明叠加还会放大成本)

优化优先级建议:

  1. 先降 Spawn Rate / Lifetime(最有效)
  2. 缩小屏幕占比(不要让火焰贴满镜头)
  3. 材质简化(少采样、少复杂噪声)

10. 下一篇预告(第 3 站:爆炸,多 emitter 组合)

下一篇我们将进入第 3 站------爆炸(多 emitter:火球 + 烟 + 火花 + 冲击波)

会重点讲:

  • 为什么爆炸一定要拆 emitter(每层职责不同)
  • 火球/烟/火花/冲击波各自的 Spawn 方式(Burst vs Rate)
  • 时间节奏:谁先出现、谁后出现、持续多久
  • 以及爆炸特效最常见的"看起来很假"的原因(比例、速度、淡出与材质)

相关推荐
远离UE414 小时前
UE5 GPU内部异步
ue5
1204157137 肖哥14 小时前
UE5 PCG PCGBlueprintElement简介
ue5
dong13269714 小时前
UE5FPS游戏开发教程(四)
ue5
dong1326971 天前
UE5FPS游戏开发教程(三)
ue5
日月云棠1 天前
UE5源码分析之Editor——AnimationBlueprintLibrary模块全面分析
ue5
远离UE42 天前
UE5 ECS 原理
ue5
mengzhi啊3 天前
UE5 把剑绑定到骨骼-给要播放的动画及动画蒙太奇添加武器
ue5
directx3d_beginner4 天前
32,每帧更新怪物朝向改为c++
ue5
日月云棠4 天前
UE5源码分析之Editor——AnimationEditor模块全面分析
ue5
吴梓穆4 天前
UE5 播放透明视频
ue5