Spine 3.7已发布

January 4th, 2019

Spine 3.7正式发布了,为大家带来了许多新功能、改进及一些bug修复!

完整内容请见编辑器更新日志及我们的运行时更新日志。所有运行时都是最新的并且兼容3.7版本。下面是一些值得注意的新功能及其他更改。

音频支持

在3.7版本中,我们增加了对音频的支持!可在Spine编辑器中直接预览、同步和迭代图形和音频资产。

其工作原理是在层级视图中增加一个名为音频的新节点:

音频树节点

它与图片节点相似: 装配模式下指定路径中发现的所有音频文件都列在音频节点下。Spine目前支持WAV、MP3及OGG音频格式。

在给项目添加了一个音频文件后,可通过将音频文件丢到事件节点或选择该音频文件后点击新建事件按钮来创建事件,与该音频文件关联的新事件可在动画中设为关键帧。

音频事件

如你所见,事件有3个新属性:

  • 音频路径指定了与事件关联的音频文件的位置。设置好后,在动画中触发此事件的关键帧时,将播放音频文件。
  • 音量可设置播放音量。
  • 平衡可以设置立体声的左右声道音量,或者设置单声道的平移。

在设置音频事件关键帧时,可以设置与装配值不同的音量和平衡值:

音频关键帧

在此图中,为Spineboy行走动画的脚步音频事件设置了两次关键帧。在摄影表中,音频事件的持续时间由一条紫色的水平线表示。在摄影表上面,可看到新的音频视图。它与摄影表同步,显示所有活动音频事件的波形,可控制主音量和用于输出的音频设备。拖动音频视图时间轴或摄影表时间轴也会拖动音频。

我们也更新了导出系统来处理音频。在导出动画到视频时,Spine也将包含音频。

音频播放是编辑器仅有的功能。在运行时,有3个额外的事件属性可用,但Spine运行时不管理加载和播放音频。在运行时同步音频和Spine动画仍然像以前一样管理: 使用AnimationStateTrackEntry注册一个事件处理程序来触发播放你想要的每个事件的音频。

伸展、压缩和统一反向动力学

伸展IK

Spine支持一个和两个骨骼反向运动学约束,使一个或两个骨骼指向另一目标骨骼。然而这些约束以前是硬性的:即IK链中的骨骼不会自动伸展或压缩。

在Spine 3.7中,我们为IK约束增加了更多设置: Spine 3.7 IK设置

单个骨骼和两个骨骼IK约束都有伸展选项。启用时,IK链中的所有骨骼将根据需要伸展以触及目标骨骼。但是,当目标骨骼距离小于原始骨骼的长度时,不会压缩骨骼。

对于单个骨骼IK约束,压缩设置会在到目标骨骼的距离小于约束骨骼的长度时对约束骨骼进行压缩。

压缩伸展都可以设置关键帧。

对于伸展和压缩,受约束骨骼的附件和子骨骼将在该骨骼的X轴上缩放。对于单骨骼IK约束,还可启用统一设置,即可在两个轴上执行缩放。

导出界面重新设计

Spine 3.7导出

在Spine 3.7中,我们重新设计了导出对话框,并增加了大量新的导出功能。

GIF导出器现在使用一种高度复杂的量化算法来保存动画颜色,并尽量保持在GIF格式的256色约束内。不仅在每帧内仔细选择颜色,而且还会短暂跨帧,以防止动画期间闪烁。我们还在导出设置中增加了许多控件,方便用户为其特定动画找到最佳参数,以制作最佳GIF。

我们还增加了更多导出格式。APNG是一种类似GIF的动画图像格式,但支持全色和透明。所有浏览器都支持这种格式(Microsoft Internet Explorer和Microsoft Edge除外),包括在移动设备上,是GIF的一个很好的替代选择。

此外,还增加了导出Adobe Photoshop PSD格式的支持,动画的每一帧将被导出到一个单独的层。这在以不同的视角绘制额外附件时非常有用,可为VFX和其他逐帧动画应用后期特效,也可将动画作为单个文件导入其他软件。

你可能已经注意到了上图右上角的预览按钮。让我们看看点击它时会发生什么!

导出预览

预览呈现的图像与导出时完全相同,包括由压缩或其他导出设置引入的项目。

通过点击范围可选择要导出的帧子集:

导出范围

一个请求最多的功能是裁剪设置:

导出裁剪

你可以指定视区的尺寸和位置用于场景导出!

所有视频导出现在也支持导出音频。

视区像素网格缩放 (3.7.14)

我们有一些用户,例如来自Axiom Verge的名人Tom Happ将Spine用于像素艺术。我们增加了视区像素网格缩放,以支持Spine中的像素艺术工作流。 启用时,Spine将以1:1的比例呈现像素艺术,然后将生成的图像缩放到视区大小,保留了所有像素优点:

Spine 3.7像素艺术

该功能使你可以在Spine编辑器中预览由复古风格像素缩放和旋转产生的混叠及其他成品。

可以在Spine设置中启用此功能。欲了解更多有关此主题的信息,可查看此论坛帖子

合并皮肤

皮肤视图

另一个经常请求的功能是在Spine编辑器中同时查看多个皮肤。以前这只能在运行时完成。

现在我们添加了一个新的皮肤视图。在上方显示了所有可用皮肤列表,每个皮肤有一个大头针。下方是当前固定皮肤列表。从最下面的皮肤开始,所有固定的皮肤都是同时可见的。可以拖动底部列表中的固定皮肤来更改应用它们的顺序。

在皮肤视图中选择单个皮肤时,它将成为活动皮肤。在视区中只能选择和编辑活动皮肤的附件。活动皮肤总是可见的 -- 如果没有固定,将被视为最后应用。

如上图,皮肤视图对于为角色的不同装备和身体部分混撘皮肤特别实用。它还可以很好地满足你的化妆聚会欲望,因为我们总是花费很多时间来尝试新的服装搭配!

输入搜索

输入搜索

层级树视图现在有一个文本框,方便在层次结构中搜索项目。按下enter键将聚焦文本框,然后输入一个值并按enter(或F3)键可选择下一个搜索结果。使用shift + enter(或shift + F3)可选择上一个结果,按escape可清除文本框。

你也可以在弹出的层级树筛选器中选择文本搜索筛选器复选框。选中后,只有与搜索文本匹配的元素才会显示在层级树视图中。

复制皮肤和创建占位符

复制皮肤

复制皮肤现在增加了许多新的便利选项,包括自动重命名选项、使用链接网格,以及复制网格变形关键帧,在设置新皮肤时可节省大量时间。

皮肤占位符

从现有附件创建新的皮肤占位符也同样方便。此外,可为每一个现有皮肤复制该附件!

复制/粘贴顶点

复制/粘贴顶点

现在可以选择顶点,复制和粘贴它们。虽然是个小功能,但很有用,可用于网格、路径和边界框。只要选择相同数量的顶点,这些顶点甚至可以粘贴到不同的附件。

命令行改进

命令行界面

我们为命令行导出增加了更多功能!

-m--clean参数可删除Spine项目中不必要的动画关键帧。还可用于导出Spine JSON或二进制格式。你可以将其作为资产管道的一部分添加,以确保运行时文件尽可能小,或者批量清理Spine项目。

新的--import参数可将JSON、二进制或项目的骨架导入到另一个项目。如果要将现有骨架合并到单个Spine项目文件这会很方便。当与--scale参数结合使用时,还可以从命令行缩放整个项目。

可以在命令行导出文档中找到这些新参数的示例。

运行时改进

我们花了很多精力来改进Spine的运行时部分!有关完整概述和引擎/框架特定的添加和更改,请参阅Spine运行时更新日志3.7版提交日志.

一些添加和更改对所有运行时都是通用的,只有少量重大的更改,它们应该不难修复:

  • 完成事件将被发送给AnimationStateTrackEntry的侦听器,用于循环的、零持续时间的每帧动画。
  • 骨架的flipXflipY属性已被scaleXscaleY所取代。使应用变换更简单,也更强大,即使一些骨骼不继承缩放,也可缩放整个骨架。
  • MixPose已被重命名为MixBlend。除非直接使用Timeline API或自己修改了AnimationState,否则此更改不太可能影响现有代码。

所有运行时中最值得注意的增加是:

  • 相加动画混合。通常,在分开轨道上播放动画时,较低轨道的姿势会被较高轨道的覆盖。使用一个相加轨道,其姿势将被添加到较低轨道上。这可实现如混合多个面部表情那样的效果,如25%愤怒、25%悲伤及50%开心。要启用轨道相加,可调用TrackEntry#setMixBlend(MixBlend.add)。要指定混合比例,可设置TrackEntry#alpha。相关讨论可查看此论坛帖子
  • TrackEntry有一个新字段holdPrevious。可用来抵消导致使用许多轨道时一些动画部分“下降”的AnimationState的限制。有关此问题的完整讨论和我们推出的解决方案,可见此论坛帖子
  • 支持伸展和压缩IK约束,如上所述。
  • 支持音频事件。可以对EventEventData查询audioPathvolumebalance字段来实现音频播放。

自3.6版以来我们已解决了200+运行时问题,包括bug修复及功能增强。没有广大用户的帮助是无法完成的,故在此感谢所有报告问题的用户,希望大家保持这个传统!

spine-cpp

spine-cpp

我们还没有谈及Spine运行时的最大的增加: spine-cpp! 这一切始于Stephen Gowen的一个无意的[pull请求],Stephen Gowen为c++参考运行时提供了一个很好的开端。经过一个多月的努力,我们终于完成了可供用户使用的第一个版本。

但是我们的Unreal Engine、cocos2d-x、cocos2d-objc和SFML Spine运行时都是在spine-c(我们的参考实现C89兼容版本)之上构建的。将这些运行时更改为spine-cpp并删除其spine-c的对应部分不是一个好选择,因为这可能会干扰用户。

为此,我们决定为我们勇敢的beta测试用户推出两个开发分支: `3.7-beta和3.7-beta-cpp,3.7-beta唯一增加的是SFML运行时的c++版本,在3.7-beta-cpp中,Unreal Engine和cocos2d-x运行时已切换到spine-cpp,在Spine 3.7的beta阶段为我们提供了很好的服务,许多用户探索了spine-cpp的惯用c++ api,并报告了一些问题,为最终成品做好了准备。

在发布的3.7版本中,我们已决定将基于spine-cpp的分支作为默认。但如果你是Unreal Engine或cocos2d-x用户并有一个相当大的spine-c代码库,我们也为你提供了3.7-c分支版本。

接下来,我们将继续在3.7默认分支中维护spine-cpp和spine-c,并将各运行时更改整合到3.7-c分支中,但不会将Unreal Engine和cocos2d-x运行时更改从3.7默认分支移植到3.7-c分支。对于Spine 3.8,我们会继续维护spine-c,但不会继续维护基于spine-c的Unreal Engine和cocos2d-x运行时。

Spine研讨会

Spine研讨会

今年早些时候,我们推出了自己的研讨会教学产品!由Esoteric Software资深教师主讲,提供现场和网络教学两种教学方式。

过去数月我们与学员们度过了一段美好的时光!如果你对Spine研讨会感兴趣,请前往我们的研讨会页面立即申请一个研讨会。

Spine教育机构

Spine教育机构

除了目前提供的研讨会外,为了推广使用Spine,我们还与全球教育合作伙伴联系制作了一个教授Spine课程的学校、大学及顾问目录。

我们很乐意在此目录中加入你的名字!如果你提供Spine研讨会和/或培训,请前往我们的教育机构页面提交你的课程和研讨会信息。

示例

Spine示例

我们新的示例页面上有Spine自带的各示例项目的详细描述。这是一个很棒的资源来学习各种装配技术,并让Spine的示例能派上用场。

Twitch

Twitch上的Spine流视频

我们的动画大师Erika Inzitari今年开通了Esoteric Software Twitch频道,每周都会直播她的Spine作品。她的流视频有许多Spine工作流程干货,极力推荐大家观看!这也是一个很好的机会在线向她提问及观看Spine中复杂的装配。

她的所有流视频都上传到了Esoteric Software YouTube频道方便喜欢点播视频的用户观看。每个YouTube视频的描述都有主题和链接,你可以跳转到感兴趣的部分。

Erika还发明了Twitter主题标签#skeletember,她会在九月的每一天使用这个标签发布一条装配技巧推文。请大家关注她!

后续

随着3.7版发布后,我们现在可以专注于新的曲线编辑器及其他一些功能,如分开键控X和Y移动。在运行时方面,我们将持续提升性能、修复bug及增加新游戏引擎支持(Godot和Construct在我们的优先名单中)。最后,我们还有一个秘密项目在进行,希望不久后就会发布!

由衷感谢所有报告错误、测试beta版及建议新功能的用户,没有大家的帮助就不会有这次新版本的发布!

祝大家享受动画制作的乐趣! Spine团队

Spine论坛上讨论此博文。