Spine 4.2: 物理革命

April 27th, 2024

我们很高兴地宣布新的 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 论坛上讨论本文。

Import PSDs directly, no Photoshop scripts needed

February 24th, 2024

We've just released Spine 4.2.10-beta where we've added the ability for the Spine editor to process PSDs directly. This is great for many reasons:

  • You are no longer forced to use Photoshop -- use any image editor that can save a PSD file.
  • All the tags from the PhotoshopToSpine script are supported.
  • It is much faster! On a large PSD (200MB, 215 layers) it finishes in about 25% of the time (6 seconds versus 23) compared to the PhotoshopToSpine script.
  • Process the PSD and import it into Spine in one step.

To try it out, go to Import Data and choose a PSD file:

There are other great things in the 4.2.10-beta changelog:

  • Constraint folders make it easier to use and organize many constraints, especially great for physics.
  • Draw order folders make it easier to organize your slots so you don't have one very long list to deal with.
  • Lots of important fixes and improvements.

Quick overview of the new Spine PSD Import and Slot and Constraints folders:

Jump over to the Spine forum to discuss this post!

新的导出 shell 脚本

February 15th, 2024

简化你的 Spine 导出流程

使用我们新的 shell 脚本一次性导出你的所有项目!该脚本会搜索.spine项目文件并导出找到的每个项目。通过将一个导出设置文件放置在项目文件旁边,每个项目都可以使用不同的导出设置。

使用脚本导出有很多优点:

  • 一次性导出任意数量的项目文件。
  • 你的导出始终使用正确的设置。无需依赖 动画师每次都使用正确的设置。
  • 软件构建过程中可运行导出脚本,确保 每个版本始终具有最新的导出文件。动画师无需 记住在每次更改项目文件后执行导出。
  • 更新到较新的 Spine 版本时,你的所有项目必须再次导出。当你设置了导出脚本时,这会变得非常简单!

开始使用

如下视频展示了如何使用这些脚本,或者继续阅读本文的分步说明。

下载导出脚本

下载适合你的操作系统的脚本:

你可以在spine-scripts GitHub 存储库上找到有关这些脚本的更多信息。


配置脚本

当使用一个文本编辑器打开该脚本时,可在顶部看到Customization Section(自定义部分)。以下是 spine-export.bat 的摘录(spine-export.sh 类似):

在运行脚本之前应检查前三个设置:

  1. SPINE_EXE Spine 可执行文件的路径。如果此处找不到 Spine,脚本将在其他常见安装位置查找。

  2. VERSION 用于执行导出的 Spine 编辑器版本。保持 Spine 编辑器和运行时版本相同非常重要.

  3. DEFAULT_EXPORT 脚本会在与 Spine 项目相同的文件夹中查找导出设置 JSON 文件。如果未找到,则使用此处指定的导出设置。常见默认设置有 4 个快捷方式:jsonjson+packbinarybinary+ pack。或者,你也可以指定导出设置文件的路径(有关更多信息,请参见下文)。

运行脚本

Windows

在 Windows 上,有几种运行该脚本的方法:

  1. 将一个文件夹拖放到 spine-export.bat 文件上。
  2. 双击 spine-export.bat 文件打开一个 CMD 窗口,然后 输入或粘贴一个路径,或将一个文件夹拖放到该 CMD 窗口上。
  3. 从一个 CMD 提示符运行 spine-export.bat 文件,然后输入或 粘贴一个路径,或将一个文件夹拖放到该 CMD 窗口上。
  4. 从一个 CMD 提示符运行 spine-export.bat 文件,路径为 第一个参数。
spine-export.bat path\to\spine\project\folder

该脚本会搜索指定的文件夹和所有子文件夹。如果它找到一个 .spine文件,则将执行一次导出。


macOS 或 Linux

在 macOS 或 Linux 上,在运行 spine-export.sh 之前,你必须首先授予它执行权限。打开 Terminal,导航到脚本所在的目录,然后使用以下命令授予执行权限:

chmod +x spine-export.sh

要运行该脚本,请指定 ./spine-export.sh 以及包含要导出的 Spine 项目的目录路径。例如:

./spine-export.sh /path/to/spine/projects/directory/

如果执行脚本时不指定路径,脚本会提示输入路径。

该脚本会搜索指定目录和所有子目录。如果它找到一个 .spine 文件,则会执行一次导出。


导出设置

要指定详细的导出设置,你需要准备一个导出设置 JSON 文件。

保存导出设置

Spine 编辑器中的导出对话框左下角有一个Save(保存)按钮,可将当前导出设置保存为一个 JSON 文件。

保存的导出设置文件的扩展名将为“.export.json”。

如果在导出设置中选中了Pack(打包),则纹理打包器设置也会保存在.export.json文件中。


默认导出设置

使用一个文本编辑器打开脚本文件,并将DEFAULT_EXPORT的值更改为.export.json文件的路径。例如:

DEFAULT_EXPORT=/path/to/default.export.json

如果一个项目文件旁边没有找到.export.json文件,将使用这些设置。

请注意,导出的文件将使用Customization Section(自定义部分)中的DEFAULT_OUTPUT_DIR输出,而不是默认.export.json文件中的输出路径。

每个项目多个导出设置

要使用不同的设置导出一个 Spine 项目,请准备一个包含这些设置的.export.json文件并将其保存在与 Spine 项目相同的文件夹中。例如,文件系统层次结构可能如下所示:

<运行脚本时指定路径的文件夹>
      ├── 01
      │ ├── skeleton1.spine
      │ ├── skeleton1.export.json
      │ ├── images
      ├── 02
      │ ├── skeleton2.spine
      │ ├── skeleton2.export.json
      │ ├── images
      └── 03
         ├── skeleton3.spine
         ├── skeleton3.export.json
         └── images

.export.json文件名不需要与项目文件名匹配。

同一项目多次导出

要使用不同的导出设置多次导出一个项目,请准备并包含多个.export.json文件。例如,要以二进制格式和 PNG 序列导出骨架数据,你的文件系统层次结构可能如下所示:

<运行脚本时指定路径的文件夹>
      ├── 01
      │ ├── skeleton1.spine
      │ ├── skeleton1_Binary.export.json
      │ ├── skeleton1_PNG.export.json
      │ ├── images
      ├── 02
      │ ├── skeleton2.spine
      │ ├── skeleton2_Binary.export.json
      │ ├── skeleton2_PNG.export.json
      │ ├── images
      └── 03
         ├── skeleton3.spine
         ├── skeleton3_Binary.export.json
         ├── skeleton3_PNG.export.json
         └── images

混合默认和自定义设置

同一文件夹中没有.export.json文件将使用默认设置导出:

<运行脚本时指定路径的文件夹>
      ├── 01
      │ ├── skeleton1.spine
      │ ├── skeleton1_Binary.export.json
      │ ├── skeleton1_PNG.export.json
      │ ├── images
      ├── 02
      │ ├── skeleton2.spine <此骨架以默认格式导出>
      │ ├── images
      └── 03
         ├── skeleton3.spine
         ├── skeleton3_Binary.export.json
         ├── skeleton3_PNG.export.json
         └── images

修改脚本

欢迎你使用Spine的命令行界面编写自己的脚本或修改我们的脚本以满足你的需求。我们在脚本中编写了注释来描述它所做的一切,并且 README文件更详细地介绍了它的工作原理。


你觉得本教程有帮助吗?我们很乐意在Spine论坛中听到你的反馈!