threejs---tween补间动画插件--前端接收物体位置信息进行顺滑动画

  • 从后端接收新的位置(newPosition)和四元数旋转(newQuaternion)数据。
  • 使用 TWEEN 创建两个补间动画:一个针对位置(positionTween)和另一个针对旋转(rotationTween)。
  • 在渲染循环中调用 TWEEN.update() 来更新补间动画。
  • 渲染更新后的场景。
// 假设 `object` 是你要移动的 Three.js 物体,
// `newPosition` 是后端发来的新位置信息,
// `newQuaternion` 是后端发来的新四元数旋转信息

const targetPosition = new THREE.Vector3(
                        newPosition.x, 
                        newPosition.y, 
                        newPosition.z
                        );
const targetQuaternion = new THREE.Quaternion(
                         newQuaternion.x, 
                         newQuaternion.y, 
                         newQuaternion.z, 
                         newQuaternion.w
                         );

// 创建位置动画
new TWEEN.Tween(object.position)
  .to({ 
      x: targetPosition.x, 
      y: targetPosition.y, 
      z: targetPosition.z }, 1000)
  .easing(TWEEN.Easing.Quadratic.InOut)
  .start();

// 创建旋转动画
new TWEEN.Tween(object.quaternion)
  .to({
    x: targetQuaternion.x,
    y: targetQuaternion.y,
    z: targetQuaternion.z,
    w: targetQuaternion.w
  }, 1000)
  .easing(TWEEN.Easing.Quadratic.InOut)
  .start();

// 渲染循环
function animate(time) {
  requestAnimationFrame(animate);
  
  // 这里更新 TWEEN 动画
  TWEEN.update(time);
  
  // 然后渲染场景
  renderer.render(scene, camera);
}

// 启动动画循环
animate();
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值