1. 为什么需要烘焙Rigify动画在Blender中使用Rigify创建的动画骨骼系统本质上是由两套骨骼组成的控制骨骼Control Rig和变形骨骼DEF骨骼。控制骨骼用于动画师操作而DEF骨骼才是实际影响模型变形的骨骼。这种设计虽然提高了动画制作的便利性但也带来了导出兼容性问题。重要提示Blender内部的骨骼约束系统如IK、FK约束是软件特有的实现方式这些约束关系无法直接导出为通用的3D文件格式如glb、fbx。当你在其他软件如Unity、Unreal等游戏引擎中打开这类文件时所有的约束关系都会丢失导致动画完全失效。我曾在多个跨平台项目中遇到过这个问题在Blender中精心调制的动画导入游戏引擎后变成了一堆僵硬的骨骼。经过多次尝试发现最可靠的解决方案就是烘焙动画——将基于约束的动画转换为关键帧动画。这个过程相当于把骨骼的每一帧变换固化下来不再依赖实时计算的约束关系。2. 准备工作与骨骼清理2.1 创建导出专用骨架首先在Blender中打开你的Rigify角色文件。在大纲视图Outliner中找到控制骨骼通常命名为rig或control_rig按ShiftD复制一份并重命名为export_rig或其他易于识别的名称。这个复制的骨架将作为我们最终导出的载体。2.2 清理非DEF骨骼选中export_rig进入编辑模式Tab键切换在骨骼集合面板中找到DEF骨骼组通常以DEF-前缀命名全选DEF骨骼A键然后按CtrlI反选删除所有非DEF骨骼X键→删除骨骼实际操作中可能会遇到某些骨骼无法选中。这时需要在大纲视图中找到这些骨骼右键点击确保可选Selectable选项已勾选返回编辑模式继续删除2.3 修复骨骼层级关系删除多余骨骼后DEF骨骼的父子关系可能会断裂。需要手动重建在编辑模式下检查每个骨骼的父级关系对于失去父级的骨骼先选择子骨骼再Shift选择父骨骼按CtrlP设置父子关系选择保持偏移量特别要注意根骨骼通常是骨盆位置的骨骼必须保持独立不能有父级骨骼。可以通过以下方法验证层级是否正确选择根骨骼按ShiftG→子级应该能选中整个骨架移动根骨骼整个骨架应该跟随移动3. 约束处理与动画传递3.1 解除骨骼锁定有时DEF骨骼的变换属性会被锁定导致无法接收动画数据。解决方法选择所有DEF骨骼在姿态模式下按A键全选打开属性面板N键在变换锁定部分取消所有位置、旋转、缩放的锁定3.2 清除原有约束在姿态模式下全选所有骨骼A键按CtrlAltC选择清除所有约束 这一步确保骨架是干净的不会残留任何可能干扰烘焙的约束。3.3 创建动画传递约束我们需要将原始控制骨骼的动画传递到清理后的export_rig上。这里使用Python脚本批量添加约束import bpy # 设置原始控制骨骼的名称根据你的实际名称修改 source_rig rig target_rig export_rig # 确保选择了目标骨骼 bpy.ops.object.mode_set(modePOSE) # 为每个选中的骨骼添加约束 for bone in bpy.context.selected_pose_bones: # 添加位置约束 loc_constraint bone.constraints.new(typeCOPY_LOCATION) loc_constraint.target bpy.data.objects[source_rig] loc_constraint.subtarget bone.name # 添加旋转约束 rot_constraint bone.constraints.new(typeCOPY_ROTATION) rot_constraint.target bpy.data.objects[source_rig] rot_constraint.subtarget bone.name使用脚本的步骤在Blender中打开文本编辑器ShiftF11新建文本粘贴上述代码根据你的实际骨骼名称修改source_rig和target_rig变量选择export_rig的所有骨骼姿态模式下按A键点击运行脚本按钮技术细节这个脚本为每个DEF骨骼添加了两个约束复制位置和复制旋转。这些约束会实时将原始控制骨骼的变换数据传递到我们的导出骨骼上但最终这些约束关系会被烘焙成关键帧因此不会影响导出兼容性。4. 模型重新绑定与动画烘焙4.1 解除原有绑定选择你的角色模型不是骨骼按AltP选择清除父级并保持变换 这一步会解除模型与原控制骨骼的绑定关系但保留模型的当前位置和变形。4.2 绑定到导出骨骼先选择模型再Shift选择export_rig按CtrlP选择附带空顶点组 这个选项会保留模型原有的权重分配只是将绑定的目标从原骨骼转移到我们的导出骨骼上。绑定后建议测试几个关键姿势确保变形正确选择export_rig进入姿态模式尝试移动根骨骼或主要控制骨骼观察模型变形是否正常4.3 烘焙动画关键帧确保在时间轴上可以看到完整的动画范围选择export_rig进入姿态模式打开动作编辑器Action Editor选择要烘焙的动画动作点击菜单物体→动画→烘焙动作烘焙设置建议帧范围设置为你的动画长度仅选中项勾选只烘焙当前选择的骨骼视觉关键帧勾选产生更精简的关键帧清除约束勾选烘焙后自动删除约束烘焙过程可能需要一些时间取决于动画复杂度和帧数。完成后你可以在大纲视图中删除原始控制骨骼不再需要检查动作编辑器确认关键帧已正确生成5. 导出GLB文件及优化技巧5.1 导出设置详解选择export_rig和角色模型文件→导出→glTF 2.0 (.glb)在导出面板中调整以下关键设置格式glTF二进制.glb 包含选中物体自定义属性根据需要顶点组必须蒙皮必须动画勾选导出动画选择要导出的具体动作或多个动作采样率保持默认通常不需要修改高级设置压缩建议勾选减少文件大小切线空间根据目标平台需求选择5.2 常见问题解决问题1导出后动画播放速度不对 解决方法检查Blender和游戏引擎的帧率设置是否一致在导出面板中调整帧率选项问题2模型变形异常 解决方法确认烘焙前测试过几个关键姿势检查是否有骨骼权重丢失在Blender中查看权重绘制确保导出时包含了顶点组和蒙皮数据问题3文件体积过大 优化方案减少不必要的关键帧在烘焙时勾选视觉关键帧在导出时启用压缩考虑简化骨骼数量合并不影响变形的末端骨骼5.3 其他格式注意事项如果需要导出FBX而非GLB基本流程相同但需注意FBX导出时要勾选烘焙动画可能需要调整轴向设置Y向上或Z向上在游戏引擎中导入时可能需要重新指定材质6. 实战经验与进阶技巧6.1 批量处理多个动画如果你的角色有多个动画片段走、跑、跳等可以为每个动画创建独立的动作Action使用NLA编辑器组织动画片段导出时在glTF导出面板中选择所有动作6.2 优化骨骼数量对于游戏使用可以考虑删除不影响变形的末端骨骼如手指的末节使用骨骼简化插件如Rigify本身提供的简化选项合并权重相似的骨骼6.3 动画压缩技巧为了减少文件大小在烘焙前减少不必要的中间帧使用曲线编辑器简化动画曲线对于循环动画确保首尾帧完全匹配6.4 材质兼容性处理GLB格式对材质支持有一定限制尽量使用原理化BSDF着色器复杂的节点组可能需要简化贴图最好嵌入到GLB文件中经过这套流程处理后你的Rigify动画应该能在绝大多数游戏引擎和3D软件中正常使用了。我在最近的一个手游项目中用这种方法导出了50多个角色动画在Unity中全部表现完美没有出现任何约束丢失或变形异常的问题。