Spine 4.2: 物理革命

我们很高兴地宣布新的 Spine 4.2 版本发布了!新版本有大量的新功能,其中许多功能是我们自 10 多年前首次发布 Spine 以来一直梦想的,现在终于实现了!

让我们来深入了解一下此版本有哪些亮点吧!

物理

Spine 中的物理功能是革命性的!它可以通过模拟现实世界的物理原理来自动移动骨骼。可为你节省大量时间,同时使你的动画看起来更棒!

四处拖动她!

你无需再费力地为头发、衣服及其他物品设置二次动画。任何自然移动的物体都可以利用物理功能自动移动。

除了节省时间之外,物理功能还为你提供动态运动。无论是动画还是角色在游戏世界中的移动,都能做出流畅逼真的反应。

PSD 导入

Spine 现在可以直接读取 PSD 文件以导入你的艺术作品。这将你从 Adobe Photoshop 中解放出来,允许你使用任何可保存 PSD 文件的图像编辑器。

更棒的是,它还比 PhotoshopToSpine 脚本快大约 10 倍!

像素模式

当使用 Spine 创作像素艺术时,新的像素模式会转换区域附件以匹配屏幕像素。这可以确保你的附件不会因为像素的一小部分而变得模糊。

还有一个新的高亮显示像素热键,可以高亮显示与屏幕像素不匹配的附件。这样可以轻松查看附件可能模糊的位置,以便进行更正。

约束管理

4.2 为具有许多约束的项目带来了一些改进:

  • 复制约束会询问你是否要复制所有骨骼。这可以节省大量时间,例如在设置肢体时。
  • 当选择多个约束时,现在可一次更改它们。
  • 复制约束并将设置粘贴到另一个约束,即使不同骨架也可以。
  • 可从约束中添加或删除单个骨骼。
  • 通过可见点关闭约束,无需更改混合。

权重工具

焊接功能会匹配网格之间的权重,有效地将它们焊接在一起。这可使多个网格进行相同的变形,就像是一张图像一样。

除了非常适合无缝使用多个网格,焊接还允许你在添加衣服、面部表情、剪裁附件等时应用现有的权重,从而节省时间。

最后,你现在可以将权重复制并粘贴到其他顶点,甚至可以复制到其他网格上。

循环曲线

循环动画的第一个和最后一个关键帧的曲线手柄现在已同步。有时,一些小事情可以节省你很多时间!

文件夹

绘制顺序文件夹可方便你为大型骨架组织插槽。可通过拖动文件夹而非许多单个插槽来调整绘制顺序。

约束文件夹使复杂的骨架更易于管理。中键单击一个文件夹可选择所有子项。

根骨骼运动

我们的 spine-unity 运行时可以为你执行根骨骼运动!

通常,你可以在原处设置行走循环动画,然后在运行时编写代码,使其以正确的速度穿过游戏世界。但当运动很复杂时,比如拖着脚步的僵尸,代码会很难匹配动画。

通过根骨骼运动,行走循环会随着运动而呈现动画。在运行时,我们从动画中删除运动并将其应用到游戏世界位置。由此产生的游戏世界运动与动画完美匹配。

更先进的是,我们的根骨骼运动增量补偿功能允许你无缝调整跳跃动画的距离。这样动画师就可以在 Spine 中仔细设计跳跃运动,而程序员仍然可以控制跳跃在游戏世界中实际移动的距离。

新运行时

自 4.1 版本以来,我们新增了许多运行时!

通过 spine-godot,我们为最流行的开源游戏引擎提供了一个运行时。

对于喜欢更直接方法的人们,我们创建了spine-sdl,其可以与我们的 spine-c 或 spine-cpp 运行时一起使用。

我们已经开始通过 spine-flutter 涉足移动应用程序。很快还会有更多推出!

我们的 spine-phaser 运行时完全替代了旧的 Phaser Spine 插件。我们自己为 Phaser 提供 Spine 运行时,可以确保及时更新并减轻 Phaser 团队的负担。

最近,我们在我们的武器库中新增了 spine-haxe。它可以与 OpenFL/Lime 上的 Starling 一起使用。我们还计划支持 OpenFL 上的其他框架,例如 HaxeFlixel

新运行时列表中的最后一个是 spine-pixi,它是 PixiJS 的官方 Spine 运行时。与 spine-phaser 一样,我们希望确保我们的用户在官方支持下及时获得更新。


这些运行时已可用于生产,并且有大量代码示例可以帮助你入门。我们目前正在努力完成相应的文档,这些文档将在未来几周内准备好。

Unreal Engine 5.3 支持

Unreal Engine 5.3 Epic 改变了资产的处理方式。同一文件夹中不能再有两个同名但类型不同的资产。

为此,你现在需要确保骨架数据文件(.skel.json)和图集文件具有不同的前缀。例如,skeleton-data.skelskeleton.atlas。或者,你可以将骨架数据和图集文件分开放入单独的文件夹中。

此外,Unreal Engine 不允许 spine-ue 正确访问在较旧的 Unreal Engine 版本中创建的资产。这意味着我们无法提供自动升级路径。如果你想将项目迁移到 Unreal Engine 5.3,你须手动重建并重新连接你的资产。

Unity

在 Unity 中,默认情况下任何变换运动都会与骨架的物理约束无缝集成。只需移动骨架,物理就会做出适当的反应。如果默认设置达不到要求,对物理继承设置进行小更改即可解决问题。不要错过新的物理约束示例场景,务必试一试这些骨架。

SkeletonGraphic 组件也有新功能。可设置新的布局比例模式以自动使骨架适合其 RectTransform 边界。另外,你是否曾因 SkeletonGraphic 显示不正确或找不到正确的检查器和材质设置而苦恼?有了新的自动检测按钮,那些日子已结束了!甚至还有一个检测材质按钮,可自动从我们新扩展的材质集分配正确的材质。

如果没有着色器改进,任何版本都是不完整的。我们现在支持所有 Spine URP 和 Spine/Sprite 着色器着黑色(Tint Black),并增加了 URP 混合模式着色器来完善此更新。

其他运行时更改

所有运行时都支持所有新的编辑器功能并已可用于生产!请参阅Spine 运行时更新日志,了解游戏引擎和语言特定的更改。

因为增加了物理功能,我们必须更改一些 API:

  • Skeleton.updateWorldTransform() 现在需要一个额外的 physics 参数来控制物理更新和应用的时间。在大多数情况下,你需要使用 Physics.update
  • 为了驱动物理模拟,物理代码需要知道已经过去了多少时间。该信息存储在每个骨架中。如果你的帧时间提前,请确保通过调用 Skeleton.update(deltaTime) 通知骨架。
  • 我们已将 TransformMode 重命名为 Inherit。除非你手动设置变换模式,否则此更改应不会影响你的代码库。
  • 我们已将 TrackEntry.attachmentThreshold 重命名为 TrackEntry.mixAttachmentThreshold,并将 TrackEntry.drawOrderThreshold 重命名为 TrackEntry.mixDrawOrderThreshold

除了这些 API 更改之外,如果你想使用 Spine Runtimes 4.2,还须使用 Spine editor 4.2 重新导出骨架。有关更多信息,请参阅我们的 Spine 版本控制指南

后续

我们对 Spine 4.2 非常满意!新功能易于使用且非常强大。物理是游戏规则的改变者,可为你节省大量时间,同时让你的动画栩栩如生。

在发布像这样的大版本之后,我们希望后续再发布一个小版本,做些改进并提高生活品质。在 4.3 中,我们将重点关注简化你的工作流程。目标是通过减少执行常见任务所需的工作量来为你节省时间。

感谢在社区中报告问题、测试beta版并提供建议和反馈的每个人,各位的意见都非常宝贵,正是你们帮助塑造了这些新功能!

祝大家快乐创作动画!
–Spine 团队

Spine 论坛上讨论本文。