AX 爱鲜报

综合 / 开发工具 · 2026-10-29 15:36 · 1 阅读 · 0 赞

Anime.js 4.5 内置 Three.js Adapter:3D 动画与 2D 动效统一 API

Anime.js v4.5.0 发布内置 Three.js Adapter,可直接将 Mesh、Camera、Material 作为动画目标,与 2D 动画共享时间轴、Stagger 和 Scroll 能力,简化 WebGL 动效开发。

做 WebGL 落地页的同学多半踩过这个坑:Three.js 负责渲染,动画却要自己写 requestAnimationFrame、手动插值 position / rotation / material.uniforms,或者把 mesh.position 拆成三条线塞进时间轴——代码散、难维护,和页面上的 DOM 动画也接不上。

2026 年 6 月,Anime.js v4.5.0[1] 正式发布内置 Three.js Adapter。现在可以把 Mesh、Camera、Material 直接丢进 animate(),和动 SVG、动 CSS 一样顺手。这才是原文说的「前端 3D 动画王炸组合」——不是新框架,而是两个成熟库终于官方牵手。

Anime.js 4.5 官方发布封面

为什么值得关注

维度 以前(手动拼) 现在(官方 Adapter)
写法 targets: mesh.position + 另写 mesh.rotation animate(mesh, { x, rotateY, scale })
角度 自己换算弧度/角度 Adapter 自动处理
材质/Uniform 在 update 里改 uniform.value 属性名直接映射到材质字段
与 UI 联动 两套动画系统 同一套 Timeline / Stagger / Scroll

Anime.js 本体 gzip 后约 24.5 KB(按需引入更小),Three.js 仍是可选 peer dependency(0.150.0+ 均可)。对官网、产品 3D 展示、数据可视化大屏这类「要炫但不要重引擎」的场景,组合很合适。

Anime.js 官方 Logo 动效

四大升级,直击 3D 动效痛点

1. 官方 Three.js Adapter,一行 import 启用

侧载适配器后,Object3D、灯光、相机、材质、UniformNode(TSL)、实例化网格都能作为动画目标:

import { animate, createTimer } from 'animejs';
import * as THREE from 'three';
import 'animejs/adapters/three';

const mesh = new THREE.Mesh(geometry, material);
scene.add(mesh);

animate(mesh, {
  rotateY: { to: 360, duration: 3000 },
  x: { to: 2, duration: 1500 },
  ease: 'inOutQuad',
  loop: true,
});

// 与渲染循环同步
createTimer({
  onUpdate: () => renderer.render(scene, camera),
});

文档:Three.js adapter[2]

2. 属性扁平化,告别嵌套对象

Adapter 把 mesh.position.x、mesh.rotation.y、mesh.material.opacity 等折叠成 x、rotateY、opacity。颜色支持 CSS 写法,旋转统一用角度读写,不用再心算 Math.PI。

3. 3D Stagger:粒子、矩阵、群控一次搞定

v4.5 的 Stagger 支持三维网格 grid: [列, 行, 深],配合 axis: 'z'、jitter、seed,适合做方块墙、点云展开、展厅阵列入场——以前要写嵌套循环,现在声明式配置即可。

import { stagger, utils } from 'animejs';
import { getInstances } from 'animejs/adapters/three';

const instances = getInstances(mesh);
utils.set(instances, {
  x: stagger([-5, 5], { grid: [10, 10, 10], axis: 'x' }),
  y: stagger([-5, 5], { grid: [10, 10, 10], axis: 'y' }),
  z: stagger([-5, 5], { grid: [10, 10, 10], axis: 'z' }),
});

4. 与 2D 动画同一套时间轴

createTimeline()、onScroll、弹簧缓动、Draggable 等 Anime.js 4 能力,可以直接编排「页面标题飞入 → 相机推进 → 模型旋转 → UI 面板淡入」。营销页、发布会 H5、作品集站点不用再维护 GSAP + 自写 Tween 两套逻辑。

Three.js 官方品牌图

实测:从「能跑」到「好用」

社区里早期集成通常是 anime({ targets: cube.rotation, y: Math.PI * 2 }),加载 GLTF 后还经常遇到 undefined——模型没进场景就开时间轴,或该绑 Group 却绑了子节点。官方 Adapter 没有消灭异步加载问题,但目标写法统一后,调试成本明显下降。

实际项目里比较顺手的组合:

•产品 3D 展示:相机 createTimeline 多机位,模型 rotateY + 材质 color 高亮部件 •滚动叙事页:onScroll 驱动相机 z 轴,DOM 文案与 3D 场景同一条时间轴 •Shader 艺术站:UniformNode、材质参数直接参与动画,少写 update 回调 •轻量互动:createAnimatable 跟手移动 + Three.js 射线拾取

复杂骨骼动画、物理模拟、大规模场景漫游——仍建议用 three.js AnimationMixer 或专业 DCC 流程;Anime.js 的定位是补位「程序化动效 + 页面编排」,不是替代 glTF 动画剪辑。

快速上手(3 步)

1. 安装

npm i animejs three

2. 启用 Adapter 并写第一个动画(见上文代码块)

3. 用 createTimer 或 renderer.setAnimationLoop 保证每帧渲染

**加载 GLTF 时务必在 loader.load / loadAsync 完成后再 animate(),必要时包一层 Group 再作为 targets。

视频 / 动图参考

•Anime.js 官方站:https://animejs.com/[3] (首页有 SVG、Stagger、Timeline 等交互 Demo,可先熟悉 API 再接入 Three.js) •Three.js 入门:https://threejs.org/[4] (官方 Examples 含大量 WebGL 场景) •v4.5 Release Note:https://github.com/juliangarnier/anime/releases/tag/v4.5.0[5]

Anime.js GitHub 项目

选型建议(实话版)

适合上 Anime.js + Three.js:

•品牌官网、电商 3D 详情、创意 coding 作品 •需要 DOM + WebGL 统一动效编排 •团队已熟悉 Anime.js,不想引入更重方案

不必强上:

•纯游戏级 3D、复杂角色动画 → 考虑 PlayCanvas / Unity WebGL •只要简单旋转展示 → Three.js 自带 AnimationMixer 可能更轻 •极致包体 → 评估是否值得同时加载两库

常见问题

现象 原因 处理
画面不动 没触发 renderer.render 用 createTimer 或 setAnimationLoop
GLTF 不跟手 异步未就绪 await loadAsync 后再 animate
旋转角度怪 旧习惯写弧度 Adapter 下旋转用角度
包体变大 全量引入 按模块 import { animate } from 'animejs'

最后

Anime.js 4.5 的意义,是把 Three.js 从「只能写渲染循环」拉进现代前端动画工作流。你仍然需要懂场景、相机、光照,但镜头推进、阵列入场、材质过渡这些高频需求,终于可以用同一套 API 和 2D 动效一起编排。

如果你正在做 2026 年的 3D 落地页或互动展览页,这个组合值得花半天接入试一下——改动小,收益直观。

参考链接

•Anime.js 文档:https://animejs.com/documentation/[6] •Three.js Adapter:https://animejs.com/documentation/adapters/threejs-adapter/[7] •v4.5.0 Release:https://github.com/juliangarnier/anime/releases/tag/v4.5.0[8] •Three.js 官网:https://threejs.org/[9]

标签 3D Three.js WebGL 前端 Anime.js

评论

登录后才可评论

0 条评论

  • 暂无评论,来写第一条吧。