如何解决Blender导出带Child of Constraint的多段glTF动画至Godot的错位问题?
解决Blender导出glTF到Godot时多NLA轨道动画错位问题
核心问题定位
你的问题确实和Child of Constraint有关——约束依赖Gun骨架的动画状态,多NLA轨道导出时,glTF无法正确解析跨骨架约束的关联动画,仅顶部轨道能正确计算约束影响,其他轨道丢失约束上下文导致错位。
实操解决步骤
1. 正确烘焙约束到关键帧(针对手臂骨架)
- 选中Left arm/Right arm骨架,切换到姿态模式,全选所有骨骼
- 确认
Child of Constraint处于启用状态,约束目标为Gun骨架 - 在时间轴设置对应动画的起止帧(和NLA轨道里的动画时长一致)
- 执行菜单:
Pose > Animation > Bake Action - 烘焙参数勾选:
- Clear Constraints(烘焙后移除约束,避免导出冲突)
- Overwrite Current Action
- Bake Visual Keying(确保烘焙结果和视图中看到的一致)
- Only Selected Bones
- 点击确定后,将烘焙好的新动作拖入NLA轨道,替换原轨道内容
2. 导出前的统一准备
- 对所有骨架(Gun、Left arm、Right arm)应用变换:对象模式下选中骨架,按
Ctrl+A依次应用Location、Rotation、Scale(现在烘焙完约束再应用,不会出现骨骼飞散) - 导出glTF时调整设置:
- 勾选
Animations > Export Animations和Animations > NLA Tracks - 取消
Use Current Frame(该选项仅导出当前帧,会忽略其他轨道动画) - 取消
Constraints > Export Constraints(约束已烘焙为关键帧,无需导出) - 确保
Skins > Export Skins处于勾选状态
- 勾选
3. Godot导入配置
- 导入glTF文件后,在导入面板的Animation标签页:
- 勾选
Import Animations - 将
NLA Tracks设置为Import as separate animations - 导入完成后,动画会自动加载到AnimationPlayer节点,无需手动复制粘贴
- 勾选
额外排查点
- 检查NLA编辑器中每个轨道的Strip,确保没有设置错误的帧偏移或缩放
- 导出时将三个骨架归为同一集合,确保导出时包含所有关联对象
内容的提问来源于stack exchange,提问作者user21716400
相关产品推荐
相关产品推荐

