版本:4.26, English
创建:2021-02-25,更新:2021-03-25
作者:Cyanhall
👉  Cyanhall@GitHub 如果有用请点赞。
1. 预备 这是这个教程要完成的效果。

注意:本教程主要内容来自虚幻引擎自带的内容示例

提示:使用 ⬆️ ⬇️ 可上下翻页。推荐用大屏浏览,以获得更好的阅读体验。
Preparation
3. 介绍 表达式(Expressions)是 HLSL 的小片段,可以用来在堆栈中在线创建微观行为,而不需要创建新的模块。

在本例中,没有使用任何模块来影响模拟,只是结合表达式和动态输入直接设置变量。
Introduction
4. 模拟目标 选择发射器属性(Emitter Properties),设置模拟目标(Sim Target)GPU计算模拟(GPUCompute Sim),然后勾选固定范围(Fixed Bounds)
Sim Target
5. 生成速率(Spawn Rate) 点击发射器更新(Emitter Update)右边的 + 号,添加生成速率(Spawn Rate)模块。

生成速率(Spawn Rate): 每秒生成的粒子数目。
Spawn Rate
6. 生成速率(Spawn Rate) 设置 生成速率(Spawn Rate) 值为 1000.0

每秒生成 1000.0 个粒子。
Spawn Rate
7. 发射器更新参数 发射器更新(Emitter Update) 部分添加 直接设置新的或现有的参数(Set new or existing parameter directly)模块。
Emitter Update Parameter
8. 发射器更新参数 新增一个向量(Vector)参数。
Emitter Update Parameter
9. 发射器更新参数 重命名这个参数为 InitialPosition,并设其值为 模拟位置(Simulation Position)
Emitter Update Parameter
10. 发射器更新参数 新增一个浮点数(Float)参数。
Emitter Update Parameter
11. 发射器更新参数 重命名这个参数为 ZOffset,并设其值类型为 新建表达式(New Expression)
Emitter Update Parameter
12. 发射器更新参数 ZOffset 的值为 sin(Emitter.Age)*56
Emitter Update Parameter
13. 移除初始化粒子(Initialize Particles) 删除 初始化粒子(Initialize Particles) 模块。
Remove Initialize Particles
14. 设置参数 粒子生成(Particles Spawn) 部分添加 直接设置新的或现有的参数(Set new or existing parameter directly)模块。
Set Parameter
15. 粒子生成参数 新增一个向量(Vector)参数。
Particle Spawn Parameter
16. 粒子生成参数 重命名这个参数为 RandomVector,并设其值类型为 新建表达式(New Expression),然后设置其值为: normalize(((( rand(float3(1.0,1.0,1.0) ))) * 2 ) -1 )
Particle Spawn Parameter
17. 粒子生成参数 同样操作增加一批参数到 粒子生成(Particle Spawn)

名称:Lifetime
类型:float
表达式:rand(1.5f) + 2.2f

名称:Position
类型:Vector
表达式:Emitter.InitialPosition + Particles.RandomVector *rand(145.0f)
Particle Spawn Parameter
18. 粒子生成参数 名称:SpriteRotation
类型:float - NormalizedAngle
表达式:rand(1.0f)

名称:SpriteSize
类型:Vector 2d - float
表达式:rand(2.5f) + 0.5f
Particle Spawn Parameter
19. 粒子生成参数 名称:Velocity
类型:Vector
表达式:cross(Particles.RandomVector, float3(0,8,0)) * (float3(0.0f, 0.0f, Emitter.ZOffset) *0.2f) + (-1.0f * normalize(Emitter.InitialPosition - Particles.Position)*20)
Particle Spawn Parameter
20. 设置参数 粒子更新(Particles Update) 部分添加 直接设置新的或现有的参数(Set new or existing parameter directly)模块。
Set Parameter
21. 粒子更新参数 名称:Color
类型:Linear Color
表达式:Particles.NormalizedAge < 0.333 ? float4(1,0.1,0.1,1) : Particles.NormalizedAge < 0.575 ? float4(0.1,1,0.1,1) : float4(0.1,0.1,1,1)

名称:Position
类型:Vector
表达式:Particles.Position + float3(0, 0, ( sin(Engine.Time) * 0.3f ))
Particle Update Parameter
22. 粒子更新参数 名称:SpriteSize
类型:Vector 2D
表达式:(1.0f - abs(Particles.NormalizedAge * 2.0f -1.0f)) * 2.0f

名称:PhysicsForce
类型:Vector
表达式:1-Particles.RandomVector * (length(Particles.Position - Emitter.InitialPosition)*0.25)
Particle Update Parameter
23. 粒子更新参数 注意,PhysicsForce 的命名空间,需要设在 Transient
Particle Update Parameter
24. 粒子更新参数 同样操作增加一个参数到 粒子更新(Particle Update)
名称:Position
类型:Vector
表达式:Particles.Position.z > Emitter.InitialPosition.z - Emitter.ZOffset ? Particles.Position : float3(Particles.Position.x, Particles.Position.y, Emitter.InitialPosition.z -Emitter.ZOffset)
Particle Update Parameter
25. 解算力和速度(Solve Forces and Velocity) 粒子更新(Particles Update) 部分添加 解算力和速度(Solve Forces and Velocity)模块。
Solve Forces and Velocity
26. 🎉 完成了! 🎉 👉  Cyanhall@GitHub  如果有用请点赞。

支持我: Patreon
关注我: TwitterReddit知乎Bilibili
🎉 Finish! 🎉
Comments
Preparation