Skip to content

骨骼绑定

动作预览

在绑定骨骼之前,我们先来看看未绑定之前是什么样子的。

一、导入测试动作包

  1. 下载测试动作包。
    蓝奏云(c87w)

  2. 导入测试动作包到项目中。 测试动作包

提醒

包中文件对应动作

  • Idle:站姿
  • Lie down:躺姿
  • Run:跑步
  • TPose:T型姿态
  • Walk 1:走路姿态 1
  • Walk 2:走路姿态 2

二、添加 Gesture Manager

  1. 通过Unity顶部菜单栏,为场景添加Gesture ManagerGesture Manager

  2. Hierarchy中选中GestureManager,再从Inspector窗口中点击Enter Play-Mode按钮。

三、测试动作

  1. 你肯定已经发现了模型的一些问题,如人物缺失关节。不要着急,我们先学会测试动作,这对于后续的检查骨骼绑定大有帮助。

  2. 每一次运行后,会自动进入Game窗口,我们先回到Scene窗口以方便观察。

  3. 确保你在Hierarchy窗口中选中的对象为GestureManager

  4. 看向Inspector窗口的Gesture Manager组件,点击Tools按钮,展开Test Animation,将我们刚刚导入的动作任选其一(例如“Run”)拖入到Animation右侧的框中。

  5. 点击Play,人物开始播放相应的动画。 Test Animation

退出预览

测试动作时,你已直观的看见我们的衣物并没有跟随人物,所以接下来我们来学习骨骼绑定
每一次预览完毕后,我们可以通过Unity上方中间的播放按钮,来退出预览。 Exit Playmode

骨骼绑定

故名思意,我们需要将衣物的骨骼绑定到人物身上,他们才能同时动起来。
主流的骨骼绑定方式有两种,一种是基于对象"父子级"的绑定,圈内又称之为“古法绑定”,另一种是使用插件绑定。要想更加高效的改模减少出错率,两种方式我们都必须掌握

提醒

在继续绑定之前,你需要掌握对象的父子级

基于"父子级"的绑定

当你完成到这里时,我就默认你已经搞清楚了对象的父子级关系了。

思路梳理

骨骼绑定的操作就像我们在前面为史蒂夫装备钻石剑,只不过钻石剑只有一个,我们也只需要将它绑定至某一个关节下,它就可以随之运动,相当简单。
而在这里,实际上每一个骨骼就是一个单独的物体,或者说一把钻石剑。和我们此前装备钻石剑的区别在于,你无法直观的看见他,然后就是“钻石剑”的数量变多了。
每一个骨骼之间也是靠着父子级的关系驱动着,如跟随脖子脖子跟随又跟随着某个父级物体,层层递进。
于是在你的角色模型下有着一个叫做Armature的东西,这里面包含着角色所有的骨骼,当你将他们层层展开时,就能看见骨骼之间的父子关系。 人物骨骼 他们并不是凭空出现,而是模型作者们通过建模工具制作的。你可以尝试挪动角色的衣物,会发现无法挪动。那是因为作者们通过建模工具,已经将模型绑定在了这些骨骼的子级下,你只有挪动对应的骨骼,衣服才会“看起来”被挪动了。
因此总结下来就是,你能看见的衣物实际上是“骨骼”的子级,无法直接挪动。
当梳理完这些后,再展开我们自己将要添加的头发,或者衣物下的Armature衣物骨骼 不难发现,他们的结构都是相似的,因此绑定骨骼的操作,直白的说就是:将我们要添加的头发衣服的骨骼,放在角色相同名称骨骼子级下。

步骤

梳理完思路后,我们就可以来尝试绑定骨骼了。在开始绑定之前,记得我们讲的预制件吗?现在我们是无法直接挪动他们的,需要先将角色、头发和衣服的预制件解压缩

  1. 备份场景(从Project窗口找到场景文件,按Ctrl + D),留着一会学插件绑定骨骼。

  2. 解压缩Prefab(预制件),物体名称和图标全部变为白色。 人物骨骼

  3. 头发骨骼绑定

  • 展开头发下的Armature,可以看见名为Head的对象。

  • 依次展开角色的Armature - Hips - Spine - Chest - Neck,可以看见名为Head的对象。

  • 将我们头发下的Head对象挪动至角色的Head对象的子级下。 头发绑定

  • 这样我们的头发就绑定好了,你可以使用刚学会的操作,预览头发是否按照预期跟随角色运动。 头发绑定

  1. 衣服骨骼绑定
  • 由于衣服的骨骼很多,为了不漏绑,先将所有的骨骼收起。

  • 接下来就要开始“套娃”了,将我们的衣服Armature下的每一个骨骼(从Hips开始,包含Hips,不要动Armature),放在角色相同名称骨骼子级

  • 绑定前: 衣服绑定

  • 绑定后(图片大小有限,腿部绑定略): 衣服绑定

提醒

  • 从上往下看,每一个衣服中的骨骼,都需要挪到角色相同名称骨骼子级下,为方便观察我画了线,每一根线的头部是父尾部是子
  • 有一种特殊情况,有些衣服自带一些小零件如铃铛、蝴蝶结等,会多出一些角色中没有的骨骼,这时只需要把这些骨骼保留在原骨骼下即可,无需挪动,也就是仅挪动有相同名称的骨骼
  1. 此时再进入动画预览,我们的衣服就可以按照预期跟随角色运动了。 衣服绑定

  2. 当头发和衣物骨骼数量大,我们又需要修改头发或衣物时怎么办呢,这时候古法绑骨的不便之处就体现出来了,我们很难对已绑定的对象进行修改,因此后续我们都需要使用插件。

使用“插件”绑定

在学会手动绑定后,便可以使用插件绑定了,这里我们使用Modular Avatar进行衣物绑定,他的好处在于骨骼只有在预览时或发布后,才会被合并到人物中,极大方便了后期维护。

思路梳理

为了减少出错率,我们要选择合适的绑定方案。试着考虑一下插件是如何做到骨骼绑定的,他们之间一定有某种规律。通过前面的操作,不难发现,我们绑骨骼操作实际上就是重复两个步骤,即找骨骼 - 将骨骼放置到角色相同的骨骼下。所以Modular Avatar可以替你完成这个重复的操作,接下来我们就来学习如何使用。

步骤

  1. 进入备份的场景。

  2. 按住Ctrl可多选物体,同时选中头发衣服Armature,看向Inspector,点击Add Component,搜索MA,选择MA Merge Armature插件绑定

  3. 再分别选中和设置头发衣服Armature,将人物的Armature拖入到组件的合并目标中。一些模型作者喜欢为骨骼添加后缀,因此还需要点击一下根据合并目标调整骨骼名称按钮。 插件绑定插件绑定

  4. 进入预览,你大概率会发现一个问题:头发没有按照预期运动,而衣服正常。

提醒

还记得我们思路梳理中的结论吗?绑定骨骼就是重复两个步骤,而插件就是按照这套步骤,帮我们把骨骼一层层塞了进去。至于头发为什么没有按照预期运行,是因为我这里的头发骨骼下面只有一层Head,而衣服的骨骼结构,名称和角色的几乎一模一样,所以这里的头发骨骼不一致,导致了插件误判,没能帮你把骨骼塞到正确的位置。

  1. 解决方式为,选中头发Armature,将MA Merge Armature组件移除,然后选择Head骨骼,添加MA Bone Proxy组件,将角色的Head拖放到组件的目标框中。

提醒

为什么这里是将组件添加到Head上,而不是Armature上。顾名思义,MA Merge Armature一般是用在Armature上的,而MA Bone Proxy是用在Bone(骨骼)上的。

插件绑定插件绑定插件绑定

  1. 此时再进入动画预览,我们的衣服就可以按照预期跟随角色运动了。

总结

在前期,我们只会用到MA的两个组件,但注意每个组件指向的目标,弄反是频繁出错点。

提醒

  • MA Bone Proxy(骨骼代理):将带有此组件的对象放置在目标对象下,因此这个组件不止可以用于骨骼。只要是有移动需求的对象,都可以使用这个组件,只是名字叫“骨骼代理”而已。
  • MA Merge Armature(合并骨架):将带有此组件的对象的骨骼与目标的骨骼合并,但并不是100%成功,会受骨骼的结构和名称影响。

MA Merge Armature组件并不是万能的,为了避免插件误判的情况,就必须掌握古法绑骨的思路来使用MA Bone Proxy,甚至你可能一整套衣服都添加的MA Bone Proxy组件,而不是MA Merge Armature组件。

提醒

恭喜你已完成了骨骼绑定!
为了完成接下来的路,你需要先掌握形态键(BlendShapes)

Released under the CC License.