Skip to content

粒子系统

粒子系统在CPU上模拟粒子行为,可用来模拟火焰、爆炸、拖尾等效果

粒子系统组件具有许多属性,划分了多个“模块”。包括粒子系统主模块、发射器模块、粒子发射模块、粒子大小模块、粒子颜色模块、粒子速度模块、粒子旋转模块、粒子贴图动画模块。

注:下文中“×××变化方式”表示当前属性支持恒定值或随机值 变化模式

粒子系统主模块

粒子对象是由粒子系统生成的无数个小粒子构成,在主模块可以定义粒子的持续时间、系统的最大粒子数、是否循环、延迟发射时间、粒子的生命周期等粒子的属性。 主模块

属性功能
持续时间系统运行的时间长度
最大粒子数粒子系统支持的最大粒子数
循环开启此属性,粒子系统持续时间结束后重新启动,并且一直循环重复
延迟发射时间模式延迟发射时间的变化模式
延迟发射时间系统开始发射前将延迟一段时间
生命周期模式生命周期变化模式
生命周期粒子的初始生命周期
初始颜色模式粒子起始颜色的变化模式
初始颜色粒子的初始颜色
分轴大小启用后可分别控制粒子每个轴的大小
初始大小模式粒子初始大小的变化模式
初始大小粒子的起始大小
初始速度模式粒子起始速度的变化模式
初始速度粒子的起始速度
分轴旋转启用后可分别控制粒子每个轴的旋转
初始旋转模式起始旋转的变化模式
初始旋转角度粒子的起始旋转
重力系数模式重力系数的变化模式
重力系数粒子所受重力影响的系数,为0时表示关闭重力
模拟空间粒子系统模拟所在坐标系,包括世界坐标系与局部坐标系
系统运行后自动开始播放启用时,粒子系统会在创建时自动启动
播放状态控制控制编辑器下粒子系统的运行状态
结束结束粒子系统的播放

发射器模块

发射器模块用于控制发射器的形状、发射源等属性。 圆锥发射器: 发射器

属性功能
发射器形状发射体的形状
发射源从发射体的何处进行粒子的发射
半径发射体的圆形半径
边缘厚度发射体的体积比例
发射角度发射器可发射粒子的角度范围
发射方式可按照随机、循环、往返的方式发射粒子
圆周间隔角度弧形周围可产生粒子的离散间隔
角度发射器的张口角度
长度发射器的长度
圆形发射器:
发射器
属性功能
发射器形状发射体的形状
半径圆形的半径
边缘厚度可发射范围的比例
发射角度发射器内可发射粒子的角度范围
圆周间隔角度弧形周围可产生粒子的离散间隔
立方体发射器:
发射器
属性功能
发射器形状发射体的形状
发射源可从发射体的不同位置发射粒子
边长立方体发射体的边长

粒子发射模块

alt text

属性功能
基于时间的发射速率模式基于时间的发射速率的变化方式
每秒发送粒子数每个时间单位发射的粒子数
基于距离的发送速率模式基于距离的发送速率的变化方式
每米发射粒子数每个移动距离单位发送的粒子数

粒子大小模块

粒子大小模块可实现基于粒子生命周期的大小变化 alt text

属性功能
分轴若启动,可以对粒子的三个轴分别控制大小变化
大小基于粒子生命周期的粒子大小变化的起始尺寸与终止尺寸
启用分轴后,粒子的XYZ轴大小均可以根据生命周期进行变化
alt text

粒子颜色模块

粒子颜色模块可实现基于粒子生命周期的颜色变化 alt text

属性功能
颜色模式支持固定值与基于生命周期的颜色插值
颜色颜色值

粒子速度模块

粒子速度模块可以实现基于粒子生命周期的速度变化效果 alt text

属性功能
坐标系指定粒子速度变化轴是参考本地空间还是世界空间
X-Y-Z轴速度模式针对XYZ轴的速度变化方式
X-Y-Z轴速度粒子在对应轴上的线性速度
速度修正系数速度计算时的一个系数

粒子旋转模块

粒子旋转模块可实现基于粒子生命周期的旋转 alt text

属性功能
分轴与大小模块一样,启用后可对XYZ轴分别设置旋转
X-Y-Z轴旋转模式旋转的变化方式
X-Y-Z轴旋转基于生命周期,对粒子的XYZ轴分别进行旋转控制

粒子贴图动画模块

粒子贴图动画模块可以实现在粒子上的纹理帧动画 alt text

属性功能
模式仅支持网格动画
X轴动画帧数X轴方向对纹理的切分数
Y轴动画帧数Y轴方向对纹理的切分数
动画模式动画方式,支持整张纹理的播放与指定行的播放
起始帧模式起始帧索引的变化方式
起始帧以指定的帧索引开始动画
循环次数粒子生命周期内帧动画的循环次数
动画纹理以该纹理进行帧动画的播放

当动画方式为按照指定行进行播放时: alt text 行索引支持用户自定义与随机选择两种模式

粒子渲染模块

粒子渲染模块控制粒子的渲染,可以设置不同的渲染模式 alt textalt text

粒子系统接口

  • NParticleComponent.h
接口返回值说明
GetParticleSystemNParticleSystemPtr获取粒子系统
SetMainTexturebool设置主纹理
GetTextureNTexturePtr获取纹理
GetTexturePathstd::string获取纹理路径

NParticleSystemPtr GetParticleSystem(); 描述:获取粒子系统,粒子系统各个模块均被NParticleSystem管理

bool SetMainTexture(std::string path); path:纹理路径 描述:设置粒子的主纹理,还可用于粒子纹理动画

NTexturePtr GetTexture(); 描述:获取粒子纹理

std::string GetTexturePath(); 描述:获取粒子纹理路径

  • NParticleSystem.h
接口返回值说明
IsStoppedbool是否停止了
IsPausedbool是否暂停了
IsPlayingbool是否正在播放
IsEmittingbool是否正在发射粒子
Startvoid开始播放
Stopvoid停止播放
Pausevoid暂停播放
UpdateParticleConfigvoid更新粒子配置
GetParticleConfigParticleConfig获取粒子配置
EnableModuleParticleModuleBaseRef启用/禁用指定模块
GetModuleParticleModuleBaseRef获取指定模块的基类指针
GetShapeBaseShapeBaseRef获取发射器的基类指针
  • ParticleConfig:粒子配置
属性类型说明
m_bMaxCapacityint粒子最多容量
m_StartColorGradientRange粒子起始颜色
m_bStartSize3Dbool粒子是否启用分轴的起始尺寸属性
m_StartSizeCurveRange粒子起始大小
m_StartSizeXCurveRange粒子起始X轴大小
m_StartSizeYCurveRange粒子起始Y轴大小
m_StartSizeZCurveRange粒子起始Z轴大小
m_Durationfloat粒子系统持续时间
m_StartSpeedCurveRange粒子起始速度
m_bStartRotation3Dbool粒子是否启用分轴的起始旋转属性
m_StartRotationCurveRange粒子起始旋转
m_StartRotationXCurveRange粒子起始X轴旋转
m_StartRotationYCurveRange粒子起始Y轴旋转
m_StartRotationZCurveRange粒子起始Z轴旋转
m_StartDelayCurveRange起始延迟时间
m_StartLifeTimeCurveRange粒子起始生命周期
m_bPrewarmbool是否启用预热
m_bLoopbool是否启用循环
m_RateOverTimeCurveRange基于时间的粒子生成速率
m_RateOverDistanceCurveRange基于距离的粒子生成速率
m_GravityModifierCurveRange粒子重力系数
m_PlayOnAwakebool是否初始时立即启动
m_SimulationSpeedfloat粒子系统的模拟速率
m_SimulationSpaceECoordSystem粒子系统的模拟空间
  • ParticleModuleConfig:粒子模块的配置
属性类型说明
particleModuleTypeParticleModuleType粒子模块类型
isEnablebool是否启用该模块
colorOverLifetimeGradientRange基于生命周期的颜色
bSeparateAxesRotationbool是否分轴控制旋转
angularVelocityCurveRange基于生命周期的角速度
angularXVelocityCurveRange基于生命周期的X轴角速度
angularYVelocityCurveRange基于生命周期的Y轴角速度
angularZVelocityCurveRange基于生命周期的Z轴角速度
bSeparateAxesSizebool是否分轴控制大小
sizeOverLifetimeCurveRange基于生命周期的粒子大小
sizeXOverLifetimeCurveRange基于生命周期的粒子X轴大小
sizeYOverLifetimeCurveRange基于生命周期的粒子Y轴大小
sizeZOverLifetimeCurveRange基于生命周期的粒子Z轴大小
modeMode纹理动画类型
numTileXint纹理动画X轴划分
numTileYint纹理动画Y轴划分
startFrameCurveRange纹理动画起始帧
cycleCountint纹理动画循环此时
textureAnimationModeEParticleTextureAnimation纹理动画模式
rowModeEParticleTextureRowMode行模式
rowIndexint行索引
texturePathstd::string纹理图片路径
coordSystemECoordSystem坐标空间
speedModifierfloat速度系数
velocityXOverLifetimeCurveRange基于生命周期的X轴速度
velocityYOverLifetimeCurveRange基于生命周期的Y轴速度
velocityZOverLifetimeCurveRange基于生命周期的Z轴速度