实现第一人称视角动画跟踪

项目中要求,实现动画在执行过程中,视角一直跟随动画,有两种实现办法

一、利用trackedEntity实现

       that.trackedEntity = viewer.entities.add({
          id: 'tracked-entity',
          position,
          point: {
            pixelSize: 5,
            show: true, // 不能设为false
          },
          viewFrom: new Cesium.Cartesian3(-100, 0, 20), // 观察位置的偏移量
        });
        viewer.trackedEntity = that.trackedEntity;

这种办法虽然能够实现跟踪动画,但是视角是固定死的,当运动轨迹和视角方向一直,看到的是背景,当运动轨迹和视角方向不一致,看到的是侧面,如下如

二、监听scene.preUpdate,实时修改视角

viewer.scene.preUpdate.addEventListener(this.traceHandler)

traceHandler() {
        let center = this.nodeAnimationModel.position.getValue(
            viewer.clock.currentTime
        );
        let orientation = this.nodeAnimationModel.orientation.getValue(
            viewer.clock.currentTime
        )
        let transform = Cesium.Transforms.eastNorthUpToFixedFrame(center);
        transform = Cesium.Matrix4.fromRotationTranslation(Cesium.Matrix3.fromQuaternion(orientation), center);
        viewer.camera.lookAtTransform(transform, new Cesium.Cartesian3(-100, 0, 50))
    },

效果如下,无论动画如何移动,视角一直跟着小人(第一人称视角)

  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值