參考: https://sandcastle.cesium.com/?src=Particle%20System%20Weather.html
官方教程:https://cesium.com/learn/cesiumjs-learn/cesiumjs-particle-systems/(Introduction to Particle Systems)
粒子系統是一種模擬復雜物理效果的圖形技術。粒子系統是小圖像的集合,當一起觀看時,這些圖像形成更復雜的“模糊”對象,如火、煙、天氣或焰火。通過使用初始位置、速度和壽命等特性指定單個粒子的行為,可以控制這些復雜的效果。
粒子系統效果在電影和視頻游戲中很常見。例如,為了表示飛機受損,技術藝術家可以使用粒子系統表示飛機發動機上的爆炸,然后渲染不同的粒子系統,表示飛機墜毀時的煙霧軌跡。
1. 粒子系統基礎
請查看基本粒子系統的代碼:
var particleSystem = viewer.scene.primitives.add(new Cesium.ParticleSystem({ image : '../../SampleData/smoke.png', imageSize : new Cesium.Cartesian2(20, 20), startScale : 1.0, endScale : 4.0, particleLife : 1.0, speed : 5.0, emitter : new Cesium.CircleEmitter(0.5), emissionRate : 5.0, modelMatrix : entity.computeModelMatrix(viewer.clock.startTime, new Cesium.Matrix4()), lifetime : 16.0 }));
上面的代碼創建了ParticleSystem,這是一個參數化的對象,用於控制單個粒子對象隨時間變化的外觀和行為。粒子是由粒子發射器產生的,它有一個位置和類型,存在一定的時間,然后消亡。
其中一些屬性是動態的。請注意,不是使用可用的單色特性比例,而是使用startScale和endScale。通過這些選項,您可以指定在粒子的整個生命周期中,粒子大小在開始和結束比例之間的過渡。startColor和endColor的工作原理類似。
影響視覺輸出的其他方式包括最大和最小屬性。對於具有最大和最小輸入的每個變量,粒子上該變量的實際值將隨機指定為介於最大和最小輸入之間,並在粒子的整個生命周期內靜態保持該值。例如,使用minimumSpeed和maximumSpeed作為隨機選擇的每個粒子速度的邊界。允許這樣更改的屬性包括圖像大小、速度、壽命和粒子壽命。
2. 發射器
粒子出生時,其初始位置和速度矢量由粒子發射器控制。發射器每秒將產生一定數量的粒子,由emissionRate參數指定,並根據發射器類型以隨機速度初始化。
Cesium有各種各樣的粒子發射器,你可以開箱即用。
2.1 BoxEmitter箱體發射器
>>