1.
             
              预备
               这是这个教程要完成的效果。
注意:本教程主要内容来自虚幻引擎自带的内容示例。
提示:使用 ⬆️ ⬇️ 可上下翻页。推荐用大屏浏览,以获得更好的阅读体验。   
            3.
             
              介绍
               表达式(Expressions)是 HLSL 的小片段,可以用来在堆栈中在线创建微观行为,而不需要创建新的模块。
在本例中,没有使用任何模块来影响模拟,只是结合表达式和动态输入直接设置变量。  
            4.
             
              模拟目标
               选择发射器属性(Emitter Properties),设置模拟目标(Sim Target)为GPU计算模拟(GPUCompute Sim),然后勾选固定范围(Fixed Bounds)  
            5.
             
              生成速率(Spawn Rate)
               点击发射器更新(Emitter Update)右边的 + 号,添加生成速率(Spawn Rate)模块。
生成速率(Spawn Rate): 每秒生成的粒子数目。  
            6.
             
              生成速率(Spawn Rate)
               设置 生成速率(Spawn Rate) 值为 1000.0。
每秒生成 1000.0 个粒子。  
            7.
             
              发射器更新参数
               在 发射器更新(Emitter Update) 部分添加 直接设置新的或现有的参数(Set new or existing parameter directly)模块。  
            8.
             
              发射器更新参数
               新增一个向量(Vector)参数。  
            9.
             
              发射器更新参数
               重命名这个参数为 InitialPosition,并设其值为 模拟位置(Simulation Position)。  
            10.
             
              发射器更新参数
               新增一个浮点数(Float)参数。  
            11.
             
              发射器更新参数
               重命名这个参数为 ZOffset,并设其值类型为 新建表达式(New Expression)。  
            12.
             
              发射器更新参数
               设 ZOffset 的值为 sin(Emitter.Age)*56。  
            13.
             
              移除初始化粒子(Initialize Particles)
               删除 初始化粒子(Initialize Particles) 模块。  
            14.
             
              设置参数
               在 粒子生成(Particles Spawn) 部分添加 直接设置新的或现有的参数(Set new or existing parameter directly)模块。  
            15.
             
              粒子生成参数
               新增一个向量(Vector)参数。  
            16.
             
              粒子生成参数
               重命名这个参数为 RandomVector,并设其值类型为 新建表达式(New Expression),然后设置其值为: normalize(((( rand(float3(1.0,1.0,1.0) ))) * 2 ) -1 )  
            17.
             
              粒子生成参数
               同样操作增加一批参数到 粒子生成(Particle Spawn):
名称:Lifetime
类型:float
表达式:rand(1.5f) + 2.2f
名称:Position
类型:Vector
表达式:Emitter.InitialPosition + Particles.RandomVector *rand(145.0f)  
            18.
             
              粒子生成参数
               名称:SpriteRotation
类型:float - NormalizedAngle
表达式:rand(1.0f)
名称:SpriteSize
类型:Vector 2d - float
表达式:rand(2.5f) + 0.5f  
            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)   
            20.
             
              设置参数
               在 粒子更新(Particles Update) 部分添加 直接设置新的或现有的参数(Set new or existing parameter directly)模块。  
            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 ))  
            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)  
            23.
             
              粒子更新参数
               注意,PhysicsForce 的命名空间,需要设在 Transient  
            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)  
            25.
             
              解算力和速度(Solve Forces and Velocity)
               在 粒子更新(Particles Update) 部分添加 解算力和速度(Solve Forces and Velocity)模块。