以下是一段示例代码,目的是使某一物体运动并进行相机跟踪
该代码创建了一个CesiumViewer对象,并在其中添加了一个名为“飞机”的实体对象。该实体具有模型、位置和路径三个属性。通过定义一个包含三个时空点的数组,并使用插值算法计算出物体运动的位置,然后将其赋值给实体的位置属性。同时设置时钟参数和时间线参数
// 创建一个实体对象 var entity = this.viewer.entities.add({ // 为实体指定名称 name : '飞机', // 为实体指定模型 model:{ uri:"../../../static/3DModel/higokumaru__honkai_impact_3rd/scene.gltf", show:true, scale: 5000.0 , silhouetteColor : Cesium.Color.YELLOW, silhouetteSize : 0, colorBlendMode:Cesium.ColorBlendMode.MIX, colorBlendAmount: 0, heightReference: Cesium.HeightReference.CLAMP_TO_GROUND }, // 为实体指定位置属性 position : Cesium.Cartesian3.fromDegrees(-75.59777, 40.03883), // 为实体指定路径属性 path : { resolution : 1, material : new Cesium.PolylineGlowMaterialProperty({ glowPower : 0.1, color : Cesium.Color.YELLOW }), width : 10 } }); // 定义一个数组,存储物体运动的时间和位置点 var positionData = [ {time:0, longitude:-75.59777, latitude:40.03883}, {time:15, longitude:-50.50, latitude:35.14}, {time:30, longitude:-35.53, latitude:34.82}, ]; // 创建一个采样器对象,用于插值计算物体运动的位置 var positionSampler = new Cesium.SampledPositionProperty(); positionSampler.setInterpolationOptions({ interpolationDegree : 2, interpolationAlgorithm : Cesium.HermitePolynomialApproximation }); var start = Cesium.JulianDate.fromDate(new Date(2023, 2, 29)); // // 遍历数组,将时间和位置点添加到采样器对象中 for (var i = 0; i < positionData.length; i++) { var data = positionData[i]; var time =new Cesium.JulianDate.addSeconds(start, data.time, new Cesium.JulianDate()); var position =new Cesium.Cartesian3.fromDegrees(data.longitude, data.latitude); positionSampler.addSample(time, position); } entity.position = positionSampler; console.log(entity.position); // 定义时钟参数,设置开始时间、结束时间和当前时间 var stop = Cesium.JulianDate.addSeconds(start, 30 ,new Cesium.JulianDate()); this.viewer.clock.startTime = start.clone(); this.viewer.clock.stopTime = stop.clone(); this.viewer.clock.currentTime = start.clone(); this.viewer.clock.clockRange = Cesium.ClockRange.LOOP_STOP; this.viewer.clock.multiplier = 1; // 定义时间线参数,设置开始时间、结束时间和当前时间刻度颜色 this.viewer.timeline.zoomTo(start.clone(), stop.clone()); this.viewer.timeline.makeLabel(time => time.toString()); this.viewer.timeline.updateFromClock(); this.viewer.timeline.scrubColor= "rgb(255 ,255 ,255)"; // 设置视角跟随物体运动,并显示信息框 this.viewer.trackedEntity = entity;
标签:视角,start,viewer,var,time,Cesium,new,十九 From: https://www.cnblogs.com/LJXXXX/p/17164756.html