xiangtingsl 发表于 2022-3-10 15:22

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

前言

参考链接:
VFXGraph官方文档:(https://docs.unity3d.com/Packages/com.unity.visualeffectgraph@6.9/manual/index.html)

[*]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: 周期变化率
实现系统中的粒子数量随时间变化。

image

2.Initialize Particle块实现


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

[*]
Capacity: 粒子的最大容量值
这里将粒子的最大容量值设置50000,这完全够用.
[*]
Set Velocity Random: 设置随机速度
将SetVelocityRandom中值大小统一增加至少+-10可以增加粒子移动体积,使粒子均匀分布在场景中,并为他们提供随机速度.
[*]
Set Position: 设置粒子发射初始位置
Y=12为粒子添加高度,营造雪从天而降的错觉.
[*]
Sine Wave(float):正弦波节点
为了添加正弦波评估随事件变化的值.
[*]
TotalTime:总时间节点
创建一个总时间节点并将其输出拖到正弦波节点的输入。

image

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:


image

Y:


image


image

4.Output Particle Quad块实现


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

[*]
Orient: Along Velocity
将模式从“FaceCameraPlane”更改为“AlongVelocity”。这将使雪粒子面向它们行进的方向。
Set Size over Life: 按存活时间设置粒子大小

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

image

雪花贴图
三、总结

最后实现效果:

image

转载至Unity VFXGraph入门学习(二)-模拟天气案例 - 少女爱上芙兰 - 博客园 (cnblogs.com)
页: [1]
查看完整版本: Unity VFXGraph入门学习(二)-模拟天气案例