关于 blender-character-rigging
面向 Blender 角色制作流程的绑定技能,涵盖 Rigify 控制骨架生成、网格蒙皮、姿势压力测试和游戏骨架验证。它还会在热权重计算失败时自动改用代理网格传递权重。
主要功能
- 01生成 Rigify 元骨架与控制骨架
- 02自动绑定并清理网格权重
- 03压力测试姿势并检查变形
- 04生成游戏用骨架并重定向网格
- 05按 Unity、Unreal 或 Roblox 配置验证
适用场景
- 01为角色网格创建动画控制绑定
- 02修正关节弯曲时的变形问题
- 03将动画骨架整理为游戏引擎格式
- 04检查骨架是否符合目标引擎要求
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ el4cteo/ blender-skills --skill blender-character-rigging安装后在 Claude Code 中输入/blender-character-rigging确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
scripts/_bpyx.pybind_mesh.pyrig_check.pyrigify_build.pystress_poses.py详细介绍
角色绑定
执行模型位于 blender-core。面部和形状键位于 blender-facial-shapekeys,动画位于 blender-animation。
流程(脚本串联;每个脚本都会返回 JSON)
- 准备网格:应用缩放,朝向 -Y,双脚位于 Z=0,X=0 居中,保持对称,并设为 T 姿势或 A 姿势(A 姿势 30–45° 能更好地变形肩部)。先运行
blender-asset-qa。 - 元骨架:运行
scripts/rigify_build.py -- --add basic_human --fit Body(human会添加完整的面部绑定;游戏用途请使用--no-face+ 形状键)。 - 放置关节(拟合只会缩放)。在 X-ray 模式下对照网格编辑骨骼:关节位于旋转枢轴处(在体积内部,而不是表面上)。肘和膝需要朝自然活动方向略微弯曲(肘向后,膝向前),这样 IK 才会朝正确方向求解。对称化:
bpy.ops.armature.symmetrize()。使用look检查(shading="xray")。 - 生成:
--metarig META_Body --generate会生成RIG_Body(控制绑定:FK/IK、IK/FK 切换、微调骨骼、骨骼集合)。 - 蒙皮:运行
scripts/bind_mesh.py -- --armature RIG_Body --meshes Body。此脚本使用热权重;热权重失败时(非流形、拼装模型或 AI 生成的网格)会自动切换到体素代理传递,然后清理为最多 4 个影响并进行归一化。 - 压力测试:运行
scripts/stress_poses.py -- --armature RIG_Body,然后运行look(mode="frames", frames=[1,10,20,30,40,50])。修复塌陷的肘部、糖果纸般扭曲的前臂、下陷的肩部或臀部褶皱(见下文)。 - 引擎骨架:运行
rigify_build.py -- --rig RIG_Body --game-skeleton,生成GAME_RIG_Body=root+ 层级清晰的 DEF 骨骼,移除DEF-前缀、约束到控制绑定,并将网格重新绑定到目标骨架。使用控制绑定制作动画,然后烘焙到游戏骨架并导出(blender-animation→blender-export-pipelines)。 - 验证:运行
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