Attention: Here be dragons
This is the latest
(unstable) version of this documentation, which may document features
not available in or compatible with released stable versions of Godot.
Checking the stable version of the documentation...
3D 骨架重定向
重定向选项
骨骼映射
在高级场景导入菜单中选中 Skeleton3D 节点时,右侧将出现一个菜单,其中包含“重定向”部分。重定向部分只中有一个属性 bone_map
(骨骼映射)。

选中骨架节点后,请先设置一个新的 BoneMap 和 SkeletonProfile。Godot 有一个用于人形模型的预设,名为 SkeletonProfileHumanoid。本教程假设你使用的就是 SkeletonProfileHumanoid。
备注
如果需要不同于 SkeletonProfileHumanoid 的配置文件,你可以通过选择 Skeleton3D 并使用 3D 视口工具栏中的 Skeleton3D 菜单从编辑器中导出一个 SkeletonProfile。
使用 SkeletonProfileHumanoid 时,将在设置 SkeletonProfile 时执行自动映射。如果自动映射的效果不佳,你也可以手动映射骨骼。

缺失、重复以及不正确的父子关系映射都会显示为洋红色/红色按钮(取决于编辑器设置)。这些问题不会阻止导入过程,但会警告动画可能无法正确共享。
备注
自动映射会对骨骼名称进行模式匹配。所以建议骨骼都使用常见的英文名称。
设置 bone_map
后,以下部分中提供了多个选项。

移除轨道
如果是要将资源导入为 AnimationLibrary,那么我们建议启用这些选项。而如果是要将资源导入为场景,那么某些情况下就应该禁用这些选项。例如导入带有动画配件的角色时,这些选项可能会导致配件没有动画。
排除骨骼变换
删除动画中除骨骼变换轨道之外的所有轨道。
非重要位置
删除动画中除了在 SkeletonProfile 中定义过的 root_bone
和 scale_base_bone
以外的位置轨道。在 SkeletonProfileHumanoid 中,这意味着要删除除 Root
和 Hips
之外的位置轨道。自 Godot 4.0+ 起,动画在变换值中包含放松姿势。如果禁用此选项,动画可能会意外地改变身体形状。
未映射骨骼
删除动画中未映射的骨骼变换轨道。
骨骼命名器
重命名骨骼
重命名映射的骨骼。
唯一节点
使骨架成为唯一节点,名称在 skeleton_name
中指定。这会使得动画轨道路径能够统一,独立于场景层次结构。
放松修复器
SkeletonProfileHumanoid 中定义参考姿势有以下规则:
人形物体呈 T 形姿势
人形物体在 Y 朝上的右手坐标系中面向 +Z
人形物体不应该有变换节点
将 +Y 轴从父关节指向子关节
+X 旋转使关节像肌肉收缩一样弯曲
这些规则是混合动画和反向动力学(IK)的便捷定义。如果你的模型与此定义不符,你需要用这些选项来进行修正。
应用节点变换
如果没有正确导出资产进行共享,导入的骨骼可能会将Transform作为节点。例如,从 Blender 导出的但没有执行 "应用变换"的glTF就是这样的情况。看起来模型与定义相符,但内部Tranforms与定义不同。此选项可通过在导入时应用变换来修复此类模型。
备注
如果导入的场景包含骷髅以外的其他对象,该选项可能会产生负面影响。
归一化位置轨道
位置轨道主要用于模型的移动,但在不同高度的模型之间共享移动动画可能会由于步长的差异而导致滑倒现象。该选项会根据 scale_base_bone
高度标准化位置轨道。scale_base_bone
高度作为 motion_scale
存储在骨骼中,并且标准化的位置轨道值在播放时将乘以该值。如果禁用此选项,则位置轨道不会被标准化,骨架的 motion_scale
始终以 1.0
的形式导入。
对于 SkeletonProfileHumanoid,scale_base_bone
是“臀部”,因此臀部的高度用作 motion_scale
。
覆盖轴
通过覆盖模型的 Bone Rest 来统一模型的 Bone Rest,以匹配 SkeletonProfile 中定义的参考姿势。
备注
该选项是 Godot 4.0+ 中共享动画的最重要的选项,但请注意, 如果外部设置的原始 Bone Rest 很重要 ,则此选项可能会产生可怕的结果。如果你想在保留原始 Bone Rest 的情况下共享动画,请考虑使用 实时重定向模块 。
修复剪影
尝试让模型的剪影与 SkeletonProfile 中定义的参考姿势相匹配,例如 T-Pose。该功能无法修复差异太大的剪影,并且可能不适用于修复骨骼滚动。
使用 SkeletonProfileHumanoid 时,不需要为 T-Pose 模型启用此选项,但应为 A-Pose 模型启用。然而,在这种情况下,根据模型的脚跟高度,固定脚的结果有可能会很糟糕,因此,可能需要添加你并不希望在 filter
数组中固定的 SkeletonProfile 骨骼名称,如下例所示。

此外,对于膝盖或脚弯曲的模型,可能需要调整 scale_base_bone
高度。为此可以使用 base_height_ adjustment
选项。