总述(Overview)

Spine 能帮你把分散的图片打包成一张完整的纹理贴图集或精灵表(spritesheet)以便在运行时更有效率的渲染。Spine 的纹理打包器(texture packer)是一个通用工具。它即可以用于为 Spine 的骨骼打包纹理,也可以单独运行为你打包应用程序所需的所有图片资源。

大多数图形API(如: OpenGL)的工作原理是这样的,绑定一张纹理,然后渲染,完成之后再绑定一张再渲染,如此往复直到全部完成。绑定纹理相对来说需要消耗大量的系统资源,所以理想的情况是把一堆小图储存为一张大图,然后就可以一次绑定,再将各区域分多次渲染。Spine 能有效的将大量小图打包成大图,每张小图的定位信息储存在一个采样文件中,它们可以通过名称在程序中引用。

Spine使用了多种先进打包算法。对各种尺寸进行海量尝试,然后选择最优打包方案。

打包(Packing)

纹理打包器可以通过两种方式运行:

1) 当导出 “JSON” 或 “二进制” 动画数据时,勾选`CreateAtlas`:

这个方法可以便捷的同时导出动画数据和打包纹理,但是每套骨架会各自分别打包输出图片,并且忽略目录结构[directory structure](#Directory-structure)和JSON文件[JSONfiles](#JSON-Configuration)。要将多套骨架的图片信息打包在一起,请使用下面的方法运行打包器。

2) 在主菜单中选择`Texture Packer:

然后指定图片路径进行打包:

输入目录:(Input directory),输出目录:(Output directory),贴图集名称:(Atals name)

设置(Settings)

有许多参数用于控制如何打包图片:

一眼看上去可能让人望而生畏,但大多数情况下用默认设置就可以了。需要特别注意的地方有: 1) 最大长/宽值(Max width/height), 2) 是否勾选了预乘alpha(premultiplied alpha), 3) 是否勾选了去除白边。 **如果使用了网络,那应该取消去除白边(Strip whitespace X/Y)。

注:proper blending(链接)、filtering artifacts(链接)

目录结构(Directory structure)

Spine 能为应用程序一次性打包所有图片。给定一个目录,它就会递归扫描其下的图片文件。将当前目录和所有子目录中 Spine 找到的图片文件拼成一张更大的纹理贴图,称作”页”。如果图片大小超过了一页的最大尺寸,将会分成多页。

同一个目录下的图片会打包在同一页上。如果一页能放下所有图片,那就不需要分目录存放,因为每个应用程序只绑定一张纹理。否则,把图片分类放在不同的子文件夹下,可以最大限度地减少纹理绑定次数。

例如:应用程序可希望把所有的 “game” 图片和 “pause menu” 图片分别放在不同的文件夹里,这样连续绘制这两张图片只要:先绑定 “game” 并绘制(绑定一次),完成后再绑定 “pause menu” 再绘制(再绑定一次)。如果这些文件都放在同一个目录下,将会被混合打包在多个页面中,每个页面中都有 “game” 和 “pause menu” 图片。这样一来,在绘制 “game” 和 “pause menu” 时都需要执行多次绑定纹理的操作,而无法像之前那样各绑定一次就能完成绘制。

按文件夹分类图片,还能将纹理设置相关的图片组织在一起。比如每张图运行时的内存格式(RGBA, RGB, 等等),过滤(nearest, linear, 等等)。图片需要不同的纹理设置,就要分为不同的页面打包,这时应该将图片用文件夹分开放置。

用文件夹来组织,还是用 Spine 将所有子目录打包到一起,请看 `Combine subdirectories` 设置。

为了避免子目录的路径出现在 atlas 文件的图片名称中,请看 `Flatten paths` 设置。

JSON 结构(JSON Configuration)

每个文件夹可以包含一个 “pack.json” 文件用于具体指定此文件夹下图片的打包设置。每个子文件夹继承其父级的设置。子文件夹中的设置会覆盖父级的设置。

下面是一个 JSON 文件的例子,包含了所有可用的设置。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
{
    pot: true,
    paddingX: 2,
    paddingY: 2,
    bleed: true,
    edgePadding: true,
    duplicatePadding: false,
    rotation: false,
    minWidth: 16,
    minHeight: 16,
    maxWidth: 1024,
    maxHeight: 1024,
    square: false,
    stripWhitespaceX: false,
    stripWhitespaceY: false,
    alphaThreshold: 0,
    filterMin: Nearest,
    filterMag: Nearest,
    wrapX: ClampToEdge,
    wrapY: ClampToEdge,
    format: RGBA8888,
    alias: true,
    outputFormat: png,
    jpegQuality: 0.9,
    ignoreBlankImages: true,
    fast: false,
    debug: false,
    combineSubdirectories: false,
    flattenPaths: false,
    premultiplyAlpha: false,
    useIndexes: true,
    grid: false,
    scale: [ 1 ],
    scaleSuffix: [ "" ]
}

注意这是 libgdx 的 “minimal” JSON格式,因此双引号通常是可选的。

不是所有的设置都需要指定,可以省略部分或全部。例如:取消填充(padding)和合并目录(combinesubdirectories)那么 JSON 可以写成这样:

1
2
3
4
5
{
    paddingX: 0,
    paddingY: 0,
    combineSubdirectories: false
}

在设置 [Settings](#Settings)对话框有一个保存JSON `Save JSON` 按钮能保存当前设置。此文件会命名为 `pack.json` 将它放要输入图片的文件夹下就成了此目录的设置文件,用不着手动创建设置文件。

九宫格(Ninepatches)

九宫格一般不用于 Spine 骨骼,但有其它的用途。

不算扩展名,如果一个图片文件的名称以”.9″结尾,那么它将被识别为九宫格。可以手动创建九宫格图片,也可以使用这个工具[thistool]。图片必须有 1px 的透明边框。左上边缘可以有一条连续的黑线用于定义切割信息,九宫格中哪部分将会伸展。在右下边缘可以有一条连续的黑线用来定义填充信息,内容如何在九宫格中填充。图片打包时,1px的透明边框会被移除,切割和填充信息会储存在 atlas 数据文件里。

图片索引(Image indexes)

图片索引一般不用于 Spine 骨骼,但有其它的用途。

如果一个图片文件名以下划线加数字结尾(例如: `animation_23.png`),这个数字将被识别为索引,图片的索引会储存在 atlas 文件中。储存图片文件名时不包含下划线和索引。这样便可以通过索引在一个列表中检索这些图片。这样能更方便的打包精灵动画避免搞乱帧的顺序。

来源网址:http://qgc.qq.com/222369324/t/37

转载于:https://www.cnblogs.com/eastnwood/p/4303851.html

骨骼动画编辑器Spine的纹理打包器(texture packer)相关推荐

  1. Spine之六——纹理打包Texture packing

    Texture packing总述(Overview) Spine 能帮你把分散的图片打包成一张完整的纹理贴图集或精灵表(spritesheet)以便在运行时更有效率的渲染.Spine 的纹理打包器( ...

  2. cocosd-x 下 2D 骨骼动画编辑器选择的闲聊

    前言:没想到好多年没来,CSDN 竟然支持了 Markdown 的编辑,而且还是直接 fork 了 StackEdit 过来的,开始我还在想是否要换个写博客的地方,毕竟我不是一个很勤快的人,而且我也想 ...

  3. 纹理打包器 TexturePacker

    纹理打包器 TexturePacker 序 TexturePacker介绍 TexturePacker简单使用 准备工作 添加精灵和生成 纹理贴图集json 序 在前端调用图片时,可能会使用到雪碧图( ...

  4. Cocos2d-x的骨骼动画龙骨Spine和Armature

    Spine的基本用法 //骨骼动画Spine,需要包含Spine/spine-cocos2dx.h头文件,命名空间spine auto skeleton=SkeletonAnimation::crea ...

  5. 游戏开发工具之纹理打包器-3.使用GDI+绘图

    上一次我们实现了把我们要的图片添加到CTreeCtrl控件里去,并显示图片的缩略图,现在开始我们要讲比较重要的部分--绘图区.为了实现能编辑图片的功能,绘图区应该具有如下功能. 1.  添加删除图片. ...

  6. spine 导出纹理_Spine 纹理打包Texture packing_官方文档中文版

    马上注册,加入CGJOY,让你轻松玩转CGJOY. 您需要 登录 才可以下载或查看,没有帐号?立即注册 x 本帖最后由 笑虾 于 2014-10-7 20:45 编辑 欢迎入群  Spine2D骨骼动 ...

  7. spine 导出纹理_Spine( 动画制作软件 )中文版分享

    Spine是一款专业级的2d骨骼动画编辑软件,它是专门针对游戏所开发的,提供了多样化的道具和成熟实用的功能,旨在为设计者提供最高效和最简洁的工作流程,以创建游戏所需要的精美动画.该软件所占用的空间非常 ...

  8. 在C++中自己实现动画系统(一):骨骼动画与编辑器

    转:https://www.gameres.com/478091.html 每套游戏引擎都会包含动画系统:一些游戏引擎会采用最简单的直播动画的形式(如Unity的Animation方案)仅支持简单动画 ...

  9. 使用Spine制作柔性的骨骼动画详解

    缘起是要实现一个需求,即寻找一个能制作如下图所示腿部弯曲动画的工具. 由于要求不能使用序列帧动画,因为一旦弯曲效果不理想需要全部重画,美术的工作量会很大,而且序列帧动画的图量也会很大. 一番寻找后,发 ...

  10. 骨骼动画详解-Cocos Studio

    任珊原创,首发于泰然,转载请注明出处 https://github.com/chukong/cocos-docs/blob/master/manual/framework/native/v3/spin ...

最新文章

  1. 简易mysql数据库调优_MySQL数据库简单实用的优化方法
  2. 通过nginx配置文件抵御攻击
  3. 【算法】N Queens Problem
  4. 几行代码搞定树形文本转XML和JSON
  5. onClientClick 和 onClient 区别
  6. windows2003路由和远程访问 试图连接到数据存储时出错
  7. 转大白话系列之C#委托与事件讲解大结局
  8. 苹果电脑上常用的4个数据库管理工具
  9. MyBatis拦截器实现SQL打印
  10. mooc-人工智能与信息社会-基于决策树和搜索的智能系统(上)
  11. 用Python批量从本地导数据到postgres数据库,比人工导入快十倍,爽
  12. 后端开发者从零做一个移动应用(一)
  13. 线段树(详细注释—pushdown写法)
  14. 辞职考研上岸北大软微
  15. c语言CFile的使用方法,C/C++文件操作之CFile
  16. 从第三季“多多读书月”看拼多多的知识普惠进阶
  17. 用计算机画小鸡,水墨电脑画--丝瓜小鸡图
  18. vw 前端_css3的vw单位,vh单位的讲解,以及vw vh的兼容性
  19. 初识 Vertica ,看完白皮书,我都发现了啥【文末赠书】
  20. 2022年c++的520答案

热门文章

  1. react 项目 测试
  2. [转]OPENGL中GLU和GLUT工具箱
  3. 利用curl去hack他人博客
  4. sprintf 、vsprintf 、_vsntprintf
  5. 微信开发者工具在线调试
  6. Hardware Emulation Platform (硬件仿真平台) 在IC验证中的运用情况如何?
  7. JAVA-ZIP和GZIP压缩实现
  8. MSSQL2005 活动进程等待类型说明
  9. 你妈咪喊你回家刷题~~
  10. python面向对象:小结