2015元宵节礼物——《刀塔传奇》骨骼动画查看器,开源啦!

首先声明,我不是第一个做出类似查看器的首作者,我所知道的首作者是johance,以下是它在cocoschina发布的贴子。

分享 刀塔查看器Flash導出版本(帶詳細解析說明)和Flash導入導出批處理文件
      http://www.cocoachina.com/bbs/read.php?tid-219173.html

贴子里面描述了《刀塔传奇》骨骼动画的文件格式,我是参考这个文件格式写出来的。我的实现思路是将*.fca文件转换成DragonBonesCPP所需要的格式,然后就可以通过DragonBonesCPP播放出来了。注意这里没有转换成DragonBonesCPP的skeleton.xml,而是直接转换成了DragonBonesCPP解析skeleton.xml后的数据结构,免去了中间环节。当然你也可以通过我实现的代码接口导出DragonBonesCPP的三个文件sheet.pvr、texture.xml、skeleton.xml,然后像平时使用DragonBonesCPP的那样来加载播放,这样可以避免加载时转换,效率更高。

*.fca文件是一个zip压缩包,将其用WinRAR解压缩出来后,可以得到cha、plist、sheet.pvr三个文件,其中sheet.pvr是纹量集图片,包含了该角色使用的所有骨骼碎图。plist是纹量集的骨骼碎图描述文件,描述了每个骨骼碎图在sheet.pvr大图中的坐标、大小等区域信息。cha是骨骼动画数据文件,其格式如下所述。

cha格式:

声明:
以下格式来自于johance公布的贴子,只做了少量修饰和补充。

{}表示一个数据结构,带...表示有多个数据结构。

角色名称长度(4B)
角色名称 不包含"\0"
骨骼数量(4B)
{
      骨骼名称长度(4B)
      骨骼名称
      骨骼图片文件名长度(4B)
      骨骼图片文件名
      骨骼索引(4B)
}...
动画个数(4B)
{
      动画名称长度(4B)
      动画名称
      未知数据(4B) 固定为0x41c00000
      动画帧数(4B)
      {
            帧类型(4B)
            {
                  // 帧类型为1时才需要解析这个结构,否则跳过这个结构
                  未知数据1(4B)
                  声音文件名称长度(4B)
                  声音文件名称
                  未知声音数据(32B)
                  未知数据2(4B)
            }
            当前帧使用的骨骼数量(4B)
            {
                  骨骼索引(2B)
                  透明度(1B)
                  a、b、c、d、tx、ty(类似Flash中的Matrix的6个float)
            }...
      }...
}...

类似Flash中的Matrix的6个float的详细含义请参考以下文章和AS代码。

as3中Matrix详解
http://wgcode.iteye.com/blog/838550

MatrixTransformer.as:

public static function getScaleX(m:Matrix):Number
{
      return Math.sqrt(m.a*m.a + m.b*m.b);
}

public static function getScaleY(m:Matrix):Number
{
      return Math.sqrt(m.c*m.c + m.d*m.d);
}

public static function getSkewX(m:Matrix):Number
{
      return Math.atan2(-m.c, m.d) * (180/Math.PI);
}

public static function getSkewY(m:Matrix):Number
{
      return Math.atan2(m.b, m.a) * (180/Math.PI);
}

《刀塔传奇》骨骼动画查看器:

《刀塔传奇》山寨版(未完成,将在之后一段时间再开源):

开发环境:
Cocos2d-x-3.3 Final
DragonBonesCPP

Windows安装包下载地址:
http://pan.baidu.com/s/1dDyBu85

Android安装包下载地址:
http://pan.baidu.com/s/1rVOCI

资源下载地址:
http://pan.baidu.com/s/14NgoI

项目地址:
https://github.com/zym2014/DotaSkeletonAnim

时间: 2024-10-24 00:13:04

2015元宵节礼物——《刀塔传奇》骨骼动画查看器,开源啦!的相关文章

[寒江孤叶丶的Cocos2d-x之旅_39]Cocos骨骼动画功能解密

原创文章,欢迎转载,转载请注明:文章来自[寒江孤叶丶的Cocos2d-x之旅系列] 博客地址:http://blog.csdn.net/qq446569365 原创文章,首发地址:http://www.cocos.com/cocos/dynamic/2015/0908/82.html 在游戏中,人物的各种动作是必不可少,一般实现人物动作的方式有两种,序列帧动画或骨骼动画.Cocos在更新到2.x版本之后,便没有了骨骼动画的功能,使得开发者非常困扰.终于在本次更新中,Cocos编辑器将骨骼动画添加

菜鸟也能学cocos2dx3.0 浅析刀塔传奇(下)

首先我们讲点话外的东西,异步载入:众所周知,loading里面一般都是载入数据的,那么是怎么载入的呢? Director::getInstance()->getTextureCache()->addImageAsync(const std::string &path, const std::function<void(Texture2D*)>& callback)//參数1,文件路径.參数2.回调函数(一般都是进度条) 那么假设我们要载入帧动画呢? auto fra

Cocos2d-x 3.x 练习 2 骨骼动画

其实是想到什么就是学什么啦.(又跑到骨骼动画什么鬼)... PS:学习历程啦,可能会有很多错误. 骨骼动画用的是spine 的样例了.spineboy 有两个动作 jump 和 walk. 在export的时候格式选择json而且勾选Create atlas. (安装路径,导入路径,导出路径不能有中文) 然后复制这三个文件 json,atlas,png 到资源下面. 使用官网的用法 auto sap = new SkeletonAnimation("spineboy.json",&qu

尝试优化骨骼动画计算的意外收获——使用内嵌式汇编对float转int进行优化

本文为大便一箩筐的原创内容,转载请注明出处,谢谢:http://www.cnblogs.com/dbylk/p/4984530.html 最近一直在尝试优化公司引擎的代码,因为公司之前的客户端最大只支持1440x900的分辨率,现在想要提高到1920x1080,但是怕性能方面有问题,所以让我试试看能不能提高客户端在几百人同屏时的帧数和稳定性. 因为公司引擎目前是使用CPU计算骨骼动画,虽然采用了D3DX提供的函数(D3DX的矩阵运算使用了SSE指令,即SIMD技术)进行计算,但在屏幕中存在大量角

cocos2d-x 3.8.1的骨骼动画加载方法addArmatureFileInfo仍然存在问题

提出如题所示的问题,心里非常别扭,但的确是事实.因此,Cocos Studio(我目前使用的是 2.3.2)在许多方面还有改进的地方,包括与之相对应的cocos2d-x中的代码操作部分. 问题 目前,我的试验结果发现,使用cocos2d-x 3.8.1中提供的如下方法: ArmatureDataManager::getInstance()->addArmatureFileInfo(filename); 无法正常加载Cocos Studio 2.3.2导出的骨骼动画资源文件.例如如下代码无法正常通

Cocos2d-x 3.8.1+Cocos Studio 2.3.2捉虫记之控制场景文件中的骨骼动画

Cocos2d-x 3.8.1+Cocos Studio 2.3.2捉虫记之控制场景文件中的骨骼动画 引子 这段时间一直努力在把早期版本的拇指接龙游戏(Cocos2d-x 2.2.3+CocoStudio 1.4.0.1)升级到当前相对稳定的高大上环境--Cocos2d-x 3.8.1+Cocos Studio 2.3.2.行程中遇到不少麻烦,时间不知不觉像流水一样悄然逝去(这正是我时不时酸酸地想起"程序猿"三字的主要原因).想之再三,还是努力记录下来,一来为自己可能逝去的记忆,二来为

游戏技术汇:莉莉丝COO张昊解剖《刀塔传奇》开发经验心得

游戏兵工厂新闻报道: 日前,<刀塔传奇>的研发公司莉莉丝COO张昊在成都GMGDC大会上分享了从<刀塔传奇>谈如何吸引和留住重度游戏用户的主题分享,张昊通过四个时间维度去解剖了<刀塔传奇>的研发经验心得,分享了很多干货,针对张昊的主题演讲进行了深度的解读: 从时间线上一个游戏分四个阶段,每个阶段侧重点不同,大概概括为: 第一:进入游戏的前十分钟,侧重点是“美术”; 第二:游戏里面的第一天,侧重点是“战斗”; 第三:游戏里面的第一个月,侧重点是“成长”; 第四:玩游戏一个

引擎设计跟踪(九.14) 更新记录和骨骼动画导出

骨骼动画是去年打算写的部分, 但是中间因为工作太忙, 已经拖了一年了. 期间也加了其他东西, 比如对UI做了部分完善.UI对toolbar button添加了drop down 支持, 一种是dropdown menu, 一种是dropdown property sheet 实现这些控件不难, 但是要做抽象和复用, 接口设计稍微有点复杂. 现在可以把一个IConfig对象绑定到toolbar的button里了. 这样保存这些配置的时候,直接使用IConfig接口就可以了.贴一个编辑器的配置文件,

cocos2dx - v2.3.3编辑器骨骼动画

接上一节内容:cocos2dx - v2.3.3编辑器简单使用及不同分辨率适配 本节主要Cocos骨骼动画的创建及使用 一.新建 用Cocos Studio工具新建一个状态栏项目.如下图: 当然也可以新建一个空的Cocos项目,然后在 文件->新建文件 中选择骨骼动画来创建新的骨骼动画,如下图 因为这里只讲简单用法,着重使用,所有直接创建英雄示例动画. 二.添加动画 选择动画模式,并点击如下播放按钮,可以看到现在默认的动画. 示例中只有ALL动画,我们需要将每个动画按起始结束帧率分开,添加如下动