cesium Primitive改变位置
时间: 2023-07-05 15:24:07 浏览: 597
要使用Cesium Primitive更改位置,可以通过以下步骤实现:
1.获取Primitive对象
```javascript
var primitive = viewer.scene.primitives.get(0); //假设Primitive对象在场景中的索引为0
```
2.设置Primitive对象的模型矩阵
```javascript
var position = Cesium.Cartesian3.fromDegrees(-75.59777, 40.03883);
var modelMatrix = Cesium.Transforms.translationMatrix(position);
primitive.modelMatrix = modelMatrix;
```
上述代码将Primitive对象移动到经度为-75.59777,纬度为40.03883的位置。
3.更新场景
```javascript
viewer.scene.requestRender();
```
如果您需要使Primitive对象沿着一条路径移动,则可以使用Cesium的Tween库来实现插值动画。例如,您可以使用以下代码将Primitive对象沿着一条折线路径移动:
```javascript
var start = Cesium.Cartesian3.fromDegrees(-75.59777, 40.03883);
var end = Cesium.Cartesian3.fromDegrees(-75.58833, 40.03683);
var duration = 5; //动画时长为5秒
Cesium.TweenManager.init();
Cesium.TweenManager.startTween({
duration: duration,
update: function (t) {
var position = Cesium.Cartesian3.lerp(start, end, t, new Cesium.Cartesian3());
var modelMatrix = Cesium.Transforms.translationMatrix(position);
primitive.modelMatrix = modelMatrix;
viewer.scene.requestRender();
},
complete: function () {
console.log('Animation complete!');
}
});
```
上述代码将Primitive对象沿着一条折线路径从起点移动到终点,动画时长为5秒。在动画过程中,我们使用Cesium的插值函数lerp()计算Primitive对象的位置,并将其设置为模型矩阵,然后请求场景重新渲染。最后,我们使用Tween库的complete回调函数来输出一个完成消息。
阅读全文