实现背景:需要显示城市级的行人以及地理市级范围内的路灯的状态,行人需要有状态以及位置的更新,路灯只需要状态的更新,二者都不需要物理
方案1概述:Niagara粒子系统实现
实际效果展示
-
UE5 集群模拟(20W)
-
UE5 集群模拟(200W)
-
UE5 集群模拟(200W)激进优化版
粒子系统配置
-
粒子类型选择与初步配置
-
选择
HangingParticulates
类型粒子节点进行配置。 -
配置
GPUsim
以固定粒子范围,防止粒子闪烁或在某些角度下不可见。 -
设置粒子生命周期为自定义控制,单次发射,不循环。
-
使用
SpawnBurstInstantaneous
代替SpawnRate
,设置最大个数。 -
调整sprite初始大小至100,避免粒子显示过小。
-
-
粒子发射区域设置
-
设置生成粒子的Box区域范围。
-
取消勾选
Kill Particles When Lifetime Has Elapsed
选项,确保粒子持续存在而不被销毁。 -
配置自定义
LOD
方法,设定3个距离阈值以实现不同距离下的物体显示状态。 -
将
ScaleSpriteSize
设置为一条直线,确保作为最后一级LOD的图片始终可见。
-
-
动态模拟配置
-
添加两个
PointAttractionForce
,用于模拟粒子的动态行为。 -
注意,
Radius
的设置应覆盖所有粒子,但不宜过大。
-
LOD(Level of Detail)设置
-
MeshRender与SpriteRender准备
-
准备所需的
MeshRender
和SpriteRender
,以示例图展示0级MeshRender配置。 -
对于1级、2级或更多级别的MeshRender,只需调整
Renderer Visibility
的值即可。
-
-
自定义LOD方法配置
-
在
ParticleUpdate
栏新增自定义LOD方法,使用New Scratch Pad Module
。 -
制作蓝图时,注意
Get Camera Properties CPU/GPU
节点需要在MapGet
节点中添加CameraQuery
输出项才能成功查询。
-
优缺点分析
优点:
- 相较于Mass框架,本方案具有更简单的实现逻辑,特别是在处理位置信息时,尽管仍需注意性能优化。
缺点:
- 本方案不支持将模拟对象标识为独立实体,即缺少对应的唯一ID。这意味着,在没有具体业务需求(如模拟环境中的鱼、鸟、虫等)的情况下可以采用。然而,若需对特定设备或人员的状态进行改变,本方案将无法满足需求,因此pass。