tweenjs-实现threejs的转场动画(基于vue)

注意!文章主讲tweenjs的使用,省去了threejs部分的代码,请自行添加!

参考博文

链式补间:tween.chain

如果有多组补间动画,想要a组动画结束后立即启动b组动画,则需要使用tweena.chain(tweenb)

效果图:

在这里插入图片描述

1、引入tweenjs

import * as TWEEN from '@/assets/js/Tween'

2、使用

<el-button @click="action">开始运动</el-button>

data:
p1: { x: 0, y: 2, z: 1000 }

methods:
action () {
      var tweena = this.cameraCon({ x: 20, y: 100, z: 100 }, 4000)
      var tweenb = this.cameraCon({ x: 200, y: 50, z: -100 }, 9000)
      //var tweenc = this.cameraCon({ x: -20, y: 100, z: 100 }, 9000)
      //var tweend = this.cameraCon({ x: 0, y: 50, z: 200 }, 4000)
      tweena.chain(tweenb)
      //tweenb.chain(tweenc)
      //tweenc.chain(tweend)
      // tweend.chain(tweena)
      tweena.start()
}cameraCon (p2, time) {
      var tween1 = new TWEEN.Tween(this.p1).to(p2, time).easing(TWEEN.Easing.Quadratic.InOut)
      tween1.onUpdate(() => {
        this.camera.position.set(this.p1.x, this.p1.y, this.p1.z)
        this.camera.lookAt(0, 0, 0)
        // this.controls.target.set(0, 0, 0) // 确保镜头移动后,视觉中心还在圆点处
        // this.controls.update()
      })
      return tween1
},
render(){  一定要在动画循环函数里面更新TWEENrequestAnimationFrame(this.animate)
      TWEEN.update()
      this.renderer.render(this.scene, this.camera)
}

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值