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

在 Unreal Engine 5 里自动绑定角色: 从静态网格体到带动画的骨骼网格体

右键点击网格体,选 Rig with AFK AI,一分钟后,同一个文件夹里就有了带骨骼、物理资产和动画的骨骼网格体。

Content Browser › Hero

Hero · Static Mesh

AFK AI

Rig with AFK AI

Edit… · Duplicate · Rename …

Content Browser › /Game/Characters
  • HeroStatic Mesh
  • Hero_riggedSkeletal Mesh
  • Hero_rigged_SkeletonSkeleton
  • Hero_rigged_PhysicsAssetPhysics Asset
  • …_Idle_AAnimation Sequence
  • …_WalkAnimation Sequence
  • …_JogAnimation Sequence
  • …
按插件界面绘制,并非截图:网格体右键菜单里的 Rig with AFK AI,以及它在原模型旁边添加的骨骼网格体、骨骼、物理资产和动画。

Unreal Engine 能把角色动画做得很漂亮,却不会替你绑定骨骼。从雕刻软件或资源商店素材包里拿来的静态网格体,没有骨骼也没有蒙皮权重,所以通常得绕个弯:先导出,到 Blender 或 Mixamo 里绑定,再作为骨骼网格体导回来,然后找合适的动画。

AFK AI 插件省掉了这个弯路。在 Content Browser 里右键点击网格体,选 Rig with AFK AI。大约一分钟后,同一个文件夹里就会出现一个名为 Hero_rigged 的骨骼网格体,骨骼、物理资产和动画都有,直接就能用于动画蓝图。不用编译 C++,所以纯蓝图项目也能用。

准备工作

Unreal Engine
5.1 及以上版本,支持 Windows、Mac 和 Linux。纯蓝图项目也没问题。
网格体
从 .fbx、.glb 或 .gltf 文件导入的静态网格体或骨骼网格体,最大 50 MB。AFK AI 拿到的是这个原始文件。
afk.ai 账号
免费,用 Google 账号登录。每次绑定消耗账号当月的一次绑定次数,和在 afk.ai/rig 上一样。
网络
绑定在 afk.ai 的服务器上运行。

安装插件

  1. 从 Unreal Engine 插件页面下载插件并解压,得到一个名为 AFKAI 的文件夹。
  2. 把它放进项目的 Plugins 文件夹,和 .uproject 文件在同一级:MyGame/Plugins/AFKAI/AFKAI.uplugin。没有 Plugins 文件夹就新建一个。
  3. 打开项目,或者重启项目。插件会启用 Unreal 自带的两个插件:Python Editor Script Plugin 和 Editor Scripting Utilities。如果 Unreal 要求重启,点同意。

编辑器的菜单栏里会出现 AFK AI 菜单。想在所有项目里都能用,就把文件夹放进 Unreal 安装目录下的 Engine/Plugins/Marketplace/AFKAI,然后在每个项目的 Edit > Plugins 里分别启用。

登录并绑定

  1. 选择 AFK AI > Sign in...。浏览器会打开 afk.ai,用 Google 账号登录,再回到 Unreal。AFK AI 菜单会显示你的邮箱和本月剩余的绑定次数。
  2. 在 Content Browser 里右键点击网格体,选 Rig with AFK AI。(也可以选中它,再选 AFK AI > Rig the selected mesh...。)
  3. 一个小窗口会让你选 Body type(Human,或者对应的动物、生物类型)、Animations(All animations,或者只要骨骼就选 Rig only)和 Facing(保持 Auto)。窗口标题会提示这次会消耗一次绑定次数。点 OK。
  4. 继续干活就行。AFK AI 菜单会显示进度,Output Log 里以“AFK AI”开头的行也会显示。

如果浏览器回不到 Unreal(防火墙拦住了,或者 Unreal 在另一台电脑上),afk.ai 页面会显示一个登录码。选择 AFK AI > I have a sign-in code...,粘贴登录码,点 OK。

你会得到什么

  • Skeletal Mesh(骨骼网格体):Hero_rigged,和原模型在同一个文件夹,已自动选中。原网格体不做任何改动。
  • Skeleton(骨骼):为该身体类型打造。人类有 66 根骨骼,每根手指 3 个关节,按 Unreal 自己的 Mannequin 骨骼命名:pelvis、spine_01、clavicle_l、upperarm_l、thigh_l 等等。
  • Physics Asset(物理资产):导入时生成,用于布娃娃效果和碰撞。
  • 动画:每个动画一个 Animation Sequence。人形模型最多 593 个:待机、走路、慢跑、冲刺、跳跃、闪避,剑、盾、弓和手枪的动作,舞蹈、受击和死亡。免费账号能用免费动画,套餐解锁其余全部。
  • FBX 文件:Hero_rigged.fbx,保存在原始源文件旁边;如果那里写不进去,就保存在项目的 Saved/AFK AI 文件夹里。再绑定一次会得到 Hero_rigged_2,不会覆盖任何东西。

和其他导入一样,新资产要保存后才会写入磁盘:File > Save All。

动漫角色摆成 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(小白人)一致。

不写代码,先看它动起来

把 Hero_rigged 拖进关卡。在它的 Details 面板里,找到 Animation,把 Animation Mode 设为 Use Animation Asset,在 Anim to Play 里选一个动画(比如 Walk),保持 Looping 开启。点 Play,或者直接在视口里看。

想快速检查每个动画,就双击任意一个 Animation Sequence:动画编辑器会打开,并在角色上播放它。

给玩家角色做一个动画蓝图

经典设置:静止时待机,加速时先走路,再慢跑。

  1. 右键点击 Hero_rigged,选 Create > Anim Blueprint,命名为 ABP_Hero。
  2. 在它的 Event Graph 里添加一个名为 Speed 的 float 变量。从 Event Blueprint Update Animation 出发,调用 Try Get Pawn Owner,用 Is Valid 检查一下,再接 Get Velocity 和 Vector Length XY,把结果赋给 Speed。
  3. 在 AnimGraph 里右键,选 Add New State Machine,命名为 Locomotion,连到 Output Pose。
  4. 在状态机里建 3 个状态:Idle、Walk 和 Jog,从 Asset Browser 里分别把 Idle_A、Walk 和 Jog 动画拖进去,连到各自的 Output Animation Pose。
  5. 在状态之间画双向过渡,规则基于 Speed(单位为厘米每秒):Speed > 10 时从 Idle 到 Walk,Speed > 300 时从 Walk 到 Jog,速度降下来时再反向切回。
  6. 在角色蓝图里选中 Mesh 组件,把 Skeletal Mesh Asset 设为 Hero_rigged,Anim Class 设为 ABP_Hero。把它往下移到胶囊体底部,并转向蓝色箭头的方向,和模板里的 Mannequin 一样。

更想从 C++ 开始?思路相同,最简单的版本:游戏开始时循环播放一个动画。

// HeroCharacter.h
UPROPERTY(EditAnywhere, Category = "Animation")
TObjectPtr<UAnimSequence> IdleAnimation;

// HeroCharacter.cpp
#include "Animation/AnimSequence.h"

void AHeroCharacter::BeginPlay()
{
    Super::BeginPlay();
    if (IdleAnimation)
    {
        GetMesh()->PlayAnimation(IdleAnimation, /*bLooping=*/ true);
    }
}
EntryIdle_A↓ Speed > 10↑ Speed < 10Walk↓ Speed > 300↑ Speed < 300Jog
示意图:Locomotion 状态机。每个状态播放一个动画,按 Speed(单位为厘米每秒)在状态之间切换。

用几行 Python 开启根运动

有些动画会自带位移,让角色向前移动:名字以 _RM 结尾,比如 Roll_RM、Dodge_left_RM 或 Sword_Dash_RM。其余动画原地播放。Unreal 需要逐个动画开启根运动,而插件已经启用了 Unreal 的 Python,所以几行代码就能一次全部开启。把 Output Log 的命令行从 Cmd 切换到 Python,粘贴下面的代码:

import unreal

folder = "/Game/Characters"  # the folder Hero_rigged is in
for path in unreal.EditorAssetLibrary.list_assets(folder, recursive=False):
    anim = unreal.EditorAssetLibrary.load_asset(path)
    if isinstance(anim, unreal.AnimSequence) and anim.get_name().endswith("_RM"):
        anim.set_editor_property("enable_root_motion", True)
        unreal.EditorAssetLibrary.save_loaded_asset(anim)
        unreal.log("Root motion on: " + anim.get_name())

然后,如果要在状态机里播放这些动画,就在 ABP_Hero 的 Class Defaults 里把 Root Motion Mode 设为 Root Motion from Everything;或者把它们作为蒙太奇播放。

与 UE5 Mannequin 互相重定向

骨骼按 Mannequin 的骨骼命名,所以 Unreal 的重定向器几乎不用手动调整就能对应上。两个方向都行:把第三人称模板的动画用到你的角色上,或者把 afk.ai 的动画用到 Manny 和 Quinn 身上。

在 Unreal 5.4 及以上版本中:

  1. 右键点击一个动画(比如模板里的某个动画),选 Retarget Animations(最新版本里叫 Retarget Animation Assets)。
  2. 把 Target Preview Mesh 设为 Hero_rigged。源就是这个动画原本配套的网格体。
  3. 保持 Auto Generate Retargeter 开启:Unreal 会自动生成 IK Rig 和 IK Retargeter。
  4. 勾选想要的动画,点 Export Animations,选一个文件夹,再点 Export。

把源和目标对调,就能把 Hero_rigged 的动画用到 Mannequin 上。在 5.1 到 5.3 版本中,要为每套骨骼各建一个 IK Rig,再在它们之间建一个 IK Retargeter,然后用重定向器的 Export Selected Animations。不管哪种方式,正式使用前都先把几个结果完整播一遍,尤其注意手部。

生物和道具

同样右键一下,就能绑定龙、马、恐龙、蜘蛛或鲨鱼:在选项窗口里选好身体类型就行。每种都有为它的身体打造的骨骼,以及为这套骨骼制作的动画,比如扇翅膀、奔跑、咆哮、游泳,所以开放世界游戏里的野生动物不用再找绑定师。道具选 Object 类型:弹跳、旋转、晃动和挤压拉伸,适合拾取物和门。动物教程列出了每种身体类型及其动画。

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

怎样算一次绑定

每次请求到达 AFK AI 的绑定,都会消耗本月的一次绑定次数,和在 afk.ai/rig 及其他 AFK AI 插件里一样。Stop waiting 只是让 Unreal 不再等待:绑定不会停,照样计次。绑定失败不计次数,提示信息会说明原因。AFK AI 菜单会显示剩余的绑定次数;用完后,See plans 会打开 afk.ai 的套餐。

出问题时怎么办

找不到 AFK AI 菜单
在 Edit > Plugins 里确认 AFK AI 和 Python Editor Script Plugin 都已启用,然后重启。如果是别的问题,Output Log 会显示“AFK AI couldn't start”以及原因。
提示“has no source file recorded”或“was imported from a .obj file”
AFK AI 需要原始的 .fbx、.glb 或 .gltf。把模型导出为其中一种,导入后再绑定。
提示“Couldn't find Hero's source file”
文件在导入后挪了位置。右键点击网格体,选 Reimport With New File,选文件现在的位置,再绑定一次。
提示“Unreal didn't import it as a skeletal mesh”
绑定成功了,FBX 保存在提示信息所说的位置。把它拖进 Content Browser,以 Skeletal Mesh 连同动画一起导入。Unreal 5.5 及以上版本的新导入器可能会出现这种情况。
提示“Couldn't make a secure connection to AFK AI”
代理、杀毒软件或公司防火墙挡住了连接。换个网络试试。
绑定失败
看一下提示信息。通常换一个身体类型,或者让模型站直、面朝前方,就能解决。

常见问题

Unreal Engine 5 自己能自动绑定角色吗?

静态网格体不行。Unreal 能在已有的骨骼之间重定向动画,也有手动搭建和编辑骨骼的工具,但没有能替你绑定网格体的功能。AFK AI 插件补上的正是这一步:把静态网格体变成带蒙皮权重和动画的骨骼网格体,之后就交给 Unreal。

需要 C++ 或 Visual Studio 吗?

不需要。插件是 Unreal 自己就能运行的 Python,不用编译,所以纯蓝图项目也能用。上面的 C++ 只是给本来就用 C++ 的项目准备的。

支持哪些 Unreal Engine 版本?

Unreal Engine 5.1 及以上版本,支持 Windows、Mac 和 Linux。

能绑定从 .obj 导入的模型吗?

不能直接绑定:插件上传的是网格体的原始源文件,只接受 .fbx、.glb 或 .gltf。在 3D 软件里把模型导出为其中一种,导入后再绑定。

能用 UE5 Mannequin 的动画吗?

能。骨骼按 Mannequin 的骨骼命名,所以重定向器几乎不用设置就能对应上,两个方向都行。参见上文的“与 UE5 Mannequin 互相重定向”。

绑定好的角色能用在要卖的游戏里吗?

能。骨骼和动画采用 CC0,模型仍归你所有。

想在别的软件里用,绑定好的文件在哪?

Hero_rigged.fbx 保存在原始源文件旁边,或项目的 Saved/AFK AI 文件夹里。Blender、Maya 和任何能读 FBX 的软件都能打开它,动画也都在。

Unity 或 Blender 也有插件吗?

有。参见 Unity 和 Blender 教程,AFK AI 插件总览介绍了全部 9 款软件。

绑定模型,让它动起来

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

绑定模型

更多教程