文档
输出
为游戏引擎导出骨骼
文件 ▸ 导出 ▸ 骨骼(JSON)… 把一套骨骼绑定和它的动画写成游戏引擎可以回放的数据,而不是把它们渲染成图片。
精灵图集把每一帧存成一张图片。骨骼导出存的则是绑定本身:骨骼、挂在它们上面的图像,以及骨骼如何随时间运动。然后由引擎自己画出角色,所以动画体积小,在任何尺寸和帧速率下都播放流畅。
导出
- 选 文件 ▸ 导出 ▸ 骨骼(JSON)…。
- 选一个文件夹。导出会写好几个文件,所以它问的是文件夹,而不是文件名。
- 文件会马上写好。没有要选的设置。
文件夹里会有 skeleton.json、一张装着挂在骨骼上的图像的图集 skeleton.png,以及每个网格一张 PNG,以网格图层的名字命名。文件名里放不下的字符会被替换掉;两个网格同名时,第二个文件的名字后面会加一个数字。名字是固定的,所以再次导出同一个项目会替换掉同样的文件。
文件里有什么
它的结构参照了 Spine 的:骨骼、插槽、附件和动画。它不是 Spine 文件,任何官方的 Spine 运行时都读不了它,但它的结构够眼熟,给你的引擎写一个导入器只需要写一次。
| 部分 | 内容 |
|---|---|
| 骨骼 | 每个骨骼图层的每一根骨骼,带着它相对父级的静止姿势。固定骨骼,也就是 IK 目标,不包括在内:它们的效果已经在它们驱动的骨骼里了 |
| 网格附件 | 每一个网格图层,带着它静止时的顶点、三角形,以及每根骨骼对每个顶点的权重 |
| 区域附件 | 通过链接图层刚性跟随一根骨骼的图层,放在图集上,带着相对骨骼的固定偏移 |
| 动画 | 时间轴上每个分组标记一个动画,以标记命名。没有分组标记时,只有一个叫 default 的动画,从入点到出点 |
引擎原本要自己重现的一切,都被烘成简单的数字:IK、骨骼动力学、控制骨骼和动作,都变成普通的旋转、平移和缩放关键帧。某个动作以骨骼权重表达不了的方式改变网格的形状时,那个动画会改为逐帧存下网格顶点的位置,所以引擎不需要知道动作是怎么工作的。
还没包含的东西
- 靠自己的关键帧移动、没有链接到任何骨骼的图层。请把它们导出成精灵图集或 PNG 序列。
- 骨骼图层内部的自动跟随。只有你绑定或绘制的权重,以及用链接图层链上的图层才会被导出;所以一个只靠柔性或区域绑定跟着骨架走的图层,在导出结果里是不动的。
- 在骨骼之上还带着自己位置、旋转或缩放的网格。
- 作为实时约束的 IK、变换、路径和物理约束,事件,以及用来换装的皮肤。
只有真正移动的骨骼才会得到平移和缩放关键帧;大多数骨骼只旋转,所以它们的动画里只有旋转。这让文件保持很小。