Unity VFXGraph入门学习(二)-模拟天气案例



前言

参考链接:
  1. VFXGraph官方文档:(https://docs.unity3d.com/Packages/com.unity.visualeffectgraph@6.9/manual/index.html)
  2. VFXGraph 模拟天气官方教程(可以下载相关资源):
    (https://learn.unity.com/tutorial/simulating-weather-with-the-vfx-graph-unity-2018-lts-1?projectId=&uv=2018.4#)

一、介绍

制作关于雪的三个属性:

  • 雪沿着空气和风的速度流动.
  • 雪移动的越快,显的越条纹.
  • 降雪强度不同.

本章学习案例主要是模拟这三种状态.

参考官方VFXGraph Blocks Glossary

二、使用VFXGraph实现效果

1.Spawn块实现

Spawn(类似于 Awake() 调用).

  • 添加周期和范围: SpawnRate(浮点数 ),SpawnRange(Vector2 )
  • Periodic Total Time: 周期变化率
    实现系统中的粒子数量随时间变化。

2.Initialize Particle块实现

Initialize相当于Unity声明周期中Start() 调用.

  • Capacity: 粒子的最大容量值
    这里将粒子的最大容量值设置50000,这完全够用.

  • Set Velocity Random: 设置随机速度
    将SetVelocityRandom中值大小统一增加至少+-10可以增加粒子移动体积,使粒子均匀分布在场景中,并为他们提供随机速度.

  • Set Position: 设置粒子发射初始位置
    Y=12为粒子添加高度,营造雪从天而降的错觉.

  • Sine Wave(float):正弦波节点
    为了添加正弦波评估随事件变化的值.

  • TotalTime:总时间节点
    创建一个总时间节点并将其输出拖到正弦波节点的输入。

3.Update Particle块实现

Update(Update() 调用).

这里虽然系统的基本行为已经完成,但粒子本身仍然沿直线向外移动。我们将修改更新上下文以使粒子移动,就像它们沿着气流流动一样。

实现用矢量场模拟运动和缩放:

  • Vector Field Force:矢量力场, 提供 3D 矢量场纹理作为输入
    此这个 3D 纹理用 3D 空间中的向量数组填充我们之前定义的速度体积。每个向量都沿粒子在3D空间中的定向方向推进粒子.

矢量力场充当 3D 空间中气流的数字表示。这可以通过想象在天气预报程序中显示气流来最好地概念化.

  • Turbulence: 湍流块
    要向矢量场添加更多发散,将湍流块添加必不可少,并增加其强度.

  • Set Scale.XY by Speed:根据粒子的速度动态地更改粒子的大小
    在场景中使它们具有更像雪的条纹外观。

请注意此块的 Speed Range 属性。X 值表示我们将考虑的最小速度,Y 值表示将考虑的最大速度。与 Set Size over Life Block 类似,这个 Block 将这个范围映射到 0 到 1 之间的值。我们希望每个粒子的 X 尺度在接近最大速度时减小,而每个粒子的 Y 尺度增加。

需要设置Scale xy动画曲线属性:
X:

Y:

4.Output Particle Quad块实现

Output(定义生成的粒子应该如何渲染到屏幕上).

  • Orient: Along Velocity
    将模式从“FaceCameraPlane”更改为“AlongVelocity”。这将使雪粒子面向它们行进的方向。

  • Set Size over Life: 按存活时间设置粒子大小

  • Set Color over Life:按存活时间设置粒子颜色

雪花贴图

三、总结

最后实现效果:


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM