cesium 粒子特效
阿新 • • 發佈:2021-02-04
滑鼠左鍵單擊實現新增 粒子特效,右擊停止新增
程式碼如下:
function fireadd() {
var firejingdu = 116.6554885;
var fireweidu = 39.5454545;
var fireheight = 0;
var firedata;
var boolen = true;
//獲取事件觸發所在的 html Canvas容器
firecanvas = viewer.scene.canvas;
var handler = new Cesium.ScreenSpaceEventHandler( firecanvas);
handler.setInputAction(function(evt) {
var pickedObject = viewer.scene.pick(evt.position);
var cartesian = viewer.scene.pickPosition(evt.position);
if (Cesium.defined(cartesian)) {
var cartographic = Cesium.Cartographic.fromCartesian(cartesian);
var lng = Cesium.Math.toDegrees (cartographic.longitude);
var lat = Cesium.Math.toDegrees(cartographic.latitude);
var height = cartographic.height; //模型高度
firedata = new Cesium.ParticleSystem({
image: './img/fire1.png',
startColor: Cesium.Color.RED.withAlpha(0.7),
endColor: Cesium.Color.YELLOW.withAlpha(0.3),
startScale: 0,
endScale: 10,
//設定粒子壽命可能持續時間的最小限值(以秒為單位),在此限值之上將隨機選擇粒子的實際壽命。
minimumParticleLife: 1,
maximumParticleLife: 6,
minimumSpeed: 1,
maximumSpeed: 4,
imageSize: new Cesium.Cartesian2(20, 20),
// Particles per second.
emissionRate: 4,
lifetime: 160.0,
emitter: new Cesium.CircleEmitter(5.0),
modelMatrix: Cesium.Transforms.eastNorthUpToFixedFrame(Cesium.Cartesian3.fromDegrees(lng, lat,
height)), //從模型轉化成世界座標
});
handler.setInputAction(function(click) {
boolen = false
}, Cesium.ScreenSpaceEventType.RIGHT_CLICK);
var firetileset1 = viewer.scene.primitives.add(firedata);
firetileset1.show = boolen;
}
}, Cesium.ScreenSpaceEventType.LEFT_CLICK);
}
清除粒子特效:
第一種清除單個:
scene.primitives.remove(firedata);
第二種清除全部:
scene.primitives.removeAll();
說明一下:我這是在模型上面單擊位置準確,如果你要在地圖上位置準確修改獲取經緯度方法
最後附上兩張火焰照片