|
@@ -248,3 +248,81 @@ GPU 模拟需要设置 `Fixed Bounds` 的原因是,由于粒子模拟是在 GP
|
|
|
|
|
|
|
|
从上面的表现来过,伪随机每次得到的表现效果相同,真随机每次表现都不相同
|
|
从上面的表现来过,伪随机每次得到的表现效果相同,真随机每次表现都不相同
|
|
|
|
|
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+接下来要实现入上图所示的粒子效果
|
|
|
|
|
+
|
|
|
|
|
+这里要用到一个重要的节点 `Curl Noise Force`
|
|
|
|
|
+
|
|
|
|
|
+`Curl Noise Force` 是一个用来给粒子添加随机扰动力的模块,它可以模拟流体、烟雾、火焰等效果。`Curl Noise Force` 的原理是使用卷曲噪声场(`Curl Noise Field`)来计算粒子的加速度,卷曲噪声场是一种具有无散性和无旋性的噪声场,它可以避免粒子聚集或分散,保持流体的连续性
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+| 参数 | 作用 |
|
|
|
|
|
+| --- | --- |
|
|
|
|
|
+| Noise Frequency | 此参数决定卷曲噪声场的频率,值越大,噪声场的频率越高,粒子的扰动力越强 |
|
|
|
|
|
+| Noise Strength | 此参数决定卷曲噪声场的强度,值越大,粒子的加速度越大,运动越快 |
|
|
|
|
|
+| Pan Noise Field | 此参数决定卷曲噪声场是否随时间变化,值越大,噪声场的变化速度越快,粒子的运动越不规则 |
|
|
|
|
|
+| Randomization Vector | 此参数决定卷曲噪声场的随机向量,它会与随机种子相乘,影响噪声场的方向和形状 |
|
|
|
|
|
+| Random Seed | 此参数决定卷曲噪声场的随机种子,它会与随机向量相乘,影响噪声场的方向和形状 |
|
|
|
|
|
+
|
|
|
|
|
+`Curl Noise Force` 是一个向量场,就是所有的粒子都有一个特定的力的方向,只要在这个场的区域内
|
|
|
|
|
+
|
|
|
|
|
+> 具体概念只能自行了解,解释不清…
|
|
|
|
|
+
|
|
|
|
|
+因为生成粒子要在一个球形范围内,所以需要添加 `Shape Location`,表示在一个 `Shape` 的范围内生成
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+通过上图设置,粒子会在一个半径为 10 的球形范围内生成
|
|
|
|
|
+
|
|
|
|
|
+| 添加前 | 添加后 |
|
|
|
|
|
+| --- | --- |
|
|
|
|
|
+|  |  |
|
|
|
|
|
+
|
|
|
|
|
+由于单纯应用向量场导致最后粒子飘的过于散开,可以添加 `Drag` 节点来给粒子添加一个阻力
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+> 将**阻力**直接应用于粒子速度和/或旋转速度,而与**质量**无关
|
|
|
|
|
+
|
|
|
|
|
+| 添加前 | 添加后 |
|
|
|
|
|
+| --- | --- |
|
|
|
|
|
+|  |  |
|
|
|
|
|
+
|
|
|
|
|
+**生成粒子** 除了使用 `Spawn Rate` 之外还可以使用 `Spawn Burst Instantaneous` 来瞬间爆发性产生指定数量的粒子
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+上图表示在一开始第 0 秒的时候直接生成 3600 个粒子
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+最后给粒子添加上一个随时间变化的颜色曲线
|
|
|
|
|
+
|
|
|
|
|
+此时得到的效果与目标效果还是存在一定差距,因为此时粒子最后会四散分开,而目标效果的粒子似乎被**某个点吸引**会有一个返回的效果
|
|
|
|
|
+
|
|
|
|
|
+所以此时需要添加一个 `Point Attraction Force`
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+`Point Attraction Force` 是一个用来给粒子添加一个指向某个点的吸引力的模块,它可以模拟重力、磁力、吸引或排斥等效果
|
|
|
|
|
+
|
|
|
|
|
+| 属性 | 作用 |
|
|
|
|
|
+| --- | --- |
|
|
|
|
|
+| Attraction Strength | 此参数决定吸引力的强度,值越大,粒子受到的吸引力越大,运动越快|
|
|
|
|
|
+| Attraction Radius | 此参数决定吸引力的有效半径,只有在这个半径内的粒子才会受到吸引力的影响|
|
|
|
|
|
+| Falloff Exponent | 可以调节粒子受到的吸引力的大小和分布,影响粒子的运动轨迹和形态。值越大,吸引力随着距离的增加而下降得越快,粒子越容易聚集在吸引点附近;值越小,吸引力随着距离的增加而下降得越慢,粒子越容易分散在吸引点周围|
|
|
|
|
|
+| Kill Radius | 用来限制粒子生存范围的属性,它表示粒子距离吸引点的最小距离,如果粒子进入这个距离内,就会被杀死,可以控制粒子的数量和分布,避免粒子过多或过密地聚集在吸引点附近,造成性能下降或视觉效果不佳 |
|
|
|
|
|
+| Attractor Position | 吸引的点的坐标 |
|
|
|
|
|
+| Attractor Position Offset | 吸引的位置偏移 |
|
|
|
|
|
+
|
|
|
|
|
+最后就可以得到目标效果了
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+| 使用 CPU 模拟 | 使用 GPU 模拟 |
|
|
|
|
|
+| --- | --- |
|
|
|
|
|
+|  |  |
|
|
|
|
|
+| 更新平均耗时 1.04ms | 更新平均耗时 0.04ms |
|
|
|
|
|
+
|