您當前的位置:首頁 > 體育

UE4Niagara製作動態亮片

作者:由 middleZ 發表于 體育時間:2022-07-05

UE4Niagara製作動態亮片

亮片的動態

https://www。zhihu。com/video/1527598995437842433

最近做了個這樣的東西,記錄一下自己的思路,順便分享一下。

取樣的骨骼網格點位置作為不動的位置,

沿副法線方向出去亮片的長度記錄亮片的位置,

加上重力和繩子拉力,

再根據位置判斷和本體網格碰撞的反作用力,

最後根據上面的各種情況解算下亮片的法線和朝向就行了。

UE4Niagara製作動態亮片

niagara

在一開始,我預想中應該是單個片的行為,

所以嘗試透過根據重力和碰撞直接算出這單個片的法線和朝向,

而不是去做物理,應該能做到非常省效能。

後來算了半天

UE4Niagara製作動態亮片

難度超乎想象

最後還是決定模擬一個位置,再用這個位置去結算片的朝向的法向。

UE4Niagara製作動態亮片

Sample Mesh

spawn階段記錄下原位置,預設亮片的位置(先沿法線出來一些,紀錄下亮片上繩子的端點,不要跟網格面重疊了,再順切線移動一個長度距離),法線為亮片法向,切線為朝向。(這裡的副法線和切線可能需要根據不同模型的頂點座標去調整)。

UE4Niagara製作動態亮片

Sample Mesh Updata

每幀更新粒子的位置和速度

UE4Niagara製作動態亮片

Solver Gravity And Tension

粒子收到的重力和拉力

UE4Niagara製作動態亮片

Mesh Collision

迴圈檢查模型碰撞

下面偷偷加了0。1是為了讓碰撞檢測範圍大點,不然上面的亮片一直會彈起

用一個值記錄是否在模型內部,如果點的位置發生改變就損失速度,達成趴在表面上的粒子就老老實實趴著的效果,但模型運動時又會恢復到正常運動的狀態。

順便在碰撞的時候把亮片的法線設定跟模型法線一致,避免出現穿模

UE4Niagara製作動態亮片

Fix Physics

第一幀的時候不計算,把力量給到零,避免出現一開始就亂飛的效果

如果粒子位置被甩的太遠,超過了設定的閾值,就直接就近重新設定粒子的位置。

UE4Niagara製作動態亮片

Solve Particle Facing

最後把兩個位置解算成粒子的朝向和法向就完成了。

材質沒啥好說的

比較強的反射光用假反射來實現

UE4Niagara製作動態亮片

反射的圖

標簽: 亮片  法線  位置  朝向  粒子