相机操作entities加载时提供了较为方便的 viewer.trackedEntity 函数;
方法 2
追踪 model 较为复杂,需要手动操作相机变换。
// primitives加载时锁定相机
viewer.scene.screenSpaceCameraController.enableRotate = false;//锁定相机
let model = viewer.scene.primitives.add( new Cesium.Model.fromGltf({
url : '../src/data/GLTF/dazuBIM.gltf',
modelMatrix : modelMatrix,
scale : 1,
}) );
model.readyPromise.then(function(argument) {
viewer.scene.screenSpaceCameraController.enableInputs = true;//解除锁定相机
});
一个完整的相机
viewer.camera.setView
viewer.camera.flyTo({
duration: duration,
destination: cameraTransform.destination,
orientation: {
direction: cameraTransform.direction,
up: cameraTransform.up,
},
easingFunction: Cesium.EasingFunction.QUADRATIC_IN_OUT,
duration: 5, // 设置飞行持续时间,默认会根据距离来计算
complete: function() {}, // 到达位置后执行的回调函数
cancle: function() {}, // 如果取消飞行则会调用此函数
pitchAdjustHeight: -90, // 如果摄像机飞越高于该值,则调整俯仰俯仰的俯仰角度,并将地球保持在视口中。
maximumHeight: 5000, // 相机最大飞行高度
flyOverLongitude: 100, // 如果到达目的地有2种方式,设置值后会强制选择方向飞过这个经度(这个,很好用)
});
viewer.trackedEntity = label;
viewer.trackedEntity = undefined;
Cesium 中两种添加 model 方法的区别 - flypopo - 博客园。添加对象看了很多觉得这篇文章哦总结的比较好