Animator 动画 — FBX 导出、绑定 AnimationClip、splitObjects 模式
Animator 和 AnimationClip 的关系
Unity 里 Animator 是动画状态机控制器(一个 .controller 文件),它引用多个 AnimationClip 作为状态节点的动画片段。AssetStudio 里 Animator 和 AnimationClip 都是独立条目,但导出时需要关联起来。
三种导出方式
方式一:从 Scene Hierarchy 导出带绑定动画的模型
这是最常用的方式——导出来的 FBX 是完整的:网格 + 骨骼 + Animator + 绑定的 AnimationClip。步骤:
- Scene Hierarchy 里找到要导出的 GameObject;
- 选中它;
- 菜单 Model → Export selected objects with AnimationClip;
- 选输出目录。
AssetStudio 会自动从这个 GameObject 的 Animator 上取所有绑定的 AnimationClip,一起打包进 FBX。
方式二:从 Asset List 手动 Ctrl 多选
如果你想精确控制导出哪些 Clip:
- Asset List 里 Filter Type 只勾 Animator 和 AnimationClip;
- 选中一个 Animator → Ctrl 点击 选中你想打包的 AnimationClip;
- 右键 → Export → Export Animator with selected AnimationClip;
- 选输出目录。
这种方式可以把一个 Animator 绑定的 10 个 Clip 里只导出其中 3 个。
方式三:AssetStudioMod CLI splitObjects
AssetStudioMod 的 CLI 提供了 -m splitObjects 模式——它会把所有 GameObject + 绑定的 Animator + AnimationClip 拆成独立 FBX 文件导出,是批量自动化场景的首选:
AssetStudioModCLI <asset folder path> -m splitObjects -o <output folder>
还能加筛选:
AssetStudioModCLI <path> -m splitObjects --filter-by-name character,hero --fbx-scale-factor 10
导出前的预览
动画相关的资源没有独立的动画预览窗口(AssetStudio 不做动画播放)。导出前能检查的只有:
- 在 Asset List 里看 AnimationClip 的名称和时长(Size 列的大小能粗略反映);
- 确认 Load folder 加载了完整项目(AnimationClip 可能在别的 AssetBundle 里)。
常见问题
导出的 FBX 没有动画
最常见原因:导出方式错了。用 Asset List 直接 Export Selected Assets 导 Animator 只会导出控制器本身,不带 Clip。必须用:
- Scene Hierarchy 方式 → 自动带绑定的 Clip;
- 或 Ctrl 多选 Animator + Clip → Export Animator with selected AnimationClip。
动画播放时模型位置 / 朝向跳变
Unity 的 AnimationClip 里可能包含位移和旋转关键帧。如果导入到 Blender / Maya 里发现模型在原点和远处跳变,检查 FBX 里有没有 Root Motion——Unity 的 Humanoid 动画会把根节点位移烘焙进动画数据。AssetStudio 导出时保留了这些数据,导入后在 Blender 里手动清一下根节点动画曲线就行。
Animator 导成 JSON 还是 FBX
原版 AssetStudio 里 Animator 条目默认在 Asset List 里不显示(因为不可直接导出贴图那样的格式)。但可以用 Dump Selected Assets 把 Animator 结构导出成 JSON——里面会有完整的状态机图、参数表、每个 Clip 的引用关系。适合研究 Unity 动画系统结构。