如何为网页和游戏引擎导出 3D 动画
要为网页或游戏引擎导出 3D 动画,请使用 glTF(GLB 是其单文件二进制形式)或 FBX。两者都存储节点层级、骨骼、蒙皮权重和关键帧片段。glTF 是浏览器和大多数引擎原生读取的开放标准;FBX 则是 Maya、3ds Max、Unity 和 Unreal 工作流程中长期建立的交换格式。导出后保留的内容取决于导出器,因此约束、IK 和程序化运动需要首先烘焙成关键帧。
简短回答
将格式无法存储的任何内容——IK、约束、驱动器和模拟——烘焙成关键帧,检查片段的名称和长度,然后导出 GLB(适用于 Web 和大多数现代引擎)或 FBX(适用于特定管线)。变换、骨骼动画和形变关键帧权重可以保留;但绑定控制、自定义曲线和关键帧材质值通常不会。在依赖文件之前,请务必在目标平台中打开它进行检查。
逐步指南
- 1
烘焙格式无法存储的内容
文件格式存储的是关键帧,而不是生成它们的系统。IK 解算器、约束、驱动器、表达式和模拟在导出前必须采样为普通关键帧,否则文件在这些地方将没有运动。在 Studio 中,「Rigging」面板中的「Bake IK」和「Animate ▸ Bake motion to keyframes…」用于驱动器,都可以完成此操作。
- 2
命名并修剪片段
引擎会按名称将文件中的每个动画作为单独的片段导入。为片段命名时,应使用程序员容易识别的名称——例如「Walk」、「Idle」、「Open」——并检查每个片段的长度,因为一个在末尾超出二十帧的片段将播放二十帧的空白。
- 3
选择格式
GLB 适用于 Web 端以及 Godot、Blender、three.js 和 Babylon.js(它们原生支持读取 glTF);Unity 通过 glTFast 等包读取,Unreal 也支持导入。FBX 适用于以其为核心的管线——如 Maya、3ds Max 以及许多 Unity 和 Unreal 项目。
- 4
导出
在 Studio 中,选择「文件」▸「导出 3D 模型…」,然后选择 GLB 或 glTF——这两种格式支持动画。场景中的每个片段都会被写入,您当前正在处理的片段会排在最前面。「导出为 Web…」会生成一个页面、嵌入代码、React 组件或 three.js 模块,用于播放动画。
- 5
在目标平台中检查
将文件导入到目标引擎或查看器中,并播放每个片段。检查缩放、朝向、循环以及缓动运动是否仍然平滑——下方列出的问题会在这里显现,否则就不会出现。
用于动画的 glTF 和 GLB
glTF 2.0 将动画存储为通道,每个通道针对一个节点的平移、旋转或缩放,或网格的形变目标(shape-key)权重。每个通道使用 LINEAR、STEP 或 CUBICSPLINE 插值采样关键帧,时间以秒而非帧存储,旋转使用四元数。蒙皮网格包含其关节、逆绑定矩阵以及每组每个顶点最多四个权重。
这种设计刻意精简,因此 glTF 几乎可以在任何地方无需转换即可加载。超出其范围的任何内容——例如关键帧材质颜色、灯光强度、相机焦距——都需要像 KHR_animation_pointer 这样的扩展,并且对扩展的支持因引擎而异。glTF 默认也采用米制单位和 Y 轴向上,因此很少会出现尺寸错误的情况。
用于动画的 FBX
FBX 是 Autodesk 的专有格式,在过去二十年里一直是 DCC 软件和游戏引擎之间传输绑定动画角色的默认选择。它存储骨骼、蒙皮、混合形变(blend shapes)、多个镜头(takes)和帧率,Mixamo、Unity 和 Unreal 都能流畅地支持它。
它的弱点也正是其灵活性的来源:单位和轴向约定因导出器而异,因此来自某个工具的 FBX 文件可能会大一百倍或躺倒,并且不同 SDK 版本之间的细节也有所不同。许多来自 Maya 和 Mixamo 的文件使用厘米,而 glTF 则使用米。
哪些内容可保留,哪些不可保留
可靠保留的内容:对象变换、骨骼上的骨骼动画、形变关键帧权重和片段结构。通常会丢失的内容:IK 和约束、驱动器和表达式、自定义绑定控制器以及关键帧材质、灯光和相机镜头值。对于第一组丢失项,需将其烘焙成关键帧;对于第二组,请检查目标是否支持扩展或需要重新构建效果。
曲线是一个微妙之处。导出器在是否保留贝塞尔切线、写入三次样条数据或将曲线采样为关键帧方面有所不同。如果导出器只写入您设置的关键帧,并在线性插值,那么在间隔较远的关键帧之间的强烈缓动效果就会被削弱。如果引擎中精确的缓动很重要,请在缓动内部添加关键帧或以帧率烘焙运动。
从 Mixos Studio 导出动画
Studio 的 GLB 和 glTF 导出支持关键帧对象变换和形变关键帧权重,保留场景层级结构,使每个对象在其自身局部空间中进行动画,并写入场景中的每个片段。FBX、OBJ、STL 和 USDZ 目标不支持动画,导出对话框会在下载前进行说明。
有两个限制值得注意。关键帧会按您设置的时间写入,并在文件中进行线性插值,因此如果引擎需要精确重现,请在长缓动内部添加关键帧。此外,关键帧材质、灯光和相机值会保留在场景中,因为核心 glTF 没有为其提供通道。.mxs 场景文件保留了模型格式无法保留的所有内容——生成器、修改器、动画和渲染设置——以备目标是 Studio 本身时使用。导出需要付费套餐;制作动画和预览是免费的。
常见问题
GLB 或 FBX 哪种更适合动画?
GLB 适用于网络和原生读取 glTF 的引擎,例如 Godot 和 three.js ——它是一个开放标准,采用公制单位,并且在不同工具之间保持一致。FBX 适用于围绕其构建工作流程的场景,特别是 Maya、3ds Max 以及许多 Unity 和 Unreal 项目。两者都支持骨骼动画和形变关键帧(shape keys)。
glTF 支持动画吗?
是的。glTF 2.0 支持节点平移、旋转、缩放以及形变目标权重动画,插值方式包括线性、步进或三次样条,并支持蒙皮网格。对其他属性(如材质值)进行动画处理需要扩展。
为什么我导出的动画没有动?
通常是因为动画源自格式不支持的元素——例如 IK 解算器、约束、驱动器或模拟——并且在导出前未烘焙成关键帧。另一个常见原因是引擎未播放片段:大多数引擎需要指定片段或将其设置为自动播放。
为什么我的动画在引擎中大小不对或旋转了?
单位和轴向约定。glTF 始终是米和 Y 轴向上;FBX 取决于导出器,通常是厘米。在导出时设置单位和轴向选项,或在导入时应用统一缩放,而不是逐个片段修复。
我可以从浏览器导出动画吗?
是的。Mixos Studio 可以将动画场景导出为包含所有片段的 GLB 或 glTF 格式,也可以导出为可播放动画的网页或 three.js 模块。制作动画是免费的;导出则需要付费套餐。
制作场景动画并将其导出为 GLB ——包含所有片段,这是网络和大多数引擎原生支持的格式。