Spine 3.8版本已发布
August 5th, 2019
夏天来了,随之而来的是一个全新的Spine版本!可观看上方视频或阅读下文一些重点新功能介绍。欲了解最新更新的详细概述,请参阅编辑器更新日志及运行时更新日志。
网格跟踪
Spine现在可以跟踪图像,自动生成网格。要查看实际操作,可编辑一个网格并选择Trace(跟踪)
。滑块可控制使用多少顶点及如何放置它们。自动跟踪比手动放置顶点要快得多。Spine使用高级算法,即使很少的顶点也能很好地工作,这对于运行时性能非常重要。
多边形纹理打包
Spine现在可以实现多边形纹理打包。在纹理打包器设置中选择时,将使用网格附件顶点尽量紧密地打包图像。这使即可在每个纹理图集页面中放入更多图像,并减小导出大小。
皮肤骨骼和约束
这是此版本中最激动人心的功能之一! 皮肤现在可以有骨骼和约束,只在皮肤活动时才活动。当对项目使用皮肤时,这意味着每个项目可以有自己的骨骼。
新的层级树设置允许在层级树和视口中隐藏不活动的骨骼和约束,这样就可以拥有任意多的皮肤特定骨骼,而不会打乱项目。另外,在运行时不会计算不活动的皮肤骨骼和约束,所以拥有许多带骨骼和约束的皮肤不会影响性能。
皮肤骨骼和约束也可以用在其他方面!例如,皮肤可以使用约束来移动骨骼,这样骨架及其所有动画就可以被不同比例的角色重用。
将骨骼或约束拖放到皮肤上可将其添加到皮肤上。如果需要的话,Spine会自动将其他骨骼和约束添加到皮肤上。层级树显示了一个皮肤图标,表示其位于皮肤中。
如果皮肤骨骼和约束导致了不想要的结果,那么层级树会显示警告图标。例如,如果一个在皮肤外的网格被绑定到皮肤内的骨骼上。
混合和搭配项目
我们提供了一个名为mix-and-match
的新示例项目,它展示了使用皮肤骨骼和约束功能为用户定制头像。
mix-and-match示例项目包含在最新的Spine启动程序中,可从许可证页面安装该启动程序。我们还为该项目设置撰写了深入指南。
软IK
IK约束现在有一个软
设置,在骨骼变直时会减慢速度。如果没有这个,IK骨骼有时会在目标超出范围时迅速就位。
文件夹
现在可以使用文件夹对动画、皮肤和事件进行分组。这使得组织项目变得容易得多,并且减少了查找项目所需的滚动量。
文件夹还不需要使用长前缀以使名称唯一。例如,可以在一个文件夹中有一个皮肤,在另一个文件夹中有一个同名的皮肤。导出项目时,将使用文件夹名为每个对象创建一个唯一名称,如eyes/blue
和clothes/blue
。
标尺
Spine现在提供标尺帮助对齐和创建网格。单击标尺图标可激活该功能。在即将发布的版本中,我们将为标尺添加使用指南和其他改进。
增强PSD导出
现在,你可以将骨架姿态导出为Photoshop PSD,每个附件都有一个图层。这在动画中间绘制一个新附件版本时是很有帮助的,例如不同的透视图或运动模糊。
欢迎屏幕
现在启动Spine将会显示我们全新的欢迎屏幕! 你可以快速地访问常用和最近的项目,或者探索Spine附带的示例项目。我们为每个示例项目创建了walkthroughs走查,说明了它们是如何装配的。
提示部分会在每次启动Spine时显示一个新提示,方便你学习新的装配技巧并提高技能。点击提示可进入我们的提示网页,在那里可一次查看所有提示,并与Spine用户分享链接。
新闻部分是我们发布一般Spine新闻的地方,更新日志列出了最新的Spine开发信息。
Spine窗口顶部的小邮件图标将通知你是否有任何新的更新日志或新闻,方便你随时了解Spine世界正在发生的事情。
新层级树设置
许多Spine工作流对在层级树和视口中看到的内容有不同需求。我们添加了一些新设置,让你更容易专注手头上的任务。
显示所有皮肤附件
设置显示每个皮肤占位符下有附件的所有皮肤。这可以很好地概览皮肤,并使像将附件移动到其他皮肤之类的操作更加容易。
为OS X提供视网膜支持
OS X上的Spine现在可以更好地利用视网膜显示器的像素密度。在视口中呈现字体和图像现在是在高分辨率下完成的。界面缩放
设置控制如何缩放用户界面的其余部分。200%
是默认值,推荐用于视网膜显示器。100%
提供更清晰的图像,但在高分辨率屏幕上可能太小。100%
或200%
以外的值会显示缩放伪影,不建议使用。
小改进
像往常一样,我们还增加了许多小改进,比如层级树视图的选择历史记录。现在可以通过按下PAGE DOWN
回到前面的选择,按下PAGE UP
选择后面的记录。这样就很容易在选定项之间来回跳转,而无需在层级树中滚动。
Spine现在可用不同的颜色标记已变形的顶点,这样就很容易看出哪些顶点已经移动。按住control键,双击一个顶点可选择所有变形或未变形的顶点。此外,在动画模式下,你现在可以重置
仅选定的顶点。
以前重影只显示网格附件的运动矢量,现在也显示区域附件的运动矢量。
现在可以选择多个附件,并同时为它们创建皮肤占位符。这大大加快了创建和填充新皮肤的速度。
运行时改进
自3.7版以来,我们已经解决了200多个问题,包括一些bug修复和新功能。感谢所有报告问题并提供运行时改进建议的用户!有关详细的更新概述,请参阅Spine运行时更新日志及3.8版提交日志。
此版本包含所有运行时中一些突破性的更改:
.json
和.skel
的文件格式发生了重大变化,以支持新功能并减小文件大小。要使用3.8运行时,你需要使用Spine Editor版本3.8.20及更高版本导出文件!- 将
Slot#getAttachmentVertices()
重命名为Slot#getDeform()
以更好地传达其意图。 - 将
Skin#addAttachment()
重命名为Skin#setAttachment()
. - 删除了
VertexAttachment#applyDeform()
并将其替换为VertexAttachment#deformAttachment
。在此字段上设置的附件用于决定是否应将DeformTimeline
应用于当前在应用时间轴的插槽上设置的附件。 - 从
MeshAttachment
中删除了inheritDeform
属性。
所有运行时支持全部新的编辑器功能,包括多边形纹理打包、皮肤骨骼和约束,以及软IK!
减少了.json
和.skel
文件大小
虽然Spine的导出格式已经非常节省空间,我们还是投入更多努力来进一步减少其空间占用!
JSON格式解析器现在假定更多默认值,即不需要显式写入.json
文件的值,这样就可减小文件大小,尤其是存在大量有许多帧的时间轴时。
二进制格式被修改为只存储字符串一次,并在可能的情况下在文件中共享字它们,例如附件名称。当使用有许多关键帧的附件时间轴时,可显著减小文件大小。在一个例子中,该改进将3.5MB的.skel
文件减少到了640KB!
用于spine-ts和spine-as3的二进制格式加载器
长时间以来,我们的大多数运行时都同时支持JSON和二进制格式。然而,我们的web和ActionScript运行时只能处理JSON格式,到现在都是!
我们为spine-ts
和spine-as3
都添加了二进制格式解析。使用这些解析器就像使用JSON解析器一样简单。我们还为spine-ts
和spine-as3
都添加了二进制文件加载示例。
改进皮肤API
许多Spine用户创建用于混合和搭配的资产,通常用于创建自定义头像。我们新的皮肤骨骼和约束功能使其比以往更加强大。为此,我们改进了皮肤API,使在运行时创建自定义皮肤非常容易。
在我们的mix-and-match示例中,一个皮肤表示一个单一项目,比如衬衫、裤子或眼睛,皮肤由一个或多个附件组成。当用户选择应与他们的角色匹配的项时,所需要做的就是将这些项目皮肤合并到一个皮肤中:
mixAndMatchSkin.addSkin(skeletonData.findSkin("skin-base"));
mixAndMatchSkin.addSkin(skeletonData.findSkin("nose/short"));
mixAndMatchSkin.addSkin(skeletonData.findSkin("eyelids/semiclosed"));
mixAndMatchSkin.addSkin(skeletonData.findSkin("eyes/violet"));
mixAndMatchSkin.addSkin(skeletonData.findSkin("hair/short-red"));
mixAndMatchSkin.addSkin(skeletonData.findSkin("accessories/hat-red-yellow"));
mixAndMatchSkin.addSkin(skeletonData.findSkin("legs/pants-jeans"));
mixAndMatchSkin.addSkin(skeletonData.findSkin("clothes/hoodie-blue-and-scarf"));
skeleton.setSkin(mixAndMatchSkin);
就是这样!你可以在上面的实时代码编辑器中尝试此代码。
Skin#addSkin(Skin other)
方法获取other
皮肤的骨骼、约束和附件,并将其添加到此皮肤。为组成角色的所有项目皮肤执行此操作,最终得到一个可以在骨架上设置的单个皮肤。
除了Skin#addSkin(Skin other)
方法之外,我们还添加了Skin#copySkin(Skin other)
方法。此方法将创建所有附件的深层副本,使你可以修改纹理坐标等属性,而不会影响原始附件数据。
为了方便进行深度复制,我们还向每个附件类型添加了一个copy()
方法,它将创建附件的深度副本。你可以使用此机制选择性地深度复制各个附件。对于网格附件,可以选择使用MeshAttachment#newLinkedMesh()
方法:它将创建一个链接到原始网格或原始网格的父网格的链接网格。
最后,我们添加了Skin#getAttachments()
方法,方便你轻松地循环访问皮肤中的所有附件。
这些新增API在所有Spine运行时中都可用!我们在所有运行时示例项目中添加了混合和搭配示例可尝试。
引擎特定改进
当然我们也一直在努力改进我们运行时的引擎特定区域!
对于虚拟引擎,我们增加了不少生活品质改进。现在可在虚拟引擎UI中集成Spine骨架。
spine-unity的一个值得注意的新增功能是支持Unity的'SpriteMask
和RectMask2D
。 我们还进行了大清理,删除了一些扩展API,转而使用我们新的Skin API。
对于MonoGame/XNA,我们重写了示例项目以使其更易遵循。
Spine web播放器现在也可以显示.skel
文件。只需设置SpinePlayerConfig#skelUrl
而非SpinePlayerConfig#jsonUrl
字段!
Löve2D最近更改了其处理RGBA颜色的方式。从Löve2D 0.11开始,颜色组件范围应为0-1
,之前使用的范围为0-255
。spine-love2d运行时可透明地处理这两种范围类型。如前,Spine对象上指定的颜色使用范围0-1
。
请参见运行时更新日志,了解引擎特定更改的完整概述!
即将到来
即将发布的3.9版本将聚焦我们之前提到的秘密项目。我们迫不及待地想告诉你更多有关它的新闻!
感谢社区中报告问题、测试beta版及提供新功能建议的每一个人。你们的贡献是无价的!
祝大家快乐地创作动画! Spine团队
在Spine论坛上讨论本文。