本发明专利技术公开了一种骨骼动画的渲染方法和系统,所述方法包括:获取待渲染的骨骼动画的动画帧,并判断是否缓存有所述动画帧的骨骼姿势矩阵数据;若是,则将缓存的骨骼姿势矩阵数据传送至GPU,渲染出与所述动画帧对应的骨骼动画;若否,则通过CPU计算出所述动画帧的骨骼姿势矩阵数据,并在满足缓存条件时,将计算出的骨骼姿势矩阵数据与所述动画帧对应缓存;将计算出的骨骼姿势矩阵数据传送至GPU,渲染出与所述动画帧对应的骨骼动画。实施本发明专利技术的方法和系统,可在缓存有待渲染的动画帧的骨骼姿势矩阵数据时,将缓存的骨骼姿势矩阵数据传送至GPU,渲染出与所述动画帧对应的骨骼动画,无需消耗CPU资源,可提高3D引擎的渲染性能。
【技术实现步骤摘要】
骨骼动画的渲染方法和系统
本专利技术涉及计算机图形
,特别是涉及一种骨骼动画的渲染方法和系统。
技术介绍
目前一般的Flash3D引擎中,实现骨骼动画的时候,都是每帧使用CPU即时计算全局骨骼姿势矩阵数据,然后再提交给GPU,渲染出3D骨骼动画模型来。实际游戏运用中,玩家、怪物、NPC等各种角色,他们的每种动作都是需要反复播放。但是骨骼动画需要反复播放时,则会因为每帧重复计算动画的全局骨骼姿势矩阵数据,CPU计算量大,造成性能大量消耗,会严重影响3D引擎的整体渲染能力。
技术实现思路
基于此,有必要针对上述实现骨骼动画的技术中CPU性能消耗量大、影响引擎渲染能力的问题,提供一种骨骼动画的渲染方法和系统。一种骨骼动画的渲染方法,包括以下步骤:获取待渲染的骨骼动画的动画帧,并判断是否缓存有所述动画帧的骨骼姿势矩阵数据;若是,则将缓存的骨骼姿势矩阵数据传送至GPU,渲染出与所述动画帧对应的骨骼动画;若否,则通过CPU计算出所述动画帧的骨骼姿势矩阵数据,并在满足缓存条件时,将计算出的骨骼姿势矩阵数据与所述动画帧对应缓存;将计算出的骨骼姿势矩阵数据传送至GPU,渲染出与所述动画帧对应的骨骼动画。一种骨骼动画的渲染系统,包括:判断模块,用于获取待渲染的骨骼动画的动画帧,并判断是否缓存有所述动画帧的骨骼姿势矩阵数据;第一渲染模块,用于在缓存有所述动画帧的骨骼姿势矩阵数据时,将缓存的骨骼姿势矩阵数据传送至GPU,渲染出与所述动画帧对应的骨骼动画;缓存模块,用于在未缓存有所述动画帧的骨骼姿势矩阵数据时,通过CPU计算出所述动画帧的骨骼姿势矩阵数据,并在满足缓存条件时,将计算出的骨骼姿势矩阵数据与所述动画帧对应缓存;第二渲染模块,用于将计算出的所述骨骼姿势矩阵数据传送至GPU,渲染出与所述动画帧对应的骨骼动画。上述骨骼动画的渲染方法和系统,在缓存有待渲染的动画帧的骨骼姿势矩阵数据时,将缓存的骨骼姿势矩阵数据传送至GPU,渲染出与所述动画帧对应的骨骼动画,无需消耗CPU资源,可提高3D引擎的渲染性能,在为缓存有且满足缓存条件时,将计算出的骨骼姿势矩阵数据与所述动画帧对应缓存,可为下一次的渲染直接提供所需的骨骼姿势矩阵数据,使得不再持续消耗CPU资源,进一步提高3D引擎的渲染性能。附图说明图1是本专利技术骨骼动画的渲染方法第一实施方式的流程示意图;图2是本专利技术骨骼动画的渲染方法第二实施方式的流程示意图;图3是本专利技术骨骼动画的渲染系统第一实施方式的结构示意图。具体实施方式请参阅图1,图1是本专利技术骨骼动画的渲染方法第一实施方式的流程示意图。本实施方式的所述骨骼动画的渲染方法包括以下步骤:步骤101,获取待渲染的骨骼动画的动画帧,并判断是否缓存有所述动画帧的骨骼姿势矩阵数据。步骤102,若是,则将缓存的骨骼姿势矩阵数据传送至GPU,渲染出与所述动画帧对应的骨骼动画。步骤103,若否,则通过CPU计算出所述动画帧的骨骼姿势矩阵数据,并在满足缓存条件时,将计算出的骨骼姿势矩阵数据与所述动画帧对应缓存。步骤104,将计算出的骨骼姿势矩阵数据传送至GPU,渲染出与所述动画帧对应的骨骼动画。本实施方式所述的骨骼动画的渲染方法,在缓存有待渲染的动画帧的骨骼姿势矩阵数据时,将缓存的骨骼姿势矩阵数据传送至GPU,渲染出与所述动画帧对应的骨骼动画,无需消耗CPU资源,可提高3D引擎的渲染性能,在为缓存有且满足缓存条件时,将计算出的骨骼姿势矩阵数据与所述动画帧对应缓存,可为下一次的渲染直接提供所需的骨骼姿势矩阵数据,使得不再持续消耗CPU资源,进一步提高3D引擎的渲染性能。其中,对于步骤101,所述动画帧为当前待渲染的动画画面,所述动画帧的骨骼姿势矩阵优选地,缓存在缓存池中。在一个实施例中,所述获取待渲染的骨骼对象的动画帧的步骤包括以下步骤:创建用于播放所述骨骼动画的骨骼动画对象。加载播放所述骨骼动画所需要的动画资源。将所述动画资源的数据结构转换为内存的数据结构。启动所述骨骼动画的动画播放模式。其中,所需要的动画资源优选地包括贴图、3D模型、骨骼、骨骼姿势数据。优选地,加载的所述动画资源位二进制数据,在GPU中进行动画渲染时,需要将二进制的动画资源转换为与GPU内存匹配的数据结构,即3D引擎需要的数据格式。启动所述骨骼动画的动画播放模式优选地,为将所述动画资源添加到显示列表。将所述动画资源添加到显示列表,即将动画资源添加到3D引擎,等待渲染。在另一个实施例中,在所述获取待渲染的骨骼动画的动画帧的步骤之前,还包括以下步骤:统计所述待渲染的骨骼动画的各个动画帧,在所述骨骼动画中的播放总次数。通过CPU计算出播放总次数超高播放阈值的动画帧的骨骼姿势矩阵数据,并计算出的骨骼姿势矩阵数据与所述动画帧对应缓存。其中,所述播放总次数为所述动画帧在整个骨骼动画的播放过程中的重复播放次数。所述播放阈值优选地为2。对于步骤102,优选地,所述骨骼姿势矩阵数据存储在缓存池内,所述骨骼姿势矩阵可以是前一次渲染所述动画帧时缓存的,也可以是在启动所述骨骼动画的动画播放模式之前缓存的。进一步地,所述将缓存的骨骼姿势矩阵数据传送至GPU,渲染出与所述动画帧对应的骨骼动画的步骤还可以包括以下步骤:执行所述骨骼动画的帧函数(骨骼动画的计算方法)。对于步骤103,所述通过CPU计算出所述动画帧的骨骼姿势矩阵数据的步骤包括以下步骤:转换所述动画帧对应的局部分层骨架,生成全局骨骼姿势。通过骨骼数量、四元数、所述全局骨骼姿势进行数据运算,计算出所述动画帧的骨骼姿势矩阵数据。其中,所述全局骨骼姿势是所述动画帧中骨骼对象的所有骨骼的骨骼姿势数据。四元数为3D中的一种数据结构,代表着一个四维空间,相对于复数为二维空间,能方便的表示3D旋转。在另一个实施例中,所述在满足缓存条件时,将计算出的骨骼姿势矩阵数据与所述动画帧对应缓存的步骤还包括以下步骤:判断所述动画帧在所述骨骼动画中的播放总次数是否超过播放阈值,若是,则将计算出的骨骼姿势矩阵数据与所述动画帧对应缓存。本实施例所述的骨骼动画的渲染方法,在播放总次数是超过播放阈值时,将计算出的骨骼姿势矩阵数据与所述动画帧对应缓存,可为下一次的渲染直接提供所需的骨骼姿势矩阵数据,使得反复播放动画的3D模型不再持续消耗CPU资源,提高3D引擎的渲染性能。其中,所述播放总次数超过播放阈值是一个缓存条件,在其他实施方式中,还可以设置其他缓存条件,如CPU计算出骨骼姿势矩阵数据,即将计算出的骨骼姿势矩阵数据与所述动画帧对应缓存。优选地,所述播放阈值为2,还可以是其他数值。对于步骤104,所述将计算出的骨骼姿势矩阵数据传送至GPU,渲染出与所述动画帧对应的骨骼动画的步骤包括以下步骤:将所述骨骼姿势矩阵数据传送至所述骨骼动画对象。通过3D引擎的GPU对象把所述骨骼姿势矩阵数据传输到GPU。将渲染所述骨骼动画所需的着色程序Shader传输到GPU。将所述骨骼动画的3D模型的顶点数据、贴图、全局坐标矩阵数据传输到GPU。根据模型顶点、贴图、骨骼、全局坐标矩阵数据与骨骼姿势矩阵数据,通过着色程序Shader在GPU内进行渲染运算,在屏幕上渲染出与所述动画帧对应的骨骼动画。其中,着色程序Shader为着色程序,用于GPU的编程。请参阅图2,图2是本专利技术骨骼动画的渲染本文档来自技高网...
【技术保护点】
一种骨骼动画的渲染方法,其特征在于,包括以下步骤:获取待渲染的骨骼动画的动画帧,并判断是否缓存有所述动画帧的骨骼姿势矩阵数据;若是,则将缓存的骨骼姿势矩阵数据传送至GPU,渲染出与所述动画帧对应的骨骼动画;若否,则通过CPU计算出所述动画帧的骨骼姿势矩阵数据,并在满足缓存条件时,将计算出的骨骼姿势矩阵数据与所述动画帧对应缓存;将计算出的骨骼姿势矩阵数据传送至GPU,渲染出与所述动画帧对应的骨骼动画。
【技术特征摘要】
1.一种骨骼动画的渲染方法,其特征在于,包括以下步骤:获取待渲染的骨骼动画的动画帧,并判断是否缓存有所述动画帧的骨骼姿势矩阵数据;若是,则将缓存的骨骼姿势矩阵数据传送至GPU,渲染出与所述动画帧对应的骨骼动画;若否,则通过CPU计算出所述动画帧的骨骼姿势矩阵数据,并在满足缓存条件时,将计算出的骨骼姿势矩阵数据与所述动画帧对应缓存;将计算出的骨骼姿势矩阵数据传送至GPU,渲染出与所述动画帧对应的骨骼动画。2.根据权利要求1所述的骨骼动画的渲染方法,其特征在于,所述获取待渲染的骨骼动画的动画帧的步骤包括以下步骤:创建用于播放所述骨骼动画的骨骼动画对象;加载播放所述骨骼动画所需要的动画资源;将所述动画资源的数据结构转换为内存的数据结构;启动所述骨骼动画的动画播放模式。3.根据权利要求1所述的骨骼动画的渲染方法,其特征在于,所述通过CPU计算出所述动画帧的骨骼姿势矩阵数据的步骤包括以下步骤:转换所述动画帧对应的局部分层骨架,生成全局骨骼姿势;通过骨骼数量、四元数、所述全局骨骼姿势进行数据运算,计算出所述动画帧的骨骼姿势矩阵数据。4.根据权利要求1所述的骨骼动画的渲染方法,其特征在于,所述将缓存的骨骼姿势矩阵数据传送至GPU,渲染出与所述动画帧对应的骨骼动画的步骤包括以下步骤:将缓存池内缓存的所述骨骼姿势矩阵数据传送至所述骨骼动画的骨骼动画对象;所述骨骼动画对象接收所述骨骼姿势矩阵数据,并将所述骨骼姿势矩阵数据传送至GPU;向GPU输入全局坐标矩阵数据;根据所述骨骼姿势矩阵数据、所述全局坐标矩阵数据与缓存的模型顶点、贴图和骨骼,在所述GPU中通过着色程序Shader进行渲染运算,在显示屏幕上渲染出与所述动画帧对应的骨骼动画。5.根据权利要求1至4中任意一项所述的骨骼动画的渲染方法,其特征在于,所述在满足缓存条件时,将计算出的骨骼姿势矩阵数据与所述动画帧对应缓存的步骤包括以下步骤:判断所述动画帧在所述骨骼动画中的播放总次数是否超过播放阈值,若是,则将...
【专利技术属性】
技术研发人员:陈苏俊,
申请(专利权)人:广州菲动软件科技有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。