如何让任意 3D 物体弹跳、旋转、晃动或挤压拉伸
给金币、宝箱、路牌等道具加上弹跳、旋转、晃动、摇摆、漂浮或挤压拉伸动画,下载 GLB 用于 Unity、Unreal、Godot 或 three.js。浏览器或代码均可。
2026年10月25日
道具是最容易制作、却最难做动画的模型。金币、宝箱或药水瓶没有骨架,所以大多数人只能在引擎里移动和旋转整个物体来做动画。这样能得到一枚旋转的金币,却永远做不出落地时被压扁的宝箱、Q 弹晃动的果冻或被风吹弯的路牌,因为这些都需要网格本身发生形变。
afk.ai 的物体绑定解决了这个问题。它会在任意模型内部匹配一套小骨架,并把网格蒙皮到骨架上,让物体可以弯曲、挤压和拉伸,还附带九个现成就能播放的动画。
物体骨架

物体骨架有 21 个关节:模型中间一条脊柱,加上横跨脊柱的三排骨骼,全部根据你的模型匹配。由于网格蒙皮到了这些骨骼上,物体在运动时会弯曲、变形,这是单纯的移动加旋转动画做不到的。
九个动画
| 动画 | 效果 | 时长 | 适用于 |
|---|---|---|---|
| Bounce | 上下弹跳 | 0.8 秒 | 拾取物、收集品、待拾取的物品 |
| Squash_Stretch | 挤压和拉伸 | 1 秒 | 卡通道具、按钮、任何有弹性的东西 |
| Spin | 旋转一整圈 | 1 秒 | 金币、宝石、奖励 |
| Float | 缓慢地上下浮动 | 3 秒 | 悬浮物品、能量道具、浮空岛 |
| Wobble | 果冻般的晃动 | 1.3 秒 | 刚落地或被击中的东西 |
| Shake | 快速抖动 | 1 秒 | 锁住的门、答错、受到伤害 |
| Sway | 轻柔地摇摆 | 2 秒 | 树、路牌、灯、植物 |
| Flag_Wave | 一道波浪贯穿整个物体 | 1 秒 | 旗帜、横幅、布料 |
| Pop_In | 弹出出现 | 0.7 秒 | 生成、解锁、UI 弹出 |
在浏览器中给物体做动画
- 打开 afk.ai/rig,把你的模型拖进去(GLB、glTF 或 FBX;OBJ、STL 和压缩包里的模型会自动转换)。
- 询问模型类型时,选择 Object or prop(物体或道具)。如果只想让模型的一部分动起来,先选择 Select a part(选择部件,详见下文)。
- 在你的模型上预览动画。
- 下载包含所需动画的已绑骨 GLB。
只让模型的一部分动起来
很多时候,道具只有一部分需要动:旗帜动而旗杆不动,招牌动而挂招牌的柱子不动,植物动而花盆不动,还有台灯的灯罩、基座顶上的水晶。在 afk.ai/rig 上,你可以只给这一部分绑骨,模型的其余部分原封不动。
- 把模型拖进去,询问模型类型时,选择 Select a part(选择部件),而不是 Whole model(整个模型)。
- 圈出你想做动画的部分,或者点击某个零件把它整个选中。用 Add(添加)和 Remove(移除)细化选区,用 Turn view(旋转视图)绕着模型查看,Select through to the back(穿透选择背面)还会把你看不到的面也选上。
- 点击 Continue(继续),然后选择这个部分是什么,比如旗帜、招牌或植物就选 Object or prop。
- AI 只给选中的部分绑骨。预览动画,然后下载。
没有选中的部分都会保持静止,并和动起来的部分一起保存在同一个 GLB 里,所以飘扬的旗帜会带着旗杆,摇摆的招牌会带着柱子,直接放进场景就能用。这个功能适用于任何体型,不只是物体:选中底座上的雕像或展台上的角色,就只有人物会动。
选择部件只能在网站上进行。API 会给整个模型绑骨。
用代码给物体做动画
afk.ai API 以同样的方式给物体绑骨,可以一次处理整个文件夹的道具,也可以处理玩家上传的物体:
npx afk-rig coin.glb --type object --animations Spin,Bounce -o coin.rigged.glb
在 AI 智能体中,afk-rig MCP 服务器只需一次工具调用就能完成同样的事。
在引擎中播放
three.js
import * as THREE from 'three'
import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'
const gltf = await new GLTFLoader().loadAsync('coin.rigged.glb')
scene.add(gltf.scene)
const mixer = new THREE.AnimationMixer(gltf.scene)
mixer.clipAction(THREE.AnimationClip.findByName(gltf.animations, 'Bounce')).play()
const clock = new THREE.Clock()
renderer.setAnimationLoop(() => {
mixer.update(clock.getDelta())
renderer.render(scene, camera)
})
Godot
把 GLB 拖进项目。导入后的场景里有一个 AnimationPlayer,所有动画都按名称列在其中,所以 $AnimationPlayer.play("Spin") 就能播放其中一个。如果想让动画循环播放,在导入设置中设置它的循环模式。
Unity
安装 glTFast 包,把 GLB 拖进项目。以 Generic(通用)绑定类型导入(不要用 Humanoid),并把动画片段添加到 Animator Controller 中。
Unreal Engine
Unreal 5.1 及以上版本可以直接把 GLB 连同动画导入为骨骼网格体。
小技巧
- 把两种运动结合起来。让引擎负责物体沿路径移动,让绑定负责形变:一枚边旋转边飞向计分板的金币,或者一个用 Pop_In 掉进场景、再用 Wobble 稳住的宝箱。
- 凭感觉挑选。Bounce 和 Float 给人的感觉是“快来捡我”。Shake 表示“不行”。Sway 则是“活着,但很平静”。
- 一套设置,所有道具通用。每个物体绑定都有同样的九个动画名称,所以一套动画设置就能用于你所有的拾取物。
常见问题
可以只让模型的一部分动起来吗?
可以。在 afk.ai/rig 上选择 Select a part(选择部件),圈出要做动画的部分,再选择它是什么。只有这一部分会被绑骨和添加动画,模型的其余部分保持静止,并一起包含在下载文件中。
哪些物体适用?
各种道具:金币、宝石、宝箱、木箱、瓶子、招牌、旗帜、灯、植物、家具、食物和玩具。只要不是角色或动物,就按物体来绑骨。
动画可以用在商业游戏中吗?
可以。骨架和动画采用 CC0(公共领域)授权,你的模型仍归你所有。
也能给角色和动物做动画吗?
能。afk.ai 还能给人、四足和有蹄动物、鸟、龙、恐龙、蜘蛛、蛇、鱼、袋鼠、青蛙和幽灵绑骨,每种都有自己的动画。
给你的模型绑骨
在浏览器中 AI 自动绑骨,下载带动画的 GLB。