1. 程式人生 > 其它 >cesium 粒子特效

cesium 粒子特效

技術標籤:cesiumnode.js

滑鼠左鍵單擊實現新增 粒子特效,右擊停止新增

程式碼如下:

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();

說明一下:我這是在模型上面單擊位置準確,如果你要在地圖上位置準確修改獲取經緯度方法

                         最後附上兩張火焰照片

在這裡插入圖片描述
在這裡插入圖片描述