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轴速度