补间动画(Tween Animation)是一种常用的动画效果实现方法,用于在两个或多个状态之间平滑过渡。在 Three.js 中,可以使用补间动画库(Tween)来创建和控制补间动画。
补间动画通过定义起始状态和目标状态,并指定过渡时间和缓动函数,在指定的时间内自动计算并更新中间状态,从而实现平滑的动画效果,并且可以对对象的属性进行补间动画,比如位置、旋转、缩放等。
# 基本使用
# 导入补间动画
|  |  | 
|  | import * as TWEEN from 'three/examples/jsm/libs/tween.module.js' | 
# 创建物体
|  | const Ball=new Three.Mesh( | 
|  |     new Three.SphereGeometry(1,16,16), | 
|  |     new Three.MeshBasicMaterial({ | 
|  |         color:'red' | 
|  |     }) | 
|  | ) | 
|  | Ball.position.x=-3 | 
|  | Ball.position.y=3 | 
|  | scene.add(Ball) | 
# 创建补间动画
|  |  | 
|  | const tween=new TWEEN.Tween(Ball.position) | 
# 目标位置
# 启动动画
# 更新动画
|  | function animate() { | 
|  |     controls.update() | 
|  |     requestAnimationFrame(animate) | 
|  |     render.render(scene, camera) | 
|  |      | 
|  |     TWEEN.update() | 
|  | } | 
# 进阶使用
# 重复
|  |  | 
|  | tween.repeat(Infinity) | 
|  |  | 
|  | tween.repeat(2) | 
# 往返摆动(悠悠球)
# 延迟
# 启用缓动函数 (速度曲线) 官网有
|  |  | 
|  | tween.easing(TWEEN.Easing.Quadratic.InOut) | 
# 动画链接(链式)
A 动画执行完,再执行 B 动画
|  | tweena.chain(tweenb) | 
|  | tweena.start() | 
# 坑点
启动动画链接的时候,不需要再开启另一个动画了
就是说 tweena.chain (tweenb)
只需要 tweena.start (),执行完 tweena 后就会自动执行 tweenb
不需要 tweenb.start (), 这样会同时执行 tweena.chain (tweenb) 和 tweenb