
做角色绑定的都懂一个道理模型做得再漂亮骨架立歪了后面全是窟窿。我见过太多项目在动画阶段返工追根溯源不是动画师手重而是当初那套 BIP 骨骼搭建的时候就埋了雷——盆骨高度按感觉给、膝盖方向反了、蒙皮权重靠一键封套凑合。等到动画师做出第一个下蹲模型两个臀瓣直接穿在一起这时候再回头改前面所有的动画K帧全部作废。BIP 骨骼搭建这件事看起来就是在视图里拖几根骨头、调调比例实际上它是整条角色链路里返工成本最高、又最容易被压缩工期的一环。写这篇是想把我在几个项目里趟出来的顺序、判断标准和那些只有做过才知道的细节摊开讲一遍从模型体检、骨架对位、蒙皮权重到导出验收每一步都说清楚“为什么这么做”也把踩过的坑一并交代。适合刚接触角色绑定的新手照着抄也适合做了几年但总觉得骨架“差点意思”的人对一下思路。1. Biped在整条角色制作链路里到底承担了什么1.1 它不是一个骨架模型而是一台带解算和动画工具的机器很多人对 Biped 的第一印象是“一套现成的两足骨骼”这个理解会直接导致后面一系列的误操作。它本质上是 3ds Max 里一个独立的系统对象创建出来之后自带 IK 解算、自带脚部落地控制、自带关键帧模式与脚步模式两套动画逻辑、自带一个叫体形模式Figure Mode的专用编辑环境。换句话说你搭的不是一堆骨骼的集合而是一台已经装好传动系统的机器你只负责把它的尺寸调到和模型匹配。这个认知差异带来的实际影响非常具体。普通骨骼你随时可以改长度、改父子关系、加辅助骨自由度极高但什么都要自己搭Biped 的比例只能在体形模式下改改完退出体形模式骨架就锁死了。很多新手在动画阶段发现膝盖位置不对直接在非体形模式下拖骨骼结果整个骨架被拉扯变形模型瞬间炸开——这是因为你拖的不是骨骼长度而是动画姿势。我通常会在开始前就把这条讲给接手的人体形模式是唯一允许改骨架尺寸的地方退出之前把所有比例确认完。还有一层是解算。Biped 的腿和手臂默认用 IK 控制脚踝和手腕上挂着 IK 目标中间的膝关节、肘关节是被动算出来的。这意味着肘膝的朝向不是由你的手动摆放决定的而是由“屈曲方向”这个隐藏参数决定的。这也是为什么后面第 3 节要专门讲预弯角度——它决定了 IK 会不会在动画中途突然翻面。1.2 什么活该用Biped什么活最好别硬碰Biped 的强项很明确标准两足人形、需要快速产出走路跑步这类循环动画、需要脚步模式做脚部锁地的项目。它的脚步模式在做走跑循环时效率极高脚掌落地可以自动吸附滑步问题在搭建正确的前提下基本不会出现。如果你的项目是批量的人形 NPC、需要大量复用动画Biped 加 .fig 模板的组合能把搭建时间从一个角色两小时压到二十分钟。但有几类活我不建议硬上。第一类是四足或者非人形角色Biped 虽然有尾巴骨骼本质还是为两足设计的做四足会很别扭不如老老实实用普通骨骼或者别的系统。第二类是需要极端拉伸变形的卡通角色Biped 默认的骨骼是刚性段虽然可以开拉伸参数但形变质量和可预期性不如纯骨骼加自定义控制器。第三类是要求骨骼层级极度精简的移动端项目Biped 默认会生成一堆辅助骨和虚拟体需要手动清理有时候自己搭反而更干净。我一般会给一个粗略的判断角色是不是标准人形、项目有没有大量循环动画需求、团队里有没有人熟悉这套系统三个都满足就用 Biped缺两个以上就考虑别的方案。这个问题想清楚比后面调十个小时权重都值。1.3 单位、朝向和场景尺度这三样东西错了后面全白干这是最枯燥但最不能省的一步。场景单位不统一会导致骨架尺寸和模型尺寸对不上蒙皮时封套范围算不准模型朝向不统一会导致骨架和模型轴向错开导出到引擎里角色是躺着的或者侧着的。我的固定做法是建场景之前先把系统单位和显示单位统一成同一个值游戏项目一般按 1 单位 1 厘米来因为大部分引擎导入时按厘米解析不改的话角色会变成几十米高的巨物。然后把模型导入或者合并进来检查它的世界坐标是否在原点附近、Z 轴是否朝上、正面是否朝向统一的方向。正面朝向这一点尤其容易被忽略因为不同来源的模型朝向习惯不一样混着用就会出问题。我习惯把所有角色统一成正面对着同一个轴向这样后面 Biped 建出来不用每次单独旋转。提示合并模型进来之后务必要单独看一眼它的缩放值是不是 100,100,100。外面拿来的模型经常带着 0.01 或者 2.54 这类缩放看着正常实际坐标是错的蒙皮第一步就会出问题。2. 建骨之前必须给模型做一次体检2.1 变换归零与被忽略的轴心问题模型拿到手第一件事不是建骨骼是把它的变换清理干净。选中模型把位移归零、旋转归零、缩放归一到 1如果模型自带旋转或者缩放用重置变换工具把变换烘焙进顶点数据里。这一步做完模型的轴心应该落在原点附近模型本身应该是干净的、没有残留变换的状态。为什么非要这么干因为蒙皮修改器绑定的是世界坐标和骨骼矩阵之间的相对关系。如果模型自带一个 0.01 的缩放你看到的模型是正常大小但它的实际顶点坐标是真实尺寸的一百倍。这时候你在视图里对的骨骼比例是按照“看到的大小”对的蒙皮计算却按实际坐标走结果就是封套完全包不住模型或者包住了但一动就炸。这类问题排查起来特别费劲因为视图里看起来一切都是对的。轴心位置也有讲究。有些模型的轴心被挪到了脚底有些在头顶有些干脆在很远的地方。轴心本身不影响蒙皮但会影响你后续对齐时的吸附和测量。我习惯把轴心统一放到世界原点、也就是两脚中间的地面位置这样 Biped 创建出来的时候根节点自然就对齐了省掉一次手动位移。2.2 用三条基准线在正视图和侧视图上定关节关节位置凭感觉拖是新手最常见的错误来源。我的做法是先在正视图里画三条水平参考线肩线、胯线、膝线然后在侧视图里再画三条垂直参考线耳垂线、肩峰线、脚踝线。这六条线的交点基本就把人形的主要关节框住了。具体怎么定。肩线取两侧肩峰连线的水平位置注意不是锁骨是肩峰那个骨点胯线取大转子位置大概在股骨顶端很多人会把它画得太高导致 Biped 的腿部骨骼第一段过短走路时胯部形变很怪膝线取膝盖骨中心稍微偏上一点的位置。侧视图里耳垂垂线穿过肩关节中心这是判断头颈位置的标准肩峰垂线穿过肘关节后方这是判断手臂前后位置的标准脚踝垂线从脚踝骨中心垂直向下用来确定脚掌骨骼的落点。这套方法的原理是人形角色的关节位置有比较稳定的解剖学比例关系用参考线去逼近这些关系比肉眼估计稳定得多。如果角色有原画或者三视图直接拿三视图当背景层对位比画参考线更准。没有三视图的话至少要在侧视图上确认一件事——脊柱不是一条直线它有颈曲和腰曲Biped 的脊椎段如果完全拉直做弯腰动作时会非常僵硬。2.3 模型本身有缺陷时先修模型还是先迁就骨骼这个问题几乎每个项目都会遇到。模型的手臂和躯干是连在一起的、腋下没有分离、膝盖处网格太稀疏、脚趾糊成一坨。这时候你有两个选择改模型或者改骨架去适应。我的判断标准是看缺陷会不会直接导致形变失败。腋下没有分离、上臂和躯干完全粘连的模型手臂抬到 90 度必然撕裂这种情况必须回去改模型把腋下切出分离。膝盖处环线太少的下蹲会变成一个折角也是必须加环线。但如果只是脚趾糊成一坨那就在骨骼搭建阶段做取舍干脆不做脚趾骨骼用一整块脚掌骨代替动画上损失一点点细节但省下大量权重调试时间。有些缺陷是可以在蒙皮阶段补救的比如关节处环线不够但又不方便改模型的可以用权重笔刷做平滑过渡代价是形变会有点肉。这个取舍我一般会先跟动画那边沟通问他们这个角色会不会做大幅度动作如果只是站着说话的那种形变差一点没人看得出来。提示别在模型没定稿的时候就开始搭骨架。我在一个项目里干过这事模型改了三次头身比我的骨架跟着重建了三次第三次直接心态崩了。3. 一步一步把能用的Biped骨架立起来3.1 创建参数里几个不能默认的选择创建 Biped 的时候会弹出一堆参数大部分可以后面改但有几个会影响后面所有操作值得当场就定下来。第一个是根节点高度。这个值决定了整个骨架的整体尺寸建议直接按模型的身高填。如果模型是 175 厘米就填 175。填完之后骨架会自动生成但比例是系统默认的还得进体形模式细调。第二个是结构数量。脊椎段数我一般给 3 到 5 段3 段够用但弯腰动作会比较硬5 段形变柔和但权重管理麻烦4 段是比较平衡的选择。颈部 2 段足够。腿部 3 段是标准配置加第 4 段是在脚掌和脚趾之间多一节只有需要做脚掌弯曲的角色才用一般不用。手指数量按模型来五指就 5每指 3 节。脚趾 1 节。第三个是三角盆骨选项。这个选项会在盆骨和腿之间加两根斜向的辅助骨作用是改善胯部形变让大腿抬起时胯部过渡更自然。但它加的骨骼在导出到引擎时经常被忽略或者引起命名冲突游戏项目我建议直接关掉纯影视渲染的项目可以打开形变确实好一点。这三个参数定完骨架就出来了。这时候它大概是个人形但比例很粗糙头可能偏大、手臂可能偏长接下来进体形模式调。3.2 对齐顺序从盆骨往上再从肩往下对齐顺序错了会导致反复返工因为每一段骨骼的位置都依赖上一段。我的固定顺序是盆骨 → 脊椎 → 颈部 → 头 → 肩 → 上臂 → 前臂 → 手 → 大腿 → 小腿 → 脚掌 → 脚趾。先说为什么从盆骨开始。Biped 的腿是从盆骨节点长出来的盆骨的高度和前后位置直接决定了大腿骨第一段的朝向和长度。如果先对腿对到一半发现盆骨位置不对腿全部要重来。所以第一步先把盆骨节点对到胯线那个位置前后位置在侧视图上对到大转子稍微偏后一点。盆骨定了脊椎往上对。脊椎每一段对应实际脊柱的一节对的时候要注意腰曲和颈曲不是垂直往上堆。头骨对到耳垂线穿过的位置中心大概在耳垂稍微偏上后方。颈部和头之间的关节位置要稍微往前因为人的颈椎是前凸的。上半身对完然后从肩往下对。肩关节的位置在正视图上对应肩峰侧视图上对应肩峰垂线和肘关节后方。上臂对到肘关节前臂对到手腕手掌对到指根。最后对腿。大腿从盆骨到膝线小腿从膝线到脚踝线脚掌从脚踝到脚掌前端三分之一处脚趾再往前。这个顺序的逻辑是从躯干中心向外扩散每往外一层依赖的父级都已经定好了不会出现改父级要重做子级的情况。我见过有人从手指开始对对完发现肩位置不对全部推倒重来。3.3 预弯角度和关节朝向决定IK听不听话这是整个搭建过程里最容易被忽略、但后果最严重的一步。人形的肘关节和膝关节是单向弯曲的手臂只能往内弯腿只能往后弯。Biped 的 IK 解算需要知道这个弯曲方向否则在动画过程中会出现关节突然反折——手臂从不可思议的角度翻过去膝盖往前顶。这个信息靠什么传递靠你摆出来的初始姿势里那个弯曲方向。所以体形模式下肘关节和膝关节必须预先弯出一个小角度注意是弯不是直着对。膝关节向后弯大概 5 到 10 度肘关节向内弯大概 10 到 15 度。角度不用大但这个弯曲必须存在它告诉 IK 解算“往这边弯”。膝盖的绕向还有一层讲究。膝盖骨是朝前的大腿和小腿不是完全在一条弧线上膝盖有一个轻微的外翻角度。搭建的时候膝盖的位置要在脚踝和胯部连线的正前方一点点这个“一点点”就是膝盖的朝向。如果膝盖位置偏内腿部骨骼会朝内旋动画时小腿会往内别偏外则小腿外撇。左右腿的膝盖朝向要对称。同理手肘的位置要在肩和手腕连线的后方一点点这个是肘部朝向。肘部偏内会让小臂内旋。这两个细节对着正面和侧面两个视图各检查一遍能省掉后面大量返工的 IK 调试。提示预弯做完之后先不要急着退出体形模式。摆一个手臂上举 90 度、膝盖弯曲 90 度的姿势看一眼如果关节翻转或者模型扭麻花说明朝向不对这时候改还来得及。3.4 手指、脚趾和尾巴的取舍手指骨骼是搭建工作量的黑洞。五指三节就是 15 根骨骼加上手掌和腕部一只手 17 根两只手 34 根权重要一根一根调。所以第一步是先问清楚这个角色需要单独活动手指吗答案通常是不需要。标准游戏角色大部分时间手指是并拢或者固定的握姿个别需要做手势的才单独调。我的做法是五指骨骼全部建出来但手指的权重不精细调只用简单的整体权重靠动画阶段的姿势控制。这样保留了灵活性又不用在手指权重上花几个小时。只有明确要做精细手势的角色才值得逐指调权重。脚趾的情况类似但更简单。大部分角色的脚趾不需要单独活动只有做赤脚角色或者需要脚趾抓地效果的才建。穿鞋的角色直接一整块脚掌骨就行建出来反而增加权重麻烦。尾巴骨骼是 Biped 自带的有两组可以分配。人形角色一般用不上除非做兽人或者带尾巴的角色。这个分配在创建的时候就要确定后面改起来要重新创建骨架。3.5 存成.fig让下一个角色少干半小时这套东西调完之后一定要存成 .fig 文件。.fig 保存的是完整的骨架比例和结构配置加载之后直接把骨架套到同规格的模型上微调一下位置就能用。做批量角色的时候这个做法能省掉大量重复劳动。一个标准体型的骨架存一个瘦体型存一个胖体型存一个遇到新角色先加载最接近的模板然后进体形模式微调。我的经验是第一个角色可能花两小时后面同类型的角色每个只要二十分钟。.fig 文件还有一个用途是做对称检查。左右不对称的骨架存一份镜像对比能立刻看出哪边有问题。4. 蒙皮让骨架真正驱动模型4.1 Skin还是Physique先把选择说清楚3ds Max 里给 Biped 蒙皮有两条路Skin 修改器和 Physique 修改器。Physique 是老牌的蒙皮工具它的思路是基于封套Envelope给每根骨骼画一个影响范围顶点落在这个范围内就被影响然后计算权重。优点是上手快封套调一调基本就能动起来而且它和 Biped 是同源设计配合度高。缺点是形变质量上限一般精细调整的手段少而且它的中间数据格式在导出时不太友好。Skin 修改器是基于顶点权重的思路是让每个顶点显式地关联到若干根骨骼每根骨骼的权重值单独调。优点是控制精细配合权重笔刷可以做非常平滑的过渡导出兼容性也好。缺点是初期要手动给每根骨骼指定影响范围比封套慢。我的结论是游戏项目一律用 Skin影视项目可以用 Physique 快速起量再考虑转换。这个选择的核心理由是导出。很多引擎在处理 Physique 数据的时候会先做一次转换转换过程中容易丢信息尤其是蒙皮权重超过四个骨骼影响的顶点容易被强制精简导致形变突变。Skin 的权重数据导出路径短得多出问题的概率低。4.2 修改器堆栈顺序一个被严重低估的坑蒙皮前模型上可能已经有别的修改器了比如涡轮平滑、倒角、弯曲什么的。这些修改器放在 Skin 前面还是后面结果完全不同而且是那种“看起来能跑但结果不对”的区别。原则很简单Skin 必须放在会产生形变的修改器之后、但放在平滑类修改器之前。具体展开如果你要先给模型做一次细分再蒙皮那细分修改器在 Skin 上面如果你要在蒙皮之后加平滑平滑在 Skin 下面。这样顶点权重是作用在细分后的顶点上的平滑只负责让结果更柔和。如果顺序反了比如 Skin 放在细分的上面权重作用在低模顶点上细分之后新产生的顶点会自动继承附近的权重看起来能动但关节处的过渡会变得不均匀平白多出一堆形变问题而且你根本查不出来问题在哪。还有一个常见的堆栈问题模型自带一个封套或者变形修改器没有塌陷就直接加 Skin两个修改器的效果叠加变得很怪。这种我一般建议把模型的基础变换和必要修改器塌掉从干净状态开始蒙皮。4.3 权重分配的操作节奏Skin 加进去之后第一步是把所有骨骼加进骨骼列表然后开始分配权重。别一上来就点“封套计算”那个结果只能当初始值。我的节奏是先粗后细先躯干后四肢先整体后局部。先给一个大的初始权重让模型能动起来设一个大概的封套范围点计算。然后从躯干开始调重点调盆骨、脊椎、肩胛这三个形变最复杂的地方。躯干调完再调四肢四肢里先调大腿和上臂这种大块最后调手腕手指脚趾这些小件。调权重用的是权重笔刷工具主要三个操作加权重、减权重、限制总数。加和减是按照笔刷的强度一点一点刷的刷的时候要注意笔刷大小太大容易把周围不该动的顶点也刷到太小则要刷很久。我的经验是在关节附近用小笔刷在大区域用大笔刷。限制总数这个功能特别重要它把每个顶点的骨骼影响数量限制在指定值超出部分按权重比例合并。游戏项目必须限制在 4因为大部分引擎的 GPU 蒙皮是四骨限制超过的会在导出或者运行时被截断效果就是模型在引擎里动起来和 Max 里完全不一样。这一点我在项目里吃过亏Max 里看着完美进引擎一看肩膀塌了一块查了半天才发现是权重超了四根被截了。4.4 归一化和锁定两个必须用上的功能权重调完之后必须做归一化。归一化确保每个顶点的所有骨骼权重加起来正好等于 1如果加起来大于 1模型会被放大小于 1模型会收缩。这个值通常是自动维护的但用笔刷加减权重的时候容易破坏所以阶段性要手动跑一次归一化。锁定功能是用来保护已经调好的区域的。躯干调好之后锁定躯干骨骼再调四肢的时候就不会误伤。这个习惯能省掉大量复查时间。操作什么时候用常见误区归一化每调完一个区域后只在最后做一次导致前面误差累积锁定区域调完确认无误后不锁回调时污染已完成的区域限制总数权重调完、导出前一开始就限制导致精细调整空间不足镜像一侧调完后不镜像手动对侧两边形变不一致5. 骨架验收用几个动作把问题提前逼出来5.1 极限姿势自测清单骨架搭完、蒙皮调完千万别直接交付。先自己做一轮极限姿势测试把问题提前逼出来总比动画师做到一半发现骨架有毛病强。我固定的测试动作有六个手臂上举 180 度、手臂前平举 90 度、大臂贴身后小臂弯 90 度、深蹲到极限、腰部向两侧弯曲 45 度、头部向四周转动到极限。每一个动作看三个地方关节处的模型有没有塌陷或者撕裂、有没有明显的穿模、有没有不该动的顶点跟着动。手臂上举主要看腋下深蹲主要看膝盖后侧和胯部扭腰看肋骨和腹部转头看脖子。这套测试大概二十分钟能跑完能发现八成以上的形变问题。剩下的两成通常是特定角度下的偶发穿模那种只能靠动画阶段慢慢修。5.2 用一段循环走路反推骨架缺陷静态姿势测完还要跑一段动态动画。原因很简单静态测试看的是单个姿势的形变动态测试看的是姿势之间的过渡两者的问题类型不一样。做一段简单的走路循环长短轴都用默认的主要看四个点脚掌落地的时候有没有滑步、胯部左右摆动的时候有没有撕裂、手臂摆动幅度大的时候肩膀会不会翻、脊椎有没有出现奇怪的扭曲。滑步是 Biped 最容易出的问题之一原因通常是脚掌骨骼的落点位置不对或者脚踝的 IK 目标没有正确固定在落地位置。胯部撕裂多半是盆骨权重的过渡没调好。肩膀翻转通常是肩胛骨的骨骼长度或者位置不对。这几个问题如果是骨架结构引起的改起来还算快如果是权重引起的就要重新调。所以跑一遍动态测试能提前把这些暴露出来。6. 那些年踩过的坑和排查路径6.1 蒙皮之后模型炸开或者塌陷症状很好认加完 Skin 一拖动骨骼模型的顶点像被磁铁吸过去一样飞出去或者相反整个区域陷进去。排查顺序是这样的先看模型有没有残留变换选中模型看它的坐标和缩放值不是 100 就重做一次变换归零。如果没有残留变换再看骨骼列表里是不是混进了不该有的骨骼比如某个虚拟体或者辅助对象被自动加进去了权重被分配到错误的骨骼上。如果都正常再看权重限制有时候权重限制设得太小顶点被强行精简到没有合适的主骨骼也会出现塌陷。还有一个很隐蔽的原因模型顶点有重合点。两个顶点坐标完全一样但是不同的顶点权重分配时被分到了不同的骨骼一个动一个不动看起来就像裂开了。这种情况要用焊接功能先把重合点合并掉。6.2 脚部滑步和脚步模式的坐标漂移Biped 的脚步模式很好用但它有个前提脚掌骨骼的落点位置必须准确脚踝的 IK 目标必须能正确对齐地面。滑步的典型表现是角色在往前走但脚掌落地时还在往后滑。原因通常是脚掌骨骼的朝向不对脚掌前端的位置偏了导致脚步模式计算出来的落地点和视觉上的落地点不一致。修法是回到体形模式重新对一遍脚掌骨骼的前后位置和角度确认脚掌完全贴平地面。还有一种漂移是盆骨根节点的位移引起的。Biped 有两个模式原地模式In Place和位移模式。原地模式下角色走动时盆骨不会真的位移只是腿在动位移模式下盆骨会真的往前走。如果模式切换的时候没注意动画会突然跳一下或者脚部完全错位。这个在导出动画之前一定要确认清楚。6.3 导出之后骨骼错位和缩放异常在 Max 里一切正常导进引擎一看角色是躺着的或者变成了五米高的巨人或者骨骼全挤在一起。躺着的通常是坐标轴不匹配。不同的引擎对“哪个轴是朝上的”“哪个轴是朝前的”约定不一样导出的时候要在导出设置里指定正确的向上轴和向前轴并且勾选烘焙动画。烘焙这一步很关键它把所有的约束和 IK 解算结果转成逐帧的骨骼变换数据不烘焙的话引擎读到的只是约束前的原始数据动画会完全错乱。巨人的问题通常是单位不匹配。Max 里的单位设置和引擎的导入缩放要一致如果 Max 用的是英寸而引擎按米解析角色会缩小 39 倍。这个在导出前确认一次系统单位就行。骨骼挤在一起可能是导出范围设置错了只导出了部分骨骼也可能是命名冲突同一层级下有两根同名骨骼引擎合并的时候出错。文件名和骨骼名的命名规范在这个阶段就体现价值了我自己用的规范是“角色名_部位_序号”简单但基本不会撞。6.4 旋转轴心错乱和欧拉角翻转这个问题的表现是动画播放到某个角度时骨骼突然“啪”地翻一下或者旋转方向不受控地乱转。根本原因是欧拉角的万向节锁某些角度组合下计算出的旋转轴会退化成两个重合的导致旋转出现歧义。预防手段是控制骨骼的旋转角度不要接近 90 度的边界值。有些角色设计上就要求手臂旋转 180 度这种可以在骨架阶段加一根辅助骨把大角度旋转拆成两根骨骼各转 90 度避开临界区。还有一种是骨骼的旋转顺序设置。Biped 的骨骼有旋转顺序参数默认是 XYZ某些动作下改成 ZXY 或者别的顺序会更稳定。这个一般不用动除非遇到明确的翻转问题再去调整。我个人的经验是骨架搭建这件事的投入产出比在前期看起来不高但每一个在体形模式里多花十分钟确认的细节后面都能省掉一两个小时的返工。最省时间的做法永远是把顺序做对模型清理干净、关节定准、预弯给足、权重归一、极限测试跑一遍然后才交付。真到了动画阶段再回头改改的不只是一套骨架是一堆已经K好的关键帧。