SuperAPI AI 工具集

blender-character-rigging

设计与创作

查看项目

更新于 10-16 19:37

技能介绍

用途

这是一个面向 Blender 5.2 的角色绑定(Character Rigging)技能,目标是完成从 metarig 匹配、骨架生成到蒙皮、游戏骨架导出与校验的整条绑定流程。执行模型位于 blender-core;面部与形态键相关工作在 blender-facial-shapekeys,动画工作在 blender-animation。

主要能力

管线由脚本串联,每一步返回 JSON:

  1. 准备网格:应用缩放,朝向 -Y,脚底位于 Z=0,X=0 居中,左右对称,摆成 T 姿或 A 姿(A 姿 30–45° 对肩部变形更好)。先运行 blender-asset-qa。
  2. 生成 metarig:scripts/rigify_build.py -- --add basic_human --fit Body(human 会附加完整面部骨架;游戏用途可用 --no-face 加形态键)。
  3. 摆放关节:fit 只做缩放。在 X 光模式下对照网格编辑骨骼,关节应位于旋转枢轴(体块内部而非表面)。肘与膝需要朝自然方向略微弯曲(肘向后、膝向前),以便 IK 正确求解。对称化:bpy.ops.armature.symmetrize()。用 look(shading="xray") 检查。
  4. 生成:使用 --metarig META_Body --generate 得到 RIG_Body(控制骨架:FK/IK、IK/FK 吸附、tweak 骨骼、骨骼集合)。
  5. 蒙皮:scripts/bind_mesh.py -- --armature RIG_Body --meshes Body。使用热权重,热权重失败时(非流形、拼装件或 AI 网格)自动切换到体素代理转移,然后清理为 4 个影响并归一化。
  6. 压力测试:scripts/stress_poses.py -- --armature RIG_Body,再用 look(mode="frames", frames=[1,10,20,30,40,50])。修复肘部塌陷、前臂糖果纸效应、肩部凹陷或髋部折痕(见下文)。
  7. 引擎骨架:rigify_build.py -- --rig RIG_Body --game-skeleton 得到 GAME_RIG_Body = root + DEF 骨骼的干净层级,去掉 DEF- 前缀,约束到控制骨架并重定向网格。用控制骨架动画,再烘焙到游戏骨架并导出(blender-animation → blender-export-pipelines)。
  8. 校验:scripts/rig_check.py -- --armature GAME_RIG_Body --profile unity|unreal|roblox [--fix]。

骨骼规则

  • 生产骨架分层:DEF(变形骨骼,唯一被导出的)、ORG(原始 metarig 副本)、MCH(机制辅助骨)、controls(动画师操作的骨骼)。绝不要给控制骨或 MCH 骨骼上权重。
  • 命名:使用 .L/.R 后缀(镜像工具、Rigify 与 rig_check 都依赖它)。名称唯一且为 ASCII。骨骼集合(arm.collections.new("FK")、bcoll.assign(bone))取代旧的骨骼层。
  • Roll:局部轴向一致。Y 沿骨骼向下;四肢用 armature.calculate_roll(type="GLOBAL_POS_Z") 或按链重算。镜像骨骼的 roll 必须镜像(rig_check 会标记该问题)。
  • 链:四肢用连接的父子关系。脊柱 3–5 根骨,颈部 1–2 根。前臂与上臂加 twist 骨骼(Rigify 的 .001 分段)可防止糖果纸效应。
  • root 骨骼位于原点,Y 朝前,不携带权重,用于根运动。
  • 缩放:骨架对象缩放为 1、旋转为 0,蒙皮前应用。非均匀骨骼缩放动画会破坏引擎。

权重绘制规则

  • 每个顶点 ≤ 4 个影响(移动端/Roblox),PC 上若引擎支持可 ≤ 8。始终归一化。低于 0.01 的权重移除。
  • 关节处平滑过渡:关节线上约 50/50 混合,在约 1–2 圈边线内衰减。硬切的 1/0 会出现折痕,过宽则肢体发软。
  • 肘/膝:外侧更长时间权重给上段骨骼,使关节保持体积。锐角弯曲可加辅助骨/修正骨或修正形态。
  • 肩:混合锁骨、上臂与脊柱。测试手臂举过头顶(压力帧 10)。
  • 髋:大腿—骨盆混合前侧保持紧(折痕)、后侧柔软(臀部)。
  • 头/颈:头部刚性(下颌线以上 100% 头骨),颈部平滑混合。道具(头盔、护甲片)100% 权重给单一骨骼,保持刚性不拉伸。
  • 镜像:画完一侧后用 object.vertex_group_mirror(all_groups=True, flip_group_names=True, use_topology=False),或开启 X 镜像工作。
  • 工具:实时权重绘制模式并开启 auto-normalize、渐变工具、Smooth(vertex_group_smooth)、Levels,以及从良好网格做 object.data_transfer(服装从身体获取权重)。

修正手段(权重之外)

由骨骼旋转驱动的修正形态键可修复主角级骨架的肘、膝与肩问题。在摆好姿势的状态下雕刻修正(modifier_apply_as_shapekey 或 Corrective Shape Keys 插件方式),再用骨骼局部旋转驱动键值(driver TRANSFORMS 变量 ROT_X,LOCAL_SPACE,从静止 0 映射到全弯 1)。游戏:修正会导出为 blendshape,在引擎中驱动(UE Pose Driver / Unity 脚本)或烘焙进动画。

引擎骨架细节

  • Unity Humanoid:Hips → Spine → Chest → Neck → Head 加四肢。游戏骨架会自动映射(rig_check --profile unity 显示映射)。推荐 T 姿绑定姿势。
  • Unreal:用 IK Retargeter 重定向到 UE5 Mannequin。命名匹配(pelvis、spine_01、thigh_l…)可加速链映射(--profile unreal 列出缺项)。不要叶骨。
  • Roblox R15:固定层级与命名(LowerTorso、UpperTorso、LeftUpperArm…),Root > HumanoidRootNode > LowerTorso,Root 不带权重,≤ 4 个影响。手动构建或基于 Roblox 的 Blender 模板,而非 Rigify。细节见 blender-export-pipelines/references/roblox.md。

限制与常见坑位

  • rigify_generate 需要 metarig 被选中且处于活动状态(temp_override 不够),脚本已处理。
  • “Bone Heat Weighting: failed to find solution” 来自非流形、相交部件或极小缩放。bind_mesh.py 回退到代理。先修缩放。
  • 以 “Keep Transform” 父级但未应用缩放的网格会出现双重变换。父级前应用缩放。
  • 修改器顺序:Armature 应在类形态键变形之后、Subdivision/Corrective Smooth 之前(Corrective Smooth 放在 Armature 之后可减少塌陷)。
  • 5.0:bone.select 已移除,使用 pose_bone.select 或 edit_bone.select。bone.hide 也会影响编辑骨骼。

适用场景

需要为角色搭建生产级骨架、并导出到 Unity/Unreal/Roblox 等引擎的 Blender 用户。资料未提供收费、价格或平台支持等额外信息。