教程操作教程阅读约 8 分钟

在 Unity 里自动绑定任意 3D 模型: 直接可用的 Humanoid,动画片段齐全

在 Project 窗口里选中模型,点 Rig。一分钟后,绑定好的 FBX 就在它旁边,已设为 Humanoid,每个动画都是一个片段。

Window › AFK AI

AFK AI

Signed in as you@example.comSign out

Model

Hero.fbx

Body typehuman

All animationsRig only

FacingAuto

Adding the animations...

Stop waiting
Project › Assets/Characters
  • Hero.fbx
  • Hero_rigged.fbxHumanoid
  • └Idle_ALoop Time ✓
  • └WalkLoop Time ✓
  • └Jump_Startonce
  • └Sword_Attackonce
  • └…
  • └Hero_riggedAvatarAvatar
按插件界面绘制,并非截图:AFK AI 窗口正在绑定 Hero.fbx;之后的 Project 窗口里,Hero_rigged.fbx 已设为 Humanoid,循环的动画片段都有标记。

在 Unity 里让角色动起来,通常要绕道 Mixamo。先导出 FBX 并上传,在下巴、手腕、手肘和膝盖上放标记点,再一个个下载动画,然后把每个文件设为 Humanoid,给每个片段勾上 Loop Time。而且它只支持人形角色。

AFK AI 的包在 Unity 编辑器里的一个窗口中就能完成这一切。在 Project 窗口里选中模型,点 Rig。大约一分钟后,Hero_rigged.fbx 就出现在 Hero.fbx 旁边,已经设为 Humanoid,每个动画都是一个片段,走路和待机也已设为循环。

在 Unity 里用 Mixamo 还是 AFK AI

Mixamo 免费,人形动画库也很大。AFK AI 省去了来回折腾,还能绑动物和道具,人形模型一个文件就带最多 593 个动画。免费账号能用免费动画,套餐解锁其余全部。

MixamoUnity 里的 AFK AI
在哪用网站:上传、绑定、下载Unity 编辑器里的一个窗口
你要做什么在下巴、手腕、手肘、膝盖和裆部放标记点选身体类型,点 Rig
支持的身体只支持人形人形,外加 14 种其他身体类型
动画一次下载一个该身体类型的全部动画,在一个 FBX 里
Unity 设置手动:设为 Humanoid,再给每个片段开 Loop Time已设好:Humanoid,每个动画一个片段,循环已开启
登录Adobe 账号afk.ai 账号,用 Google 登录

安装包

  1. 从 Unity 插件页面下载包:一个 .tgz 文件。把它放在项目外一个不会挪动的位置,因为 Unity 会从这个文件读取包。
  2. 在 Unity 里打开 Window > Package Manager,点左上角的 +,选 Add package from tarball...。
  3. 选你下载的 .tgz 文件,不要解压。
  4. 打开 Window > AFK AI,把窗口停靠到任意位置。

支持 Unity 2021.3 及以上版本,包括 Unity 6,Built-in、URP 和 HDRP 渲染管线都能用:插件只涉及模型导入。它的所有代码都只在编辑器里运行,不会有任何东西进入你的游戏。

登录

  1. 在 AFK AI 窗口里点 Sign in。浏览器会打开 afk.ai 的登录页面,用 Google 账号登录。
  2. 浏览器显示“You're signed in”后,关掉标签页,回到 Unity:窗口会显示你的邮箱和本月剩余的绑定次数。

如果浏览器回不到 Unity(有些安全软件会拦截),afk.ai 会改为显示一个登录码。在 AFK AI 窗口里展开 I have a sign-in code,粘贴进去,点 Use code。

登录信息保存在这台电脑上你的用户对应的 Unity 设置里,从不写进项目,所以分享或提交项目时不会连带分享出去。

绑定模型

  1. 在 Project 窗口里选中模型:.fbx、.glb 或 .gltf 文件,最大 50 MB。已经放进场景的模型也行:插件会上传它的源文件。只有装了 glTF 导入器,Unity 才会把 .glb 文件显示为模型,但不管装没装,插件都能上传。
  2. 在 AFK AI 窗口里设置 Body type:人物和所有两条腿走路的角色选 human,动物或生物就选对应的类型。
  3. 保持 All animations 开启,或者只要骨骼就选 Rig only。Facing 保持 Auto。
  4. 点 Rig。窗口会显示进度:上传、等待、绑定、添加动画、下载。这期间可以继续干活,关掉窗口也不会中断。

完成后,Hero_rigged.fbx 会保存在 Hero.fbx 旁边,在 Project 窗口里处于选中并高亮状态。原文件不做任何改动。

Unity 里得到什么

  • Humanoid:人类模型导入为 Humanoid 绑定,带有自己的 Avatar(Hero_riggedAvatar),所以能和其他所有 Humanoid 角色双向共用动画。Unity 会自动把骨骼对应到 Humanoid 槽位,手指也包括在内。
  • Generic:其他所有身体类型,从狐狸到龙,都导入为 Generic 绑定。
  • 片段:每个动画是一个单独的片段,名字和 afk.ai 上一样:Idle_A、Walk、Jog、Sprint、Jump_Start、Sword_Attack 等等。
  • 循环:名字表明会重复的片段(idle、walk、run、fly、swim 之类)已开启 Loop Time。Jump_Start、Sword_Attack、Death_A 这类一次性的动画只播一次。
  • 根运动:名字以 _RM 结尾的动画(Roll_RM、Dodge_left_RM)会自带位移,让角色向前移动;其余动画原地播放。

如果 Unity 没法把骨骼对应到 Humanoid 骨骼上,插件会改为把模型设为 Generic,并说明原因。动画照样能播放,只是不能和其他 Humanoid 角色共用。

动漫角色摆成 T 姿势,圆点标出 afk.ai 定位的关节,包括手指关节
anime-girl.glb · skeleton
root  └ pelvis    └ spine_01      └ spine_02        └ spine_03          └ neck_01            └ head          └ clavicle_l            └ upperarm_l              └ lowerarm_l                └ hand_l                  └ thumb_01_l  thumb_02_l  thumb_03_l                  └ index_01_l  index_02_l  index_03_l                  └ middle_01_l  middle_02_l  middle_03_l                  └ ring_01_l  ring_02_l  ring_03_l                  └ pinky_01_l  pinky_02_l  pinky_03_l          └ clavicle_r ... (右侧相同)    └ thigh_l      └ calf_l        └ foot_l          └ ball_l    └ thigh_r ... (右侧相同)
afk.ai 的人形绑定都使用这套骨骼:共 66 根,拇指和其余每根手指都有 3 个关节,骨骼命名与 Unreal Engine 的 Mannequin(小白人)一致。

设置 Animator

下面搭一个混合树,角色加速时从待机过渡到走路、慢跑再到冲刺,再给一个按键触发剑击:

  1. 把 Hero_rigged.fbx 拖进场景。它已经带有 Animator 和对应的 Avatar。给它加一个 Character Controller,并关闭 Animator 上的 Apply Root Motion(由脚本来移动角色)。
  2. 在 Project 窗口里选择 Create > Animator Controller(Unity 6 里是 Create > Animation > Animator Controller),命名为 Hero,拖到 Animator 的 Controller 字段上。
  3. 打开它(Window > Animation > Animator)。在 Parameters 里添加一个名为 Speed 的 Float 和一个名为 Attack 的 Trigger。
  4. 在图表上右键,选 Create State > From New Blend Tree。双击它,把参数设为 Speed,添加 4 个 motion:Hero_rigged.fbx 里的 Idle_A、Walk、Jog 和 Sprint(在 Project 窗口里点它的箭头就能看到片段)。关闭 Automate Thresholds,把阈值设为角色的实际移动速度,比如 0、1.5、3.5 和 6。
  5. 回到 Base Layer,把 Sword_Attack 片段拖进来。从混合树到它建一个过渡,条件设为 Attack,关闭 Has Exit Time,让它立刻开始;再建一个回到混合树的过渡,开启 Has Exit Time。
  6. 给角色加上这个脚本:
using UnityEngine;

// Moves the character and tells its Animator how fast it's going.
[RequireComponent(typeof(Animator), typeof(CharacterController))]
public class HeroAnimation : MonoBehaviour
{
    static readonly int Speed = Animator.StringToHash("Speed");
    static readonly int Attack = Animator.StringToHash("Attack");

    [SerializeField] float runSpeed = 6f;
    Animator animator;
    CharacterController controller;

    void Awake()
    {
        animator = GetComponent<Animator>();
        controller = GetComponent<CharacterController>();
    }

    void Update()
    {
        // The Input Manager's axes. With only the Input System package, read your Move action here instead.
        var input = new Vector3(Input.GetAxis("Horizontal"), 0f, Input.GetAxis("Vertical"));
        var move = Vector3.ClampMagnitude(input, 1f) * runSpeed;
        controller.SimpleMove(move);
        if (move.sqrMagnitude > 0.01f) transform.rotation = Quaternion.LookRotation(move);

        animator.SetFloat(Speed, move.magnitude, 0.1f, Time.deltaTime); // eased, so the blend doesn't snap
        if (Input.GetButtonDown("Fire1")) animator.SetTrigger(Attack);
    }
}

点 Play:用摇杆或方向键,角色会待机、走路、慢跑和冲刺,点鼠标就挥剑。

EntryLocomotionBlend Tree · Idle_A, Walk, Jog, Sprint↓ Attack↑ Has Exit TimeSword_Attack
示意图:Animator Controller。Locomotion 混合树按 Speed 从 Idle_A 过渡到 Sprint;Attack 触发器播放 Sword_Attack,播完后返回。

和其他角色共用动画

绑定好的人类模型是 Humanoid,Unity 会自动帮你重定向。把任何 Humanoid 片段放上去,不管来自 Asset Store 还是你自己的动画库,都能直接播放。反过来,它的片段也能在你已有的任何 Humanoid 角色上播放:把 Hero_rigged.fbx 的 Sprint 片段拖进另一个角色的 Animator Controller,它就能跑起来。

动物和生物是 Generic,它们的片段只能在自己的骨骼上播放。不过,AFK AI 绑定为同一身体类型的模型,骨骼名和动画名都一样,所以一只狐狸的 Animator Controller 能驱动你绑定的任何其他狐狸。

动物、生物和道具

点 Rig 之前,先在窗口里选好身体类型:狗、猫、狼选 fox,有蹄类选 horse,还有 bird、dragon,恐龙选 kaiju,以及 spider、insect、snake、fish、kangaroo、frog、turtle、ghost,会弹跳、旋转、晃动的道具选 object。每种都有为它的身体打造的骨骼,以及为这套骨骼制作的动画,导入后都是 Generic 绑定,片段和循环同样已设好。动物教程列出了每种类型配套的内容。

  • 龙
  • 四足
  • 有蹄类
  • 恐龙
  • 蜘蛛
  • 鱼
另外 6 种身体类型,在 afk.ai/rig 上绑定后,分别播放各自配套的动画。

怎样算一次绑定

每次点 Rig,只要 AFK AI 接受了请求,就会消耗本月的一次绑定次数,和在 afk.ai/rig 或其他 AFK AI 插件里绑定一样。绑定失败不计次数。Stop waiting 只是让 Unity 不再等待,绑定不会停,照样计次。如果连接断了,Try again 会接着取回同一次绑定,绝不会重复计次。次数用完后,窗口会显示 See plans,点击打开 afk.ai 的套餐。

出问题时怎么办

登录后浏览器回不到页面
用 I have a sign-in code。
连不上 AFK AI
检查网络连接,然后点 Try again。它会接着取回同一次绑定。
模型太大
AFK AI 接受最大 50 MB 的模型。导出一个更轻的版本,减少面数或缩小贴图。
提示“keeps its data in separate files”
这是旁边带着 .bin 的 .gltf。改为导出 .glb。
片段不该循环却在循环
选中 Hero_rigged.fbx,在 Inspector 里打开 Animation 标签页,选中那个片段,修改 Loop Time,再点 Apply。
点 Rig 没反应
先在 Project 窗口里选中一个 .fbx、.glb 或 .gltf。窗口会提示缺了什么。

常见问题

还需要 Mixamo 吗?

不需要。插件一步完成绑定和动画导入,并设为 Humanoid。你仍然可以给它用 Mixamo 的动画:以任意 Humanoid 角色下载,设为 Humanoid,就能在你的角色上播放。

AFK AI 的包会打进游戏构建吗?

不会。它的所有代码都在只用于编辑器的程序集里。留在项目里的只有绑定好的 FBX,一个普通的模型资源。

支持 Unity 6 吗?

支持。Unity 2021.3 及之后的所有版本都能用,包括 Unity 6。

能在 Unity 里绑定 .glb 或 .gltf 模型吗?

能。插件会原样上传文件,即使 Unity 没装 glTF 导入器、不把它显示为模型也一样。返回的是 FBX,Unity 不用装任何额外的东西就能导入。.gltf 必须把所有内容内嵌在里面;否则就导出 .glb。

绑定结果能用于 VRChat 虚拟形象吗?

能。绑定好的人类模型是 Humanoid,每根手指都有,正是 VRChat 需要的。其余设置参见 VRChat 教程。

角色朝向不对怎么办?

把 Facing 设为模型实际转过的角度(90°、180° 或 270°),再绑定一次。大多数模型用 Auto 就能自动判断。

能用脚本批量绑定整个文件夹的模型吗?

插件一次只绑定一个模型。批量绑定和构建流水线,可以用绑定 API,通过命令行或你自己的代码调用。

Unreal、Godot 或 Blender 也有插件吗?

有:Unreal Engine、Godot 和 Blender 都有各自的教程,AFK AI 插件总览介绍了全部 9 款软件。

绑定模型,让它动起来

AI 在浏览器里完成绑定,模型就能直接播放几百个动画。下载一个 GLB,什么引擎都能用。

绑定模型

更多教程