You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

求助:如何实现ThreeJS场景中多物体点击按钮的平滑过渡效果

实现ThreeJS物体点击按钮后的平滑过渡效果

嘿,很高兴看到你已经搞定了多物体添加和按钮交互的基础功能!要实现点击按钮时的平滑过渡,最常用也最省心的方法就是用Tween.js这个动画库,它能帮你轻松处理属性的缓动过渡,不用自己写复杂的帧动画逻辑。

下面我给你梳理具体的实现步骤,结合你的代码来调整:

一、准备工作:引入Tween.js

首先你需要在项目中引入Tween.js,在CodePen这类在线编辑器里,可以直接在设置面板添加它的CDN资源,确保动画库能正常加载。

二、修改按钮点击逻辑,添加补间动画

你之前的代码里应该是直接修改物体的属性(比如位置、缩放),现在我们把这部分替换成Tween动画,让变化过程平滑起来:

示例代码调整

假设你想要让球体从当前状态平滑过渡到目标位置/缩放,参考下面的写法:

// 基于你的代码创建球体网格
const boxLarge = new THREE.SphereGeometry(5, 5, 5);
const boxMiddle = new THREE.SphereGeometry(5, 5, 5);

const sphere1 = new THREE.Mesh(boxLarge, new THREE.MeshBasicMaterial({color: 0xff0000}));
const sphere2 = new THREE.Mesh(boxMiddle, new THREE.MeshBasicMaterial({color: 0x00ff00}));

scene.add(sphere1, sphere2);

// 按钮点击事件处理
document.querySelector('#transitionBtn').addEventListener('click', () => {
  // 给第一个球体做位置过渡:从当前位置平滑移动到(10, 0, 0)
  new TWEEN.Tween(sphere1.position)
    .to({x: 10, y: 0, z: 0}, 1000) // 目标属性,过渡时长(单位:毫秒)
    .easing(TWEEN.Easing.Quadratic.InOut) // 缓动曲线,让动画更自然
    .start(); // 启动动画

  // 给第二个球体做缩放过渡:从当前尺寸放大到2倍
  new TWEEN.Tween(sphere2.scale)
    .to({x: 2, y: 2, z: 2}, 800)
    .easing(TWEEN.Easing.Cubic.Out)
    .start();
});

// 关键!在渲染循环里更新Tween动画
function animate() {
  requestAnimationFrame(animate);
  TWEEN.update(); // 必须添加这行,否则动画不会运行
  renderer.render(scene, camera);
}
animate();

三、几个关键注意点

  • 不要忘记更新Tween:TWEEN.update()必须放在你的渲染循环里,这是让动画帧持续更新的核心,很多新手容易漏掉这一步导致动画失效。
  • 选择合适的缓动曲线:Tween.js提供了很多内置缓动函数,比如线性、二次、三次、弹性等,Quadratic.InOut会让动画先慢后快再慢,很适合自然的平滑过渡;如果想要弹性回弹效果,可以试试Elastic.Out。
  • 批量处理多物体:如果场景里有大量物体需要过渡,可以把它们放进数组循环处理,还能给每个物体加一点延迟,做出错落有致的 stagger 效果:
const spheres = [sphere1, sphere2, sphere3];
spheres.forEach((sphere, index) => {
  new TWEEN.Tween(sphere.position)
    .to({x: 5 * index, y: 0, z: 0}, 1000 + index * 200) // 每个球体延迟200ms启动
    .easing(TWEEN.Easing.Quadratic.InOut)
    .start();
});

这样修改后,点击按钮时你的物体就会有流畅的过渡效果啦。如果还需要其他过渡类型,比如透明度变化、旋转动画,方法都是一样的,只需要把position换成rotation或者material.opacity即可~

内容的提问来源于stack exchange,提问作者Ben Davies

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 07:06:02