cocos2dx骨骼动画甲胄源代码分析(一)
Cocos2dx从编辑器(cocostudio或flash插件dragonBones)获取xml或json数据,通过调用如下代码可以显示动画效果
armaturedatamanager :3360 getinstance()-addArmatureFileInfoAsync(' armature/dragon . png ',' armature/Dragon.plist ',' armature/Dragon.xml ',this,schedule _ selector(testsynchronousload 3360: data loaded));电枢*电枢=nullptr电枢=电枢: create(' Dragon ');甲胄-getAnimation()-playWithIndex(1);addChild(甲胄);那么调用内部是如何实现的呢?
Armature:create和armature-get animation()-playwithindex实现了什么?这些文章将从源代码分析电枢。
本文是电枢分析的第一部分,将对cocos2dx中的骨骼动画进行整体分析。涉及的内容如下:
什么是骨骼动画
编辑器导出数据格式概述
源代码概述
什么是骨骼动画
游戏中的动画大致可以分为以下三种类型:
帧动画
补间动画
骨骼皮肤动画
帧动画
这是最基础的动画,也是后面两个动画的基础,一帧显示一张图片,cocos2dx Action中的动画就是帧动画。优点是实现简单,缺点是浪费资源(一帧一图可以和下面两个动画对比)。
十二岁
在flash中,有许多补间动画。而不是一帧一图,只需要开始状态和结束状态,中间状态可以根据差值和经过的时间来计算。优点是节约资源,艺人都很熟悉。
骨骼皮肤动画
骨骼动画可以看作是补间动画的延伸,将动画各个部分之间的相关结构(骨骼)制作出来,然后将图形绑定到骨骼上。缺点是程序实现起来比较复杂,与电影相比优点如下(其他优点还没有发现):
1.很少有导出的配置数据和简单的艺术作品
假设有一根骨头的结构如下
身体
左臂
手柄
armRight
向右移动
头
legLeft
legRight
假设您想要在一帧中将动画向右移动,补间动画需要移动所有的身体、左臂、右腿等。要创建新的帧,而骨骼动画只需要移动身体的位置,它的子节点将跟随父节点。在对应的导出配置中,补间动画要处理body、armLeft等所有子节点的导出数据,而骨骼动画只改变一个节点的数据,导出的数据会小很多。
2.接缝裂缝修复
下图是盗页《游戏引擎架构》 449,意思是画图的时候不注意,可能是连接处有裂痕。这个问题可以通过使用骨骼动画来解决。骨骼动画中的皮肤可以根据重量绑定到多个关节(骨骼),也可以根据重量拉伸。cocostudio骨骼动画编辑器比较陌生,所以不知道能不能多绑定,但是flash的dragonBones插件不行。Spine对这种多重绑定有很好的支持。
编辑器导出数据格式概述
cocostudio导出的json结构类似于dragonbones导出的xml结构,是骨架层、动画层和图片层的三层结构。以龙骨官方演示为例(有删减):
骨架名称=' DragonBones _ Tutorial _ multi behavior ' frame rate=' 24 '版本='2.2 '骨架骨架名称='Dragon' b名称=' tail ' parent=' body ' x=' 45.9 ' y='-70.8 ' kX=' 30 ' kY=' 30 ' cX=' 1 ' cY=' 1 ' Px=' 11.5 ' pY=' 176.35 ' z=' 10 ' d名称='parts-tail' pX='0 '
动画/动画是动画部分,对应flash中的2个区域,用帧标签区分哪个动画,比如站立、行走、跳跃等。
纹理图/纹理图是骨骼部分,对应flash中的3个区域,是皮肤,也就是图形信息。
有了这些信息,flash中的动画效果就可以在程序中还原了,后面的文章中会说dr、drTW、x、kX、kY等等是什么意思。
源代码概述
代码可以大致分为两部分:解析xml或json数据和用解析的数据生成动画。
数据分析相关代码的统一建模语言
简要介绍每个类的功能:
DataReaderHelper:分析数据结构ArmatureData、AnimationData和TextureData这些数据结构可以被armatures、animations和TextureAtlas的数据生成程序直接使用。
ArmatureDataManager:管理DataReaderHelper及其解析的数据。
ArmatureData:对应于xml中的电枢/电枢。
AnimationData:对应于xml中的动画/动画。
TextureData:对应于xml中的subxture/subxture。
BoneData:对应于xml中的。
DisplayData:对应于xml中的d/d。
MovementData:对应于xml中的mov/mov。
MovementBoneData:对应于xml中的mov/mov。
FrameData:对应于xml中的moff/f/mov。
生成动画相关代码的统一建模语言
简要介绍每个类的功能:
Armature:包含骨架信息和动画信息,其中一个可以播放动画。
补间:骨骼动画的补充,一个骨骼和一个补间。与上面对应的flash面板是脚架动画尾部图层的第一至第七帧。
ArmatureAnimation:所有Tween的集合足以制作一个动画。
Bone:有Tween的骨骼信息,从中可以得到某个时间点的骨骼状态。
显示因子:创建显示对象,如皮肤。
每个骨骼中有一个显示管理器:用于管理骨骼上的显示对象。
皮肤:图形的显示对象。
以上内容是我们小编(一)分享的cocos2dx骨骼动画电枢的源代码分析。希望你喜欢。
版权声明:cocos2dx骨骼动画甲胄源代码分析(一)是由宝哥软件园云端程序自动收集整理而来。如果本文侵犯了你的权益,请联系本站底部QQ或者邮箱删除。