- 从后端接收新的位置(newPosition)和四元数旋转(newQuaternion)数据。
- 使用 TWEEN 创建两个补间动画:一个针对位置(positionTween)和另一个针对旋转(rotationTween)。
- 在渲染循环中调用 TWEEN.update() 来更新补间动画。
- 渲染更新后的场景。
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.update(time);
renderer.render(scene, camera);
}
animate();