mcpField
B
blender-character-rigging

blender-character-rigging

github.com/el4cteo创意与媒体569131 次安装2 周前更新
代码仓库

关于 blender-character-rigging

面向 Blender 角色制作流程的绑定技能,涵盖 Rigify 控制骨架生成、网格蒙皮、姿势压力测试和游戏骨架验证。它还会在热权重计算失败时自动改用代理网格传递权重。

主要功能

  1. 01生成 Rigify 元骨架与控制骨架
  2. 02自动绑定并清理网格权重
  3. 03压力测试姿势并检查变形
  4. 04生成游戏用骨架并重定向网格
  5. 05按 Unity、Unreal 或 Roblox 配置验证

适用场景

  1. 01为角色网格创建动画控制绑定
  2. 02修正关节弯曲时的变形问题
  3. 03将动画骨架整理为游戏引擎格式
  4. 04检查骨架是否符合目标引擎要求

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/el4cteo/blender-skills --skill blender-character-rigging

安装后在 Claude Code 中输入/blender-character-rigging确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

scripts/
_bpyx.py
bind_mesh.py
rig_check.py
rigify_build.py
stress_poses.py

详细介绍

角色绑定

执行模型位于 blender-core。面部和形状键位于 blender-facial-shapekeys,动画位于 blender-animation。

流程(脚本串联;每个脚本都会返回 JSON)

  1. 准备网格:应用缩放,朝向 -Y,双脚位于 Z=0,X=0 居中,保持对称,并设为 T 姿势或 A 姿势(A 姿势 30–45° 能更好地变形肩部)。先运行 blender-asset-qa。
  2. 元骨架:运行 scripts/rigify_build.py -- --add basic_human --fit Body(human 会添加完整的面部绑定;游戏用途请使用 --no-face + 形状键)。
  3. 放置关节(拟合只会缩放)。在 X-ray 模式下对照网格编辑骨骼:关节位于旋转枢轴处(在体积内部,而不是表面上)。肘和膝需要朝自然活动方向略微弯曲(肘向后,膝向前),这样 IK 才会朝正确方向求解。对称化:bpy.ops.armature.symmetrize()。使用 look 检查(shading="xray")。
  4. 生成:--metarig META_Body --generate 会生成 RIG_Body(控制绑定:FK/IK、IK/FK 切换、微调骨骼、骨骼集合)。
  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(原始元骨架副本)、MCH(机制辅助骨骼)、控制骨骼(动画师操作的骨骼)。绝不要给控制骨骼或 MCH 骨骼赋权重。
  • 命名:使用 .L/.R 后缀(镜像工具、Rigify 和 rig_check 都依赖它们)。名称必须唯一且为 ASCII。骨骼集合(arm.collections.new("FK")、bcoll.assign(bone))取代旧版骨骼层。
  • 滚转:保持局部坐标轴一致。Y 轴沿骨骼向下;肢体可使用 armature.calculate_roll(type="GLOBAL_POS_Z") 重新计算滚转,也可逐链计算。镜像骨骼的滚转也必须镜像(rig_check 会标记此问题)。
  • 骨骼链:肢体的父骨骼与子骨骼应相连。脊柱使用 3–5 根骨骼,颈部使用 1–2 根。前臂和上臂加入扭转骨骼(Rigify 的 .001 段),可防止像糖果纸一样扭曲。
  • 根骨骼位于原点,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 轴镜像进行绘制。
  • 工具(实时):开启自动归一化的权重绘制模式、渐变工具、平滑(vertex_group_smooth)、Levels,以及从优质网格执行 object.data_transfer(服装从身体获取权重)。

修正器(权重之外)

在英雄角色绑定中,由骨骼旋转驱动的修正形状键可修复肘部、膝盖和肩部的问题。在摆好姿势的状态下雕刻修正形状(使用 modifier_apply_as_shapekey 或 Corrective Shape Keys 插件的方法),然后由骨骼的局部旋转驱动形状键值(驱动器 TRANSFORMS 变量 ROT_X,使用 LOCAL_SPACE,将静止状态的 0 映射为完全弯曲时的 1)。游戏中,修正形状会导出为混合形状。可在引擎中驱动它们(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 之前(Armature 之后的 Corrective Smooth 可减轻塌陷)。
  • 5.0:bone.select 已移除。请使用 pose_bone.select 或 edit_bone.select。bone.hide 也会影响编辑骨骼。

评论

支持 Markdown