粒子系統(3D)
本教學的這一部分介紹 (3D) GPU 加速的粒子系統。這裡討論的大部分內容也適用於 CPU 顆粒。
前言
您可以使用粒子系統來模擬複雜的物理效果,例如火焰、火花、煙霧、魔法效果等等。它們非常適合建立動態和有機的行為,並為您的場景新增“生命”。
這個想法是以固定的間隔發射具有固定的壽命的 "粒子". 在其生命週期中, 每個粒子都具有相同的基本行為. 讓每個粒子變得不同並提供整體更加 "有機" 外觀的是與各個參數相關的 "隨機性". 實質上, 建立粒子系統意味著設定基本物理參數, 然後為它們新增隨機性.
您在 Godot 中建立的每個粒子系統都包含兩個主要部分:粒子和發射器。
Particles
粒子是粒子系統的可見部分。這就是當粒子系統處於活動狀態時您在螢幕上看到的內容:微小的塵埃、火焰、魔法效果的發光球體。單一系統中可以有幾百到數萬個粒子。您可以隨機化粒子的大小、速度和運動方向,並在其生命週期中改變其顏色。當你想到火時,你可以把所有從火中飛走的小餘燼想像成單一粒子。
抖動
發射器是產生粒子的東西。發射器通常不可見,但它們可以具有形狀。該形狀控製粒子產生的位置和方式,例如它們是否應該像灰塵一樣充滿房間,或者像噴泉一樣從單點射出。回到火的例子,發射器是火中心的熱量,產生餘燼和火焰。
節點屬性
Godot 中可用的所有 3D 粒子節點
Godot 中有兩種 3D 粒子系統:GPUParticles3D (由 GPU 處理),以及 CPUParticles3D (由 CPU 處理)。
CPU 粒子系統的彈性不如 GPU 版本,但它們能在更廣泛的硬體上運作,並為較舊的裝置和手機提供更好的支援。由於它們是在 CPU 上處理的,效能不如 GPU 粒子系統,且無法算繪那麼多獨立的粒子。此外,它們目前也沒有 GPU 粒子所擁有的所有控制選項。
GPU 粒子系統在 GPU 上運作,可在現代硬體上算繪數十萬個粒子。您可以為它們編寫自訂粒子著色器,這使得它們非常靈活。您還可以使用吸引器和碰撞節點使它們與環境互動。
Godot 有三種粒子吸引器節點:GPUParticlesAttractorBox3D、GPUParticlesAttractorSphere3D 以及 GPUParticlesAttractorVectorField3D。吸引器節點會對其範圍內所有粒子施加力,根據方向將粒子拉近或推遠。
粒子碰撞節點有多種。GPUParticlesCollisionBox3D 和 GPUParticlesCollisionSphere3D 屬於基礎型,可用於建立方塊、地板或牆壁等簡單形狀的碰撞。另有兩種較進階的節點:GPUParticlesCollisionSDF3D 適合室內場景要與粒子碰撞時使用,無需手動建立多個方塊或球體碰撞器。若要讓粒子與大型戶外場景碰撞,可用 GPUParticlesCollisionHeightField3D 節點,這會產生場景與物件的高度圖,以實現大範圍碰撞。