做游戏的时候,我们经常会遇到这样一种情况。
你在网上找到一个挺不错的人形角色模型。
可能是自己买的,也可能是免费素材,甚至是 AI 或其它工具生成的。
模型导进 Unreal Engine 以后,看起来也没什么问题:
材质有了,贴图有了,人物也挺好看。
然后你想做下一件事:让他跑起来。
如果是 Game Ready 的模型,那还好,你需要设置相关重定向参数进行重定向即可跑起来。
但如果不是,那这时候问题来了。
它只是一个 Static Mesh。人家没有给角色绑定骨架、绘制蒙皮权重。
没有 Skeleton,没有 Skin Weights,自然也没办法直接拿 UE5 的角色动画给它播放。
于是一个看起来已经「做好了」的人物模型,距离真正放进游戏里,实际上还差了一大步:
Rigging。

一个角色为什么不能直接播放动画?
如果之前没有接触过角色动画,你可能会觉得:
模型都已经是个人了,为什么不能直接给它播放一个跑步动画?
想弄明白这个问题,我们先从 3D 模型本身说起。
一个 3D 模型,本质上是由大量 顶点(Vertex) 以及连接这些顶点形成的三角形组成的。
我们看到的一个人物角色,不管看起来多么复杂,最终都可以理解成空间里一大堆顶点组成的网格。
那么角色为什么能够动起来?
其实从最底层来看非常简单:
因为这些顶点在不同时间的位置发生了变化。
比如角色抬起手臂。
第一帧时(你可以理解成一个时间点),手臂上的顶点可能在这里:

到了下一帧,这些顶点的位置发生变化:

连续很多帧播放以后,我们看到的就是:
手臂动起来了。
所以从最底层来看,角色动画实际上就是:
不断改变模型顶点的位置。
但是问题也马上来了。
一个角色可能有成千上万个顶点。

你不可能为了让角色抬一下手,在第一帧手动移动成百上千个顶点,然后第二帧再移动一遍,第三帧再继续移动……
这根本没法做。
所以我们需要一种更高层的控制方式。
于是就有了:
Skeleton,也就是骨架。
我们不再直接控制成千上万个顶点,而是在角色内部建立一套骨骼。
比如一条手臂,大概可以是:clavicle➡upperarm➡lowerarm➡hand

然后让模型的一部分顶点跟随这些骨骼移动。
这样一来,我们想让角色抬手的时候,就不需要自己去移动手臂上的每一个顶点。
只需要旋转 upperarm,upperarm 旋转,受 upperarm 影响的顶点跟着移动,接着手臂发生变形。
下一帧再让 Bone 的位置或者旋转发生变化,顶点就会重新计算出新的位置。
连续播放以后,角色自然就「动」起来了。
所以可以简单理解为:
没有骨架的时候,你控制的是成千上万个顶点。
有了骨架以后,你只需要控制几十根、上百根骨骼。
骨架实际上就是在大量顶点和动画之间增加了一层更方便控制的「控制器」。
但是这里又会出现一个新的问题:
一个顶点到底应该跟随哪根骨骼?
比如手肘附近的顶点。
它不能完全跟着 upperarm,也不能完全跟着 lowerarm。
否则一弯手肘,很容易直接折出非常生硬的形状。
所以一个顶点通常可以同时受到多根骨骼影响。
比如:
upperarm 70%lowerarm 30%另一个更靠近前臂的顶点可能是:
upperarm 10%lowerarm 90%这个「某根骨骼到底对一个顶点产生多大影响」的数值,就是:
Skin Weight,也就是蒙皮权重。

当骨骼发生旋转时,引擎会根据这些权重计算顶点最终应该移动到哪里。
所以我们现在可以把整个关系串起来了:

这也是为什么一个普通的 Static Mesh 不能直接播放人物骨骼动画。
因为它只有:
Mesh 和 Vertex
却还没有建立:
Skeleton 与 Vertex 之间的关系。
所以要把一个 Static Mesh 真正变成能够播放角色动画的 Skeletal Mesh,至少需要解决两个核心问题:
第一,骨骼应该放在哪里?
以及:
第二,模型上的每一个顶点应该受到哪些骨骼影响,又分别影响多少?
前一个问题是骨架拟合与绑定。
后一个问题就是蒙皮和权重绘制。
而这两个问题,也正是 EasyAutoRig 主要想帮我自动完成的事情。
那自己绑定不就行了吗?
当然可以。
Blender、Maya 都可以完成角色绑定,市面上也有很多成熟的自动 Rig 软件和插件,而且其中不少其实都非常好用。
甚至你想生成一套 UE5 风格的标准骨架,很多工具也能够做到。

所以 EasyAutoRig 并不是因为「外面没有工具」才做的。
真正的问题是:
对于我来说,那一整套流程还是太麻烦了。
如果你本身就是专业绑定师,或者平时经常在 Blender、Maya 和 Unreal Engine 之间来回工作,那这些流程可能已经非常熟练。
创建骨架、调整 Joint、Bind Skin、处理 Twist Bone、导出 FBX、导入 UE、检查 Skeleton、处理 Retargeting……
这些对专业的人来说可能就是日常工作。
但我不是专业绑定师。
我主要想做的是 Unreal Engine、Gameplay、角色系统、动画系统这些东西。
我真正需要的其实非常简单:
我现在有一个人物模型,能不能赶紧把它变成一个 UE5 里的 Skeletal Mesh,让它先把商城里的动画跑起来?
而不是角色还没进游戏,我先去补一整套 DCC Rigging 知识。(虽然我确实补过这些知识,但是我相信还有很多人没有,我觉得也不需要走我走的弯路。)
这就是我觉得麻烦的地方。
软件本身不是问题,学习成本才是
比如我当然可以去学 Blender 绑定。
骨骼怎么创建,权重怎么刷,FBX 应该怎么导出,哪些选项需要勾,Bone Axis 怎么处理,导进 Unreal Engine 以后为什么方向不对……
这些知识网上都有。
问题是:
学这些东西本身就需要时间。
而且对于我来说,它又不是每天都会使用的东西。
可能这次为了一个角色研究几天,好不容易搞懂了。
几个月以后又需要绑定另一个角色:
“等等……上次 FBX 这里到底怎么设置来着?”
然后又得重新查。
这其实就是一个很现实的时间成本。
如果你天天做绑定,这个成本非常值得。
但我不是,不过我又经常需要让不同的角色跑起来。我又懒得学。
而且从 DCC 到 Unreal Engine,中间还有一堆事情
即使你已经在 Blender 或 Maya 里把角色绑定好了,事情也不一定结束。
接下来还要导入 Unreal Engine。
然后你可能会遇到:
• Skeleton 层级 • Bone Naming • Bone Orientation • FBX Import Settings • Root Bone • Scale • Transform • Twist Bone • IK Bone • Retargeting
等等问题。
这些事情专业的人当然都能处理。
但如果你不熟悉,就很容易出现一种情况:
每一个单独的问题看起来都不难,但全部加起来就是一整套知识。
你真正想做的只是:
“让我这个角色跑一下。”
结果最后发现,你已经开始研究 FBX、Bone Axis、IK Rig、IK Retargeter 了。
我为什么特别想要 UE5 标准骨架?
因为如果最后生成的是一套 UE5 标准风格的人形骨架,后面的事情会简单很多。
Unreal Engine 商城里大量角色动画,本身就是围绕 UE5 标准人形骨架和 Manny / Quinn 这套生态制作的。
如果自己的角色骨架结构、命名、Twist、IK 这些东西和 UE5 的标准约定比较接近,那么后面的动画重定向会友好很多。
当然,这里不是说:
不是 UE5 标准骨架,就不能重定向。
当然可以。
Unreal Engine 的 IK Rig 和 IK Retargeter 本来就是用来解决不同 Skeleton 之间动画重定向的。
但是「能做」和「操作起来省不省事」是两回事。
如果你不熟悉这套系统,就会发现这里面又有很多东西需要学:
• IK Rig 怎么创建 • Retarget Chain 怎么设置 • Root 怎么定义 • Chain Mapping 怎么对应 • Retarget Pose 怎么调整 • 为什么手的位置不对 • 为什么腿在滑 • 为什么肩膀变形奇怪 • 为什么两个 Skeleton 比例不一样以后动画表现不对
这些知识都不是看两分钟就能完全搞懂的。
尤其如果你只是想快速做一个 Prototype,你可能根本不想在这里花这么多时间。
所以我想要 UE5 标准风格 Skeleton 的目的,其实非常朴素:
尽量把后面的动画工作变简单。
骨架标准一点,商城动画更容易用,Retarget 更容易处理,后续做 Animation Blueprint、IK Rig、Control Rig 也更顺手。
最终目的还是那句话:
让我这个角色赶紧跑起来。
还有 Physics Asset
就算前面的 Skeleton 和 Skin Weight 都解决了,还有一个经常被忽略的问题:
Physics Asset。
角色要做 Ragdoll、碰撞或者一些物理效果,就需要 Physics Asset。
当然 Unreal Engine 自己也可以自动生成。但是你知道的,默认生成的就是一坨,基本就是从零开始。
于是你又要开始处理:
• Capsule 放在哪里 • Body 多大 • Pelvis 怎么包 • Spine 怎么分 • Thigh / Calf 怎么设置 • Constraint 怎么连 • Joint Limit 怎么限制
又是一套东西。
所以从我的角度来看,一个 Static Mesh 真正变成「可以直接丢进游戏里开始测试」的角色,中间其实不是只有一个 Rig。
而是:
Static Mesh ↓Skeleton ↓Skin Weights ↓UE5 Skeleton Compatibility ↓Animation Retargeting ↓Physics Asset ↓终于可以开始测试角色而我真正想做的,恰恰不是研究这一整条工具链。
我只是希望:
前面这些重复工作能不能尽量帮我做掉,然后让我早点回到 Gameplay。
所以后来我就在想:
既然我最终本来就是要在 Unreal Engine 里使用这个角色,而且目标也是 UE5 风格的人形骨架,那为什么不能直接在 UE 里面把这件事情完成?
我给它一个 Static Mesh。
我告诉它人体关键位置在哪里。
剩下的 Skeleton、Twist、IK、初始权重、Physics Asset,都尽可能按照 UE5 的使用方式生成。
然后我直接开始测试动画。
这就是后来我开始做 EasyAutoRig 的原因。

EasyAutoRig 是怎么工作的?
我最后并没有把 EasyAutoRig 做成:
丢一个模型进去 → 点一下按钮 → 完事。
那这是为什么呢?
对,你猜对了。
因为我做不出来。
如果真能做到随便丢进来一个角色,不管它穿什么衣服、什么体型、什么拓扑,点一下按钮就能得到一套完美骨架和完美权重,那估计专业绑定师都要开始担心工作了。
目前我能想到最接近「丢一个模型进去就不用管」的方案,就是:
把模型丢给一个专业绑定师。
我把模型发过去,过几天他再把绑好的角色发回来。
这大概才是真正的一键绑定。
所以 EasyAutoRig 没有做成这种「全自动魔法按钮」,原因很简单:目前我做不到,而且人形角色本身的差异也远比看起来大。
做着做着你就会发现:
有的人肩膀很宽,有的人很窄;
有的是正常人体比例,有的是二次元大头短身;
有的人穿紧身衣,有的人穿宽大的裙子;
有的角色身体就是一个完整 Mesh,有的头发、鞋子、衣服、身体全都是分开的;
还有的角色甚至带着尾巴、披风、护甲和各种饰品。
表面上看,它们都是「人形角色」。
但是从算法角度看,它们的几何结构可能完全不是一回事。
更关键的是,插件一开始面对的只是一堆顶点和三角形。
它并不知道:
这里是肩膀。
也不知道:
这里是手肘。
更不知道:
这个位置才是真正的膝关节,而旁边那一大块其实只是裙子或者护甲。
如果连「这个角色的膝盖到底在哪里」都判断不可靠,那么后面的骨架生成和自动蒙皮自然也很难稳定。
所以最后,我采用了一套 Landmark 工作流。
简单来说,就是先让你告诉 EasyAutoRig 一些最关键的人体位置:
Pelvis 在哪里Spine 在哪里Shoulder 在哪里Elbow 在哪里Wrist 在哪里Hip 在哪里Knee 在哪里Ankle 在哪里……
你不需要自己去创建完整骨架,也不需要一根一根设置所有 Bone。
只需要告诉插件:
这个角色的人体结构大概在哪里。
剩下大量重复的工作,再交给 EasyAutoRig。
所以我现在觉得,这是一种比较合理的人机分工:
你负责做少量只有人比较擅长判断的事情,插件负责完成大量重复、机械的工作。
EasyAutoRig 不需要凭空去「猜这个人长什么样」。
你先通过 Landmark 提供少量可靠的人体语义信息,然后插件再根据这些 Landmark:
拟合完整骨架 → 建立 UE5 风格 Bone 结构 → 生成初始 Skin Weights → 继续完成后面的绑定流程。
这样既不需要你从零开始手工绑定,也不需要假装插件能够理解世界上所有奇奇怪怪的人形模型。
实际操作并不复杂
整个流程现在基本就是:

比如当前需要放置 pelvis,插件就会提示 pelvis。
你点击对应位置。
然后继续:
spine_01spine_02...clavicleupperarmlowerarmhand...thighcalffoot左右基本对称的角色还可以开启 Live Mirror,所以大部分情况下只需要认真处理一边。
Landmark 放完以后,可以直接看到拟合后的 Skeleton Preview。
如果发现 Knee 太靠前、Shoulder 太靠后,可以继续调整。
点击 Rig 以后,它到底帮你做了什么?
现在 EasyAutoRig 会自动处理不少东西。
包括:
• UE5 风格的人形 Skeleton • Skeletal Mesh • Twist Bones • IK Bones • Helper Bones • 初始 Skin Weights • 可选 Physics Asset
也就是说,以前你拿到一个 Static Mesh 后,还要经过一大堆步骤才能开始播放动画。
现在我的目标是尽量把它缩短成:放 Landmark → 检查 → Rig。
然后角色先进入游戏。
不过自动蒙皮这件事,比我最开始想象的复杂得多
EasyAutoRig 真正开发时间比较长的地方,其实不是生成骨骼。
而是:
自动权重。
最开始我也觉得,人形不就是头、身体、两只手、两条腿吗?
骨骼位置知道了,根据距离算权重不就可以了吗?
实际做以后才发现完全不是这么简单。
举几个很典型的问题。
一个角色穿着裙子以后,插件看到的并不是:
大腿膝盖小腿而可能是:
身体+裙子+腿+鞋子几个互相分离的几何组件。
再比如手臂。
如果只是按照离 Bone 最近来算,肩膀、胸部、上臂之间很容易互相污染。
又比如膝盖。
权重并不是简单地:
上面 = thigh下面 = calf真正弯腿的时候还需要关节附近有合理的过渡。
所以后来整个自动权重部分,我不断加人体语义、关节区域、表面拓扑、左右约束、Twist 分配这些逻辑。
有时候一个模型测试没问题,换一个穿着特殊衣服的模型,就会暴露新的情况。然后继续修。
这也是为什么现在 EasyAutoRig 并不是所有模型都强行走同一套算法。
SemanticFull 和 GeodesicCompatibility 是什么?
你使用插件时,会看到 SemanticFull - 高级语义蒙皮,可以简单理解为:EasyAutoRig 对当前模型获得了足够的人体结构信息,因此可以使用完整的人体语义蒙皮流程。

它会尝试区分:
HeadNeckTorsoShoulderUpper ArmElbowForearmWristHandHipThighKneeCalfFoot...然后每个区域使用不同的权重逻辑。
但是有些模型实在很复杂。
例如大裙子、大披风、大量分离组件,或者关节附近的表面结构不够明确。

如果插件认为当前模型不适合完整 SemanticFull,就可能显示:

这并不是绑定失败。
它的意思只是:
当前模型使用 UE 的 Geodesic Voxel 兼容蒙皮会更合适。
只要 Validate Rig 显示可以继续,就可以继续绑定。
Landmark 不是随便差不多放一下
这个也是我自己测试很多模型以后越来越重视的一件事情。
假如你的角色:
• 人体结构正常 • 拓扑看起来也正常 • 没有夸张的衣服 • A Pose / T Pose 也没问题
但是 Validate Rig 却告诉你无法使用高级语义蒙皮:

这时候不要第一时间觉得:
“这个模型插件识别不了。”
可以先回头看看 Landmark。
因为 SemanticFull 判断的不只是网格拓扑。
Landmark 本身也是插件理解这个人体的重要证据。
比如:
你的 Knee Landmark 虽然「看起来在膝盖附近」,
但实际偏上很多;
或者 Hip → Knee → Ankle 之间的距离已经不符合这个角色真正的身体比例;
那么插件后面判断腿部区域的时候,就可能发现:
根据你告诉我的人体结构,和我实际看到的 Mesh 表面,对不上。
于是 SemanticFull 就可能不可用。
所以如果你的模型本身没什么特殊结构,但是进入了 GeodesicCompatibility,我建议优先再检查一遍:
• Shoulder • Elbow • Wrist • Hip • Knee • Ankle • pelvis / spine / neck 中轴
特别是位置以及相邻 Landmark 之间的距离是否合理。
重新调整以后,再 Validate 一次。
有时候路线就会发生变化。
那 EasyAutoRig 能不能做到一键完美自动蒙皮?
这个我觉得需要直接说清楚:做不到。
而且我也没打算把它宣传成:一个模型扔进去,一键得到绑定师级别、完全不需要修改的最终权重。
因为这其实是不现实的。
不同模型的:
• 拓扑 • 身材 • 衣服 • 头发 • 裙子 • 饰品 • 分离组件
差异实在太大。
EasyAutoRig 更准确的定位是:
先把角色从 0 做到 1。
把 Skeleton 搭好。
把 Twist / IK Bone 建好。
先给你一套可用的初始权重。
Physics Asset 也先生成。
然后:赶紧让这个角色在游戏里跑起来。
等你真的播放 Walk、Run、Attack、Jump 以后,你才知道哪些地方真的有问题。
如果 Shoulder 已经可以,那就别碰。
如果 Knee 没问题,那也不用重新刷。
只有 Elbow 某一圈不好:
那就只修 Elbow。
我认为这才是这个工具真正能够节省时间的地方。
为什么我最后会把「验证绑定」单独做出来?
还有一个我开发过程中慢慢改变的地方,就是:
我不希望插件只有一个:
Rig
然后点完以后成功就是成功,失败就是给你打印几十行日志。
这对真正使用工具的人来说很难受。
所以现在正式 Rig 前,可以先:
Validate Rig。
插件会提前分析:
• 当前模型能不能继续 • Landmark / Skeleton 有没有明显问题 • SemanticFull 是否可用 • 是否应该改用 GeodesicCompatibility • 有没有比例风险 • 哪些地方绑定以后值得检查
这也是我开发这个插件过程中越来越在意的一点:
工具不能只有算法正确,还得让使用的人知道它现在到底在干什么。
如果自动蒙皮真的不适合呢?
那还有:Skeleton Only / 仅绑定骨骼。
这也是我特意保留的一条路线。
因为即使自动权重不适合这个模型,插件前面已经帮你完成的:
• Skeleton • Bone Naming • Hierarchy • Twist • IK • Helper Bone
依然是有价值的。
你完全可以:EasyAutoRig 生成骨架 → 自己在 UE / Blender / Maya 继续刷权重。
并不是一定要:自动权重不行 = 前面所有工作全部白做。
谁比较适合 EasyAutoRig?
如果你本身就是专业绑定师,而且每个正式角色都会在 Maya / Blender 里完成完整的 Production Rig,那么 EasyAutoRig 未必是你主要的工作方式。
但是如果你和我一样,主要精力放在:
• Unreal Engine • Gameplay • 独立游戏开发 • 动画测试 • 原型开发
或者你经常从网上购买、下载各种人物模型,只是想:
先让这个角色赶紧能在 UE 里跑起来。
那我觉得这就是 EasyAutoRig 最适合的使用场景。
尤其是做游戏 Prototype 的时候。
以前可能你找到一个挺喜欢的人物模型,但因为没有骨架:算了,晚点再弄。然后可能就没有然后了。
我想做的就是尽量把这个门槛压低一点。
目前 EasyAutoRig 正在 Fab 上审核
写到这里,其实这篇文章也算是我这段时间开发 EasyAutoRig 的一个阶段性总结。
之前我在公众号里写了很多 Unreal Engine 相关的知识。这些东西我之后还是会继续写。
因为我自己一直觉得:
当一件事情能够真正讲给别人听的时候,自己才算进一步把它弄明白。
但除了把知识讲明白,我现在也想继续往前走一步:
把自己研究出来的东西真正做成可以使用的工具、系统和产品。
EasyAutoRig 就是其中一个。它不是一个任何模型一键完美绑定的魔法按钮。
但如果它能够帮你把原本几个小时甚至更久的重复工作往前推一大截,让一个 Static Mesh 更快变成可以进入游戏测试的 Skeletal Mesh,那它就已经完成了我做它最初想解决的事情。
如果你正好有这种需求,可以去 Fab 看一下 EasyAutoRig。目前正在审核,这一两天通过。也可以在我的 B 站看一下,已上架小店。点击阅读原文可直接跳转。
使用之前也建议先看看完整教程和 FAQ,里面把支持范围、Landmark、SemanticFull、GeodesicCompatibility 以及自动蒙皮的边界都写得比较清楚。
如果你暂时没有购买需求也没关系。
如果你也在做 Unreal Engine 游戏,或者对这些开发过程感兴趣,可以继续关注。
夜雨聆风