前言
參考鏈接:- 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實現效果
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:按存活時間設置粒子顏色
三、總結
最后實現效果: