概述

通过安装的运行库,您可以将动画信息导出到可被多种游戏引擎读取的文件中。支持多种游戏引擎:Unity、Cocos2dX、libGDX、MonoGame、ThreeJS、BabylonJS和PixiJS。另外,您还可以使用部分运行库代码(以C++、C#、Java、Javascript等基本语言编写),将其修改并运用到您的自定义引擎中。

概述视频教程

观看以下介绍视频,您可以了解各种运行库选项和文件格式,以方便您将自己创作的Creature角色导入到目标游戏引擎中:

Non

下载运行库

点击 这里下载各种游戏引擎的运行库。

导出数据

Meshing

点击“游戏引擎”按钮开始导出。导出的文件的扩展名为**.json,格式为JSON。您可以使用各种JSON**查看器来检查调试该文件。

导出文件后,您还需要获取与您使用的游戏引擎兼容的运行库。

使用Web查看器测试导出数据

Creature的在线网页版查看器可以使用WebGL运行库显示您导出的JSON和纹理图谱PNG文件。该方法可以快速、方便地预览导出动画在游戏引擎中的显示效果。

点击 这里访问网页版查看器。

运行库模块结构

虽然游戏运行库有不同的语言,但其单个模块的大致设计都是一样的。让我们一起深入检查这些模块,以更好地了解运行库的结构:

Meshing

核心模块

核心模块形成了运行库的后台。一般情况下,您不需要直接调用或修改这些模块。核心模块包括以下内容:

  • 网格骨骼:该模块代表骨骼分层中的每根骨骼。这类模块的每个实例化都引用一个可用的子代网格骨骼对象,它具有存储每根骨骼的开始点和结束点位置的属性。

  • 网格渲染区域:该模块代表角色的一个网格区域。网格渲染区域对象实例化的数量与角色中的网格区域数量相同。该模块包含对网格骨骼对象的引用,并使用它们通过**PoseFinalPts()**函数确实网格最终点的位置。

  • 网格渲染骨骼构成:该模块是一个容器类,它可以引用网格渲染区域网格骨骼对象。

前端模块

前端模块在核心模块上进行操作,以提供游戏引擎特定的动画播放。在这一部分,您很可能需要调用函数或方法:

  • Creature:该类有一个对包含Creature骨骼和网格区域的网格渲染骨骼构成对象的引用,还包含在屏幕上渲染的信息点和拓扑。任何最终应用于角色网格的变形及变换都将被写入该对象。

  • Creature动画:该类代表单个动画剪辑。每个动画剪辑都需要有一个相应的Creature动画对象被实例化以供播放。

  • Creature管理器:该类管理一个Creature对象和一个Creature动画对象的列表,具有添加、创建Creature动画,设置播放动画,设置播放属性(循环、自定义时间范围等)的功能;还能够处理函数**Update()**的动画实际姿势和更新。您可以在游戏引擎的每个时间回调中调用此功能。

通用高级用法

一般来说,使用运行库时会经历以下模式:

初始化

1)调用实用程序函数以加载所需的角色**.json**文件;

2)创建一个Creature对象并传递加载的文件数据;

3)为每个要加载和播放的动画剪辑创建一个相应的Creature动画对象。这些动画对象都需要被添加到Creature对象中。您可以手动执行此操作或调用Creature对象提供的Creature动画()方法:该操作可以自动创建动画并将其添加到Creature对象中;

4)创建Creature管理器对象并为其分配Creature对象。完成初始化步骤。

渲染

1)运行库特定区域,每个运行库都有自己的Creature渲染器类型种类以完成此功能;

2)通常以**.png格式加载角色纹理图谱文件,并将其分配给Creature渲染器。您还可以将之前创建的Creature管理器对象分配给该Creature渲染器**。

播放

1)您可以为每个可用的Creature动画设置不同的播放属性,还可以为当前活动的动画设置播放;

2)引擎更新回调时,您可以调用Creature管理器上的**Update()**方法更新动画;

3)某些运行库需要在Creature渲染器类型对象上专门调用绘制或更新方法。如需更多详细信息,请检查运行库。

JSON文件格式

导出Creature文件时应采用JSON格式。以下是此文件中各种类别的说明:

网格

网格包含角色的全部点、贴图坐标(uvs)、指数和网格区域。

  • :描述角色点的浮点数的平面数组(x,y)。总点数 = Sizeof(points) / 2

  • 贴图坐标:描述角色贴图坐标的浮点数的平面数组(u,v)。贴图坐标总数 = Sizeof(uvs) / 2

  • 指数:描述角色中三角形指数的整数三元组的平面数组(idx1,idx2,idx3)。三角形总数= Sizeof(indices) / 3

  • 区域:包含代表角色不同网格区域的子代的对象。

每个区域都具有:

  • 起始点指数:点和贴图坐标数组的指数的起始指数;

  • 结束点指数:点和贴图坐标数组的指数的结束指数;

  • 起始指数:指数数组的指数的起始指数;

  • 结束指数:指数数组的指数的结束指数。

骨架

包含角色的整个骨架结构,并包含一棵骨骼对象树。

每根骨骼都具有:

名称:骨骼的名称;

子代:子代骨骼对象树。

动画

存储了角色的可用动画。每个子对象的命名都应与动画名称相同。

每个子对象都具有:

  • 骨骼:用(起始帧,结束帧)命名的子对象,每个对象都包含骨骼动画信息;

  • 网格:用(起始帧,结束帧)命名的子对象,每个对象都包含网格动画信息;

  • 贴图坐标交换:用(起始帧,结束帧)命名的子对象,每个对象都包含贴图坐标动画信息。

处理大型JSON文件(Zip压缩)

使用网格动作导出的某些动画可能会变得相当大。一般情况下,使用网格动作的动画的文件大小会比仅使用骨骼动作的动画大得多。

从Creature导出的JSON文件通常非常适合Zip压缩。事实上,8倍到10倍的压缩系数是非常常见的。因此,当较大的文件因文件大小导致问题出现时,建议您压缩导出Creature JSON文件。

在游戏中,您可以使用第三方程序库功能解压压缩的JSON文件,然后使用Creature的运行库功能进行读取。某些运行库(如Cocos2d-x和Cocos2d运行库)含有内置zip文件读取支持。