UE5.5 Niagara发射器更新属性

发射器属性

在 Niagara 里,Emitter 负责控制粒子生成的规则和行为。不同的 Emitter 属性决定了如何发射粒子、粒子如何模拟、计算方式等。

发射器

在这里插入图片描述

本地空间(Local Space)

控制粒子是否跟随发射器(Emitter)移动。
✅ 启用(True)→ 粒子位置跟随发射器移动(适用于喷火器🔥、火焰喷射等)
❌ 禁用(False)→ 粒子位置固定在世界空间(适用于烟雾💨、下雨🌧等)

确定性(Determinism)

让粒子模拟结果一致,即相同输入总是产生相同的粒子行为。
✅ 启用 → 粒子系统每次运行都会生成相同的效果
❌ 禁用 → 粒子系统每次运行可能会有随机变化

内插生成(Interpolated Spawning)

在低帧率时,平滑插值粒子生成,避免抖动。
✅ 启用 → 粒子会在两帧之间平滑生成(适用于高精度特效)
❌ 禁用 → 低帧率下,粒子可能会不均匀生成(会有断层)

模拟目标(Sim Target)

决定粒子在哪个处理单元上进行模拟计算。
CPU Sim → 在 CPU 上计算(适用于复杂逻辑粒子)
GPU Sim → 在 GPU 上计算(适用于超大规模粒子,如爆炸💥、烟雾💨)

计算边界模式(Fixed Bounds Mode)

设置粒子系统的边界(Bounds),用于剔除(Culling)优化。
动态Dynamic → 自动计算粒子边界(适用于大范围粒子)
固定Fixed → 手动设置固定边界(适用于小范围粒子)
可编程 → 从外部设置ID

需要固定 ID(Requires Persistent IDs)

为每个粒子分配一个唯一 ID,确保它们在生命周期内保持不变。
✅ 启用 → 适用于 粒子需要保持独特状态(如跟踪单个粒子的运动)
❌ 禁用 → 一般粒子不需要唯一 ID

分配模式(Allocation Mode)

控制粒子如何分配内存。
自动估算(Automatic Estimate) → 系统自动计算需要的最大粒子数,并动态调整。
手动估算(Manual Estimate) → 开发者手动设置 Niagara 估算的最大粒子数,Niagara 仍然会根据情况动态调整。粒子数在运行时变化极多(例如由于用户参数)且发生诸多重新分配现象时,此模式将十分有用。
固定数量(Fixed Allocation) → Niagara 预先分配一个固定的粒子数量,不允许动态调整。

发射器依赖(Emitter Dependencies)

用于指定某个发射器的执行顺序。

要保留的属性(Attributes to Preserve)

指定哪些粒子属性在 Emitter 被禁用时仍然保留。适用于:粒子残留效果(如烟雾慢慢消散),武器轨迹特效(如剑气在空气中残留)

模拟阶段循环(Sim Phase Loop)

允许 Emitter 在模拟阶段循环执行,而不是只运行一次。让粒子系统不断重复某个行为,多阶段粒子(如火焰先变成烟雾)

发射器更新

Emitter State 发射器状态

在这里插入图片描述

Life Cycle 生命周期

在这里插入图片描述

Life Cycle Mode(生命周期模式)
  • System(系统控制)发射器的生命周期由粒子系统(Niagara System)控制,通常在 蓝图(Blueprint)或C++ 里管理。
  • Self(自身控制) 发射器的生命周期由自身逻辑决定,如通过 Loop Behavior(循环模式) 和 Duration(持续时间) 设置。
Inactive Response(发射器停用响应)需要设置在生命周期模式为自身控制时才可以设置

决定 当发射器变为“无效”时如何处理(通常因 距离剔除(Culling)或优化策略 而无效)。

  • Complete(完成)发射器允许当前粒子运行完生命周期,但不会生成新粒子。
  • Kill(立即销毁)立刻清除 所有粒子,发射器也会被移除。
  • Disable Tick(禁用 Tick 计算)发射器不会更新(Tick 停止),但已有粒子仍然渲染。
Loop Behavior(循环模式)
  • Infinite(无限循环)发射器会无限循环,直到被手动停止。选择后可以设置Loop Duration 每过一定时间后,将进行一次粒子发射
  • Once(一次)运行一次,直到完成后停止,在Loop Duration Mode里设置执行一次的发射器持续时间。
  • Multiple (指定次数)比Infinite多了一个次数设置
Loop Duration Mode (循环持续时间模式)

当 Loop Behavior(循环模式) 设置为 Once(只运行一次) 时,会出现 Loop Duration Mode,它决定 发射器的持续时间如何计算。

  • Fixed(固定时长)选择Fixed后,会出现Loop Duration选项用来设置固定持续时间,发射器状态按固定的时间来运行。
  • Infinite(无限时长)发射器会一直运行,直到被手动销毁。
Loop Delay (循环延迟)

Loop Delay 控制 发射器在每次循环开始前的延迟时间,用于在循环播放时引入间隔,使特效不会立即重新开始,从而创造更自然的效果。适用于 Loop Behavior 设为 Count 或 Infinite 时,在 每次循环之间添加时间间隔。当 Loop Behavior 设为 Once 时,不会生效。如果有多个发射器,可以使用 Loop Delay 让它们错开时间播放。

Scalability(扩展)

在这里插入图片描述

Scalability Mode(可扩展性模式)

决定 发射器如何响应 Niagara System 的 LOD(Level of Detail)优化

  • System 受 Niagara System 级别 LOD 控制(推荐用于大多数环境特效)。
  • Self 独立管理自己的 LOD,不受 Niagara System 影响(适用于关键视觉特效,如魔法、火焰),在设置为Self后,将开启自定义设置的相关属性,以下属性会在设置为Self后出现。
  • Enable Distance Culling(启用距离剔除)控制发射器是否会在超出指定距离后自动关闭,从而减少不必要的计算,提高性能。当发射器的距离超过“Max Distance”时,该发射器会被禁用(不再更新 & 渲染)。开启此选项后,可以设置MinDistance(最小距离)和MaxDistance(最大距离)。
  • Spawn Count Scale(生成数量缩放)主要用于 动态调整粒子发射器的生成数量,以适应不同的性能需求或游戏场景,可以通过Spawn Count Scale 来整体调整粒子生成数量,并通过Spawn Count Scale By Distance实现通过和相机的距离调整粒子生成数量。
  • Enable Visibility Culling(启用可见性剔除)Enable Visibility Culling 主要用于 优化 Niagara 粒子在屏幕外的计算,可以有效减少不必要的 GPU 和 CPU 负担,提高游戏性能。
  • Visibility Cull Response(可见性剔除响应)Visibility Cull Response 控制当 Niagara 发射器被可见性剔除时(即屏幕外不可见),发射器如何响应。它的参数有:
选项行为适用场景
Awaken发射器保持激活状态,不受剔除影响,粒子继续运行需要在屏幕外仍持续播放的效果(如烟雾、火焰)
Sleep and Let Particles Finish发射器进入休眠,但粒子继续自然消亡需要自然衰减的粒子(如持续燃烧的火焰、烟雾)
Sleep and Clear Particles发射器进入休眠,所有粒子立即消失,但不会销毁发射器适用于屏幕外不需要存在的短时粒子(如 UI 特效)
Kill Immediately发射器和粒子立即销毁,离开屏幕后不会恢复适用于一次性粒子,如爆炸、子弹轨迹
Kill After Particles Finish发射器不再生成新粒子,但已有粒子会继续运行直到生命周期结束,然后销毁适用于需要“自然结束”的效果,如火焰、能量残留
  • Reset Age On Awaken(在唤醒时重置存在时间)控制发射器从休眠状态恢复时,是否重置生命周期。只有在开启Enable Visibility Culling才会显示此属性。如果你开启后,发射器从屏幕外重新进入到屏幕内时,将会重置生命周期,适用于爆炸,不适用于长时间显示的特效,比如燃烧的火焰,天气特效。

Spawn Burst Instantaneous(瞬时爆发生成)

当启用 Spawn Burst Instantaneous 时,Emitter 会在特定时间点一次性生成一批粒子,而不是逐渐生成。

  • Spawn Count 控制 一次性生成多少粒子,数值越大,粒子密度越高。
  • Spawn Time(生成时间)用于控制粒子在 Emitter 生命周期内的生成时间点。
  • Spawn Probability(生成概率)0 - 1 之间,控制每次爆发时粒子是否一定会生成。
  • Loop Count Limit(循环次数限制)设置多次生成粒子。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/72276.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

各省水资源平台 水资源遥测终端机都用什么协议

各个省水资源平台 水资源遥测终端机 的建设大部分从2012年开始启动,经过多年建设,基本都已经形成了稳定的通讯要求;河北瑾航科技 遥测终端机,兼容了大部分省市的通讯协议,如果需要,可以咨询和互相学习&…

使用OpenCV和MediaPipe库——抽烟检测(姿态监控)

目录 抽烟检测的运用 1. 安全监控 (1) 公共场所禁烟监管 (2) 工业安全 2. 智能城市与执法 (1) 城市违章吸烟检测 (2) 无人值守管理 3. 健康管理与医疗 (1) 吸烟习惯分析 (2) 远程监护 4. AI 监控与商业分析 (1) 保险行业 (2) 商场营销 5. 技术实现 (1) 计算机视…

WPF窗口读取、显示、修改、另存excel文件——CAD c#二次开发

效果如下: using System.Data; using System.IO; using System.Windows; using Microsoft.Win32; using ExcelDataReader; using System.Text; using ClosedXML.Excel;namespace IfoxDemo {public partial class SimpleWindow : Window{public SimpleWindow(){Initi…

HarmonyOS NEXT - 电商App实例三( 网络请求axios)

使用axios开发网络请求是一个非常常见的任务,尤其是Web前端开发者,对它非常熟悉。axios是一个基于Promise的HTTP客户端,支持浏览器和Node.js环境,使用简单且功能强大。 在harmonyOS中,如果想使用axios,可以…

生成省市区JSON

省市区 学习记录 https://xiangyuecn.github.io/AreaCity-JsSpider-StatsGov/ package cn.serverx.sx.your;import cn.hutool.core.io.FileUtil; import cn.serverx.sx.your.vo.DistrictNode; import com.alibaba.fastjson2.JSON; import com.google.common.collect.Lists; i…

医疗APP开发如何实现跨机构数据互通

医疗APP开发如何实现跨机构数据互通 在数字化医疗时代,医疗APP开发已成为连接医疗机构、患者和医疗资源的重要桥梁。然而,如何实现跨机构的数据互通,成为医疗APP开发中的一大挑战。本文将探讨如何通过医疗APP开发实现跨机构数据互通,提升医疗服务效率和患者体验。我们将涵…

自定义Linux网络协议的开发与测试

在当今快速发展的技术领域中,定制化网络协议可以为特定的应用场景提供灵活而强大的解决方案。本文将详细介绍如何在Linux系统上开发一个自定义网络协议,并编写相应的用户空间程序进行测试。所有步骤基于2025年3月11日的时间点完成。 开发自定义协议内核模块 定义协议和实现…

PySide(PyQT)的mouseMoveEvent()和hoverMoveEvent()的区别

在 PySide中,mouseMoveEvent 和 hoverMoveEvent 都是用于处理鼠标移动相关操作的事件,但它们之间存在明显的区别: 事件触发条件 • mouseMoveEvent: 当鼠标在对应的图形项(如 QGraphicsPixmapItem&#xff09…

级联树SELECTTREE格式调整

步骤&#xff1a; 1、将全部列表设置成Map<Long, List<Obejct>> map的格式&#xff0c;方便查看每个父级对应的子列表&#xff0c;减少循环次数 2、对这个map进行递归&#xff0c;重新进行级联树的集合调整&#xff0c;将子集放置在对应的childs里面。 public Dyna…

详解数据库范式

范式 1. 第一范式&#xff08;1NF&#xff09;2. 第二范式&#xff08;2NF&#xff09;3. 第三范式&#xff08;3NF&#xff09;4. BC范式&#xff08;BCNF&#xff0c;Boyce-Codd Normal Form&#xff09;5. 第四范式&#xff08;4NF&#xff09;6. 第五范式&#xff08;5NF&a…

一窥DeepSeek开源EPLB项目:揭开技术背后的面纱

摘要 在DeepSeek开源DualPipe项目的同一天&#xff0c;EPLB项目也正式对外公开。EPLB&#xff08;Enhanced Pipeline Balancing&#xff09;并非一蹴而就的奇迹&#xff0c;而是经过长时间的研发与优化。该项目旨在通过改进管道平衡机制&#xff0c;提升系统的稳定性和效率。本…

Unity进阶课程【二】Mask 组件的使用 UI遮罩效果以及透明抠图效果

Unity组件讲解 Mask 时隔多年&#xff0c;今天咱们继续进阶课程&#xff0c;这几年变化很大&#xff0c;但是一直还是从事Unity行业&#xff0c;行业虽难&#xff0c;依旧坚持&#xff0c;以后会养成习惯&#xff0c;定期更新&#xff0c;希望小伙伴们监督&#xff0c;有想学习…

汽车无钥匙启动系统不使用传统机械钥匙启动汽车

汽车无钥匙启动系统 定义 汽车无钥匙启动系统&#xff08;Keyless Start System&#xff09;&#xff0c;启动车辆时不用掏拧钥匙&#xff0c;只需把钥匙放在包内或口袋里&#xff0c;按下车内按键或拧动导板即可使发动机点火。它无需插入钥匙&#xff0c;通过点按按键或旋转…

Webpack 和 Vite 的主要区别

Webpack 和 Vite 的主要区别&#xff0c;从构建机制、开发体验、生产优化等多个维度进行对比&#xff1a; 1. 构建机制与速度 Webpack 全量打包&#xff1a;启动时必须分析所有模块依赖关系&#xff0c;进行全量打包&#xff0c;生成 Bundle 文件。项目越大&#xff0c;冷启动时…

【Python】Python 3.11安装教程

一、Python 3.11安装包下载 1. Python 3.11下载与安装 Download Python | Python.org 下载完成包含以下文件&#xff1a; 二、python3.11安装步骤 1.右键以管理员身份运行安装程序。 2.勾选【Add Python…】然后点击【Customize…】。 3.页面点击【Next】。 4.勾选【Install …

如何处理PHP中的编码问题

如何处理PHP中的编码问题 在PHP开发过程中&#xff0c;编码问题是一个常见且棘手的问题。无论是处理用户输入、数据库交互&#xff0c;还是与外部API通信&#xff0c;编码问题都可能导致数据乱码、解析错误甚至安全漏洞。本文将深入探讨PHP中的编码问题&#xff0c;并提供一些…

【毕业论文格式】word分页符后的标题段前间距消失

文章目录 【问题描述】 分页符之后的段落开头&#xff0c;明明设置了标题有段前段后间距&#xff0c;但是没有显示间距&#xff1a; 【解决办法】 选中标题&#xff0c;选择边框 3. 选择段前间距&#xff0c;1~31磅的一个数 结果

【实战ES】实战 Elasticsearch:快速上手与深度实践-附录-3-从ES 7.x到8.x的平滑迁移策略

&#x1f449; 点击关注不迷路 &#x1f449; 点击关注不迷路 &#x1f449; 点击关注不迷路 附录-版本升级指南 3-Elasticsearch 7.x 到 8.x 平滑迁移策略指南1. 升级必要性分析1.1 版本特性对比1.2 兼容性评估矩阵 2. 预升级准备清单2.1 环境检查表2.2 数据备份策略 3. 分阶段…

Android,Java,Kotlin 确保线程顺序执行的多种实现方式

在多线程编程中&#xff0c;有时需要确保一个线程必须等待另一个线程执行完毕后再执行。本文将介绍几种常见的方法来实现这一需求&#xff0c;并提供详细的代码示例。 1. 使用 Thread.join() Thread.join() 是最简单直接的方法&#xff0c;它会让当前线程等待目标线程执行完毕…

论文调研 | 一些开源的AI代码生成模型调研及总结【更新于250313】

本文主要介绍主流代码生成模型&#xff0c;总结了基于代码生成的大语言模型&#xff0c;按照时间顺序排列。 在了解代码大语言模型之前&#xff0c;需要了解代码相关子任务 代码生成 文本生成代码(Text to code):根据自然语言描述生成代码 重构代码&#xff08;Refactoring …