3D 粒子系統屬性

發射器屬性

../../../_images/particle_props_emitter.webp

「Emitting」屬性旁的核取方塊可用來啟用或停用粒子系統。只有在勾選時,粒子系統才會被處理與顯示。你也可以在執行時動態切換這個屬性,以便動態啟動或關閉粒子系統。

「Amount」屬性用來設定同時可見的最大粒子數。提高這個數值能產生更多粒子,但會犧牲效能。

「Amount Ratio」屬性用來設定實際發射粒子的比例。如果小於 1.0,整個生命週期釋放的粒子數會等於「Amount」乘以「Amount Ratio」。在粒子系統運作中修改這個值,不會影響已經存在的粒子,也不會重啟粒子系統。這非常適合做粒子數量隨時間變化的特效。

你可以將另一個粒子節點設為「Sub Emitter」,這個子發射器會在每個粒子的生命週期中作為其子物件生成。詳細說明請參考本手冊中的 子發射器 章節。

時間屬性

../../../_images/particle_props_time.webp

「Lifetime」屬性設定每個粒子存在多久(以秒為單位),時間到就會消失。許多粒子屬性都可以設定於粒子生命週期內平滑變化。

「Lifetime」和「Amount」兩個屬性相關聯,決定了粒子系統的發射速率。若要計算每秒產生的粒子數,可使用以下公式:

\[每秒粒子數 = \frac{Amount}{Lifetime}\]

例如:如果「Amount」為 32,「Lifetime」為 4 秒,代表系統每秒發射 8 個粒子。

「Interp to End」屬性會讓所有粒子在其生命週期結束時平滑插值到最終狀態。

如果勾選「One Shot」屬性,粒子系統將只發射一次(共「Amount」個粒子)後自動停用。預設未勾選時,粒子系統會持續發射直到被手動停用或移除。「One Shot」很適合用在單一事件觸發的特效,例如道具取得或子彈撞牆時飛散的碎片。

「Preprocess」屬性可以讓粒子系統在啟動時模擬已經運行了一段時間(以秒為單位),直接渲染那個狀態。設為 1 代表系統啟動時,就像已經運作了一秒一樣。

這很適合讓剛載入場景的粒子系統,看起來像已經運行了一段時間。比如下方範例,兩個系統都模擬區域內飛舞的灰塵。若「Preprocess」設為 0,系統啟動前幾秒會看不到灰塵,因為粒子還沒累積出效果。若設為 4,畫面一開始就會看到完全效果,因為跳過了前 4 秒的「預備」時間。

../../../_images/particle_preprocess.webp

無預處理(左)vs. 預處理 4 秒(右)

你可以用「Speed Scale」屬性來調整粒子系統的快慢。這會影響粒子的運算與渲染速度。設為 0 可完全暫停粒子系統,設為 2 則會讓系統加速一倍。

../../../_images/particle_speed_scale.webp

不同的速度倍率:0.1(左)、0.5(中)、1.0(右)

「Explosiveness」屬性決定粒子是依序發射還是同時發射。設為 0 時粒子會一個接一個發射,設為 1 時則會全部同時發射,呈現出更「爆炸」的效果。

「Randomness」屬性會讓粒子的發射時機帶有隨機性。設為 0 時,發射間隔完全固定,粒子均勻出現。設為 1 時,間隔完全隨機,可以讓效果更自然。若「Explosiveness」設為 1,此屬性則無作用。

低 FPS 下執行的粒子效果

關閉插值(左)vs. 啟用插值(右)

「Fixed FPS」屬性限制粒子系統更新的頻率,包含屬性、碰撞、吸引器等計算。這可以大幅提升效能,特別是在有大量粒子碰撞時。注意這不會影響粒子的移動或旋轉速度,若要調整速度請使用「Speed Scale」。

若將「Fixed FPS」設得太低,粒子的動畫會變得不流暢。某些美術風格可用這效果,但大多數情況下你會希望動畫平滑。這時可啟用「Interpolate」屬性,在更新之間內插粒子屬性,即使僅 10 FPS 也能呈現如 60 FPS 的流暢度。

備註

當使用 粒子碰撞 時,如果粒子速度很快且碰撞體很薄,可能會發生穿透現象。這可透過提升「Fixed FPS」(會犧牲效能)來改善。

碰撞屬性

也參考

設定粒子碰撞需要依照 3D 粒子碰撞 章節的進階步驟操作。

「Base Size」屬性設定每個粒子的預設碰撞大小,用來檢查粒子是否與環境發生碰撞。通常應設為與粒子本身差不多的大小。若粒子體積極小且速度很快,建議適度提高此值,以避免粒子穿透碰撞體。

繪製屬性

粒子繪製屬性

「Visibility AABB」設定粒子系統原點周圍的可見方塊,只要方塊有任何部分在攝影機畫面內,粒子系統就會被渲染。若完全離開畫面,則不再渲染。建議將方塊設得越小越好,以提升效能。

設定「Visibility AABB」時要注意,超出方塊邊界的粒子會立即消失,且該範圍外不會發生粒子碰撞。雖然這不是 bug,但可能影響視覺效果。

勾選「Local Coords」時,所有粒子的運算(重力、上下方向、移動方向等)都以本地座標系統為準,例如上下會跟隨粒子系統或父節點的旋轉。若未勾選,則以全域世界座標計算,無論粒子系統旋轉與否,下方永遠是世界空間的 -Y。

../../../_images/particle_coords.webp

本地座標(左)與世界座標(右)

「Draw Order」屬性決定粒子的繪製順序。「Index」按發射順序繪製,後發射的粒子會蓋在前一個之上。「Lifetime」則依剩餘壽命排序繪製。「Reverse Lifetime」則反轉壽命順序。「View Depth」則依據與攝影機的距離,較近的粒子會蓋在較遠的上面。

「Transform Align」屬性決定粒子的預設旋轉。「Disabled」表示不強制對齊,旋轉取決於處理材質設定。「Z-Billboard」會讓粒子永遠面向攝影機,類似 Standard Material 的「Billboard」屬性。「Y to Velocity」則將每個粒子的 Y 軸對齊其移動方向,適合像子彈、箭矢這類必須朝前的效果。「Z-Billboard + Y to Velocity」則會讓 Z 軸朝向攝影機,Y 軸同時對齊速度方向。

軌跡屬性

粒子軌跡

粒子軌跡屬性

「Enabled」屬性決定是否啟用粒子軌跡。若要顯示軌跡,請務必勾選此選項。

「Length Secs」屬性設定軌跡的持續時間,數值越高,顯示的軌跡越長。

詳細說明請參考本手冊的 粒子軌跡 章節,瞭解粒子軌跡的運作原理與設定方式。