首页 / 专利库 / 软件 / 软件解决方案 / 软件组件 / 规则引擎 / 三维游戏动画系统

三维游戏动画系统

阅读:2发布:2020-10-16

专利汇可以提供三维游戏动画系统专利检索,专利查询,专利分析的服务。并且本 发明 公开了一种三维游戏动画系统,包括供程序开发人员调用的上层功能模 块 ,供美术开发人员使用的上层编辑模块,供程序底层开发人员进行开发和维护的底层管理模块和底层功能模块,各个模块间采用标准 接口 连接,了解每个模块接口调用规则即可方便的制作游戏动画。包括上层功能模块,上层编辑模块,底层管理模块和底层功能模块,功能齐全,并采用标准接口,各个模块之间相互独立,且采用标准接口连接,开发人员不需要了解动画系统的详细开发方式,只需了解每个模块接口调用规则即可方便的制作游戏动画。从而达到使用简易的且易于扩充的目的。,下面是三维游戏动画系统专利的具体信息内容。

1.一种三维游戏动画系统,其特征在于,包括供程序开发人员调用的上层功能模,供美术开发人员使用的上层编辑模块,供程序底层开发人员进行开发和维护的底层管理模块和底层功能模块,各个模块间采用标准接口连接,了解每个模块接口调用规则即可方便的制作游戏动画;所述上层功能模块包括骨骼动画、面部表情动画、换装系统、反向动学、软体动画、控制器动画和绑定动画;
所述骨骼动画:从动作捕捉设备获取基本数据,然后通过动作处理插件将获取的基本数据修改为动画系统所需的关键数据,计算得到骨骼列表的世界矩阵传到GPU,GPU根据每个顶点受哪些骨骼索引以及权重来计算每个顶点的新位置,调整的最后结果与设定场景中的位置相符合;
所述面部表情动画:通过面部表情捕捉或手动制作动画制作面部表情动画;
所述换装系统:通过制作不同的模型替换各种原有模型,并把数据统一化,按照数据排列规则随意组织排列和替换模型,从而实现多样的组合变化;
所述反向动力学:基于父子关系,权重比,运用雅克比矩阵推算动画结果,通过重要的关节部位进行定位,从而确立姿势,在骨骼链的末端以此反向往上推算,在约束参数的综合控制下得到合理的结果;
所述软体动画:对于根据作用力的不同会产生一定的动态形变的软性物体,建立父子链接关系,通过权重和约束变量去控制动画范围,通过物理碰撞,并用动力学公式计算整个动画的结果;通过简易碰撞体和多线程计算来加速整个过程;
所述控制器动画:通过目标点定位,让动画跟随目标点产生动态的反应与变化,通过约束参数、雅克比矩阵和父子链接关系达到在需要的范围内动画跟踪定位的目的;
所述绑定动画:允许把其他物体动画绑定点以及挂节点绑定到动画中,同时通过绑定点的位置运算实现绑定动画的无缝连接。
2.根据权利要求1所述的三维游戏动画系统,其特征在于,各个模块在渲染方面通过暴露给外部的虚函数重载该虚函数,达到自定义化的目的。
3.根据权利要求1或2所述的三维游戏动画系统,其特征在于,所述底层管理模块包括动画管理器,所述动画管理器对动画进行内存共用、多线程计算、动画调度以及统一计数管理,所述动画管理器是动画系统的控制中心,负责对动画系统的数据进行统一管理。
4.根据权利要求1或2所述的三维游戏动画系统,其特征在于,所述底层功能模块包括动画序列、动画树、动画过渡、多重动画混合、动画压缩、碰撞系统、导航系统和LOD系统;
所述动画序列:改变每帧动画的属性,从而控制动画以不同速率进行播放;
所述动画树:通过逻辑编码将动画按照逻辑需求进行播放,通过可视化用户界面连接线和条件判断的方式达成逻辑反馈的目的,形成完整的动画连接关系;
所述动画过渡:将2个动画以一种平滑的方式进行转换,通过线性插值或贝塞尔插值把权重平均化;
所述多重动画混合:按美术的需求进行部位分解,每个部位可以播放各自的动画;
所述动画压缩:在效果没有损失的情况下把动画数据由一个矩阵转换为双重四元数,同时将关键帧数据通过曲线平滑使数据量进一步减少;
所述碰撞系统:使用物理引擎开发,能够支持射线检测、几何体检测以及动力学模拟,将动画模型数据进行简化,得到一个近似距离,在检测完成后根据距离进行向量偏移得到最后结果,通过互相碰撞和动力学模拟,计算出每个动画片段的冲量、速度和动能,从而计算出最后的位置和形体结构;
所述导航系统:起到了动态侦测路径的作用,动画制作过程中设定导航基础网格,通过权重和偏移信息实时计算出导航的位置和作用范围;
所述LOD系统:主要分为动画LOD与骨骼LOD,通过距离的远近判断出动画的重要性和先后关系。
5.根据权利要求1或2所述的三维游戏动画系统,其特征在于,所述上层编辑模块包括动画编辑器,所述动画编辑器,提供制作人员所见即所得的编辑操作功能,通过交互式的人机界面进行创作,能够支持取消操作和操作记录,通过人性化的面板制定出通俗易懂的编辑流程。

说明书全文

三维游戏动画系统

技术领域

[0001] 本发明涉及游戏开发技术领域,具体地,涉及一种三维游戏动画系统。

背景技术

[0002] 随着第九艺术游戏产业的快速发展,游戏世界里所呈现出来的逼真环境模拟,实时交互体验,声光的感官刺激使人更加的身临其境。三维世界的模拟也正向着更高的要求去发展。实时动态逼真三维环境的模拟现在正是市场开发的重点领域,游戏区别于电影的最大特征就是要求实时的交互性,所见即所得的感官体验。互动体验成为了游戏最吸引人的要素。其中游戏动画系统是游戏交互式体验的重要组成部分,也是游戏开发与真实模拟的核心问题之一。现在游戏动画发展的趋势正向着拟真,交互,电影化的表现形式快速发展。目前游戏动画需要支持大规模场景成百上千动画实体的实时模拟,计算与交互,而且游戏动画需要实时模拟真实的物理计算,随之而来伴随的是巨大的动画数据计算量,对计算机的性能要求也会随之快速上升,而且基于游戏的实时交互性,要实现高效率的实时模拟,优化性能会变得十分困难。目前普遍实现的游戏动画系统都十分简陋,功能相对很不完善,效率和承载量无法满足大规模场景的实时表现需求,虽然有一些比较成熟的商业动画系统可以使用,但是如果采用这些系统开发游戏并进行商业运营时,需要交纳很高的授权费,而且难于修改,很多情况下不能满足游戏开发的需求。很难找到适用于游戏开发,同时满足效率,承载量,效果,又能尽可能节约成本的优秀三维游戏动画系统。

发明内容

[0003] 本发明的目的在于,针对上述问题,提出一种三维游戏动画系统,克服游戏动画在效果、效率和承载量之间的兼顾性,提供一套完善的,系统的动画系统,以实现使用简易且易于扩充的优点。
[0004] 为实现上述目的,本发明采用的技术方案是:
[0005] 一种三维游戏动画系统,包括供程序开发人员调用的上层功能模,供美术开发人员使用的上层编辑模块,供程序底层开发人员进行开发和维护的底层管理模块和底层功能模块,各个模块间采用标准接口连接,了解每个模块接口调用规则即可方便的制作游戏动画;所述上层功能模块包括骨骼动画、面部表情动画、换装系统、反向动学、软体动画、控制器动画和绑定动画;
[0006] 所述骨骼动画:从动作捕捉设备获取基本数据,然后通过动作处理插件将获取的基本数据修改为动画系统所需的关键数据,计算得到骨骼列表的世界矩阵传到GPU,GPU根据每个顶点受哪些骨骼索引以及权重来计算每个顶点的新位置,调整的最后结果与设定场景中的位置相符合;
[0007] 所述面部表情动画:通过面部表情捕捉或手动制作动画制作面部表情动画;
[0008] 所述换装系统:通过制作不同的模型替换各种原有模型,并把数据统一化,按照数据排列规则随意组织排列和替换模型,从而实现多样的组合变化;
[0009] 所述反向动力学:基于父子关系,权重比,运用雅克比矩阵推算动画结果,通过重要的关节部位进行定位,从而确立姿势,在骨骼链的末端以此反向往上推算,在约束参数的综合控制下得到合理的结果;
[0010] 所述软体动画:对于根据作用力的不同会产生一定的动态形变的软性物体,建立父子链接关系,通过权重和约束变量去控制动画范围,通过物理碰撞,并用动力学公式计算整个动画的结果;通过简易碰撞体和多线程计算来加速整个过程;
[0011] 所述控制器动画:通过目标点定位,让动画跟随目标点产生动态的反应与变化,通过约束参数、雅克比矩阵和父子链接关系达到在需要的范围内动画跟踪定位的目的;
[0012] 所述绑定动画:允许把其他物体动画绑定点以及挂节点绑定到动画中,同时通过绑定点的位置运算实现绑定动画的无缝连接。
[0013] 进一步地,各个模块在渲染方面通过暴露给外部的虚函数重载该虚函数,达到自定义化的目的。
[0014] 进一步地,所述底层管理模块包括动画管理器,所述动画管理器对动画进行内存共用、多线程计算、动画调度以及统一计数管理,所述动画管理器是动画系统的控制中心,负责对动画系统的数据进行统一管理。
[0015] 进一步地,所述底层功能模块包括动画序列、动画树、动画过渡、多重动画混合、动画压缩、碰撞系统、导航系统和LOD系统;
[0016] 所述动画序列:改变每帧动画的属性,从而控制动画以不同速率进行播放;
[0017] 所述动画树:通过逻辑编码将动画按照逻辑需求进行播放,通过可视化用户界面连接线和条件判断的方式达成逻辑反馈的目的,形成完整的动画连接关系;
[0018] 所述动画过渡:将2个动画以一种平滑的方式进行转换,通过线性插值或贝塞尔插值把权重平均化;
[0019] 所述多重动画混合:按美术的需求进行部位分解,每个部位可以播放各自的动画;
[0020] 所述动画压缩:在效果没有损失的情况下把动画数据由一个矩阵转换为双重四元数,同时将关键帧数据通过曲线平滑使数据量进一步减少;
[0021] 所述碰撞系统:使用物理引擎开发,能够支持射线检测、几何体检测以及动力学模拟,将动画模型数据进行简化,得到一个近似距离,在检测完成后根据距离进行向量偏移得到最后结果,通过互相碰撞和动力学模拟,计算出每个动画片段的冲量、速度和动能,从而计算出最后的位置和形体结构;
[0022] 所述导航系统:起到了动态侦测路径的作用,动画制作过程中设定导航基础网格,通过权重和偏移信息实时计算出导航的位置和作用范围;
[0023] 所述LOD系统:主要分为动画LOD与骨骼LOD,通过距离的远近判断出动画的重要性和先后关系。
[0024] 进一步地,所述上层编辑模块包括动画编辑器,所述动画编辑器,提供制作人员所见即所得的编辑操作功能,通过交互式的人机界面进行创作,能够支持取消操作和操作记录,通过人性化的面板制定出通俗易懂的编辑流程。
[0025] 根据本发明的优选实施例,所述上层编辑模块包括动画编辑器,所述动画编辑器,提供制作人员所见即所得的编辑操作功能,通过交互式的人机界面进行创作,能够支持取消操作和操作记录,通过人性化的面板制定出通俗易懂的编辑流程。
[0026] 本发明的技术方案具有以下有益效果:
[0027] 本发明的技术方案,包括上层功能模块,上层编辑模块,底层管理模块和底层功能模块,功能齐全,并采用标准接口,各个模块之间相互独立,且采用标准接口连接,开发人员不需要了解动画系统的详细开发方式,只需了解每个模块接口调用规则即可方便的制作游戏动画。从而达到使用简易的且易于扩充的目的。
[0028] 下面通过附图和实施例,对本发明的技术方案做进一步的详细描述。

附图说明

[0029] 图1为本发明实施例所述的动画系统构造示意图;
[0030] 图2为本发明实施例所述的上层功能子模块的构造示意图;
[0031] 图3为本发明实施例所述的底层功能子模块的构造示意图
[0032] 图4为本发明实施例所述的动画系统架构示意框图
[0033] 图5为本发明实施例所述的动画系统程序类架构设计图;
[0034] 图6为本发明实施例所述的骨骼动画系统的接口调用流程图
[0035] 图7为本发明实施例所述的动画树接口调用流程图;
[0036] 图8为本发明实施例所述的动画混合接口调用流程图;
[0037] 图9为本发明实施例所述的LOD系统接口调用流程图;
[0038] 图10为本发明实施例所述的碰撞系统接口调用流程图;
[0039] 图11为本发明实施例所述的换装系统调用流程图;
[0040] 图12为本发明实施例所述的反向动力学调用接口流程图;
[0041] 图13为本发明实施例所述的骨骼动画系统的接口调用流程图。

具体实施方式

[0042] 以下结合附图对本发明的优选实施例进行说明,应当理解,此处所描述的优选实施例仅用于说明和解释本发明,并不用于限定本发明。
[0043] 如图1所示,一种三维游戏动画系统,包括供程序开发人员调用的上层功能模块,供美术开发人员使用的上层编辑模块,供程序底层开发人员进行开发和维护的底层管理模块和底层功能模块,各个模块间采用标准接口连接,了解每个模块接口调用规则即可方便的制作游戏动画。
[0044] 且各个模块在渲染方面通过暴露给外部的虚函数可以重载函数达到自定义化的实现功能。
[0045] 如图2所示,上层功能模块包括骨骼动画、面部表情动画、换装系统、反向动力学、软体动画、控制器动画和绑定动画;
[0046] 骨骼动画:从动作捕捉设备获取基本数据,然后通过动作处理插件修改为动画系统所需的关键帧数据,计算得到骨骼列表的世界矩阵传到GPU,GPU根据每个顶点受那些骨骼索引以及权重来计算每个顶点的新位置,调整的最后结果是与实现设定场景中位置相符合;
[0047] 面部表情动画:通过面部表情捕捉或手动制作动画制作面部表情动画;
[0048] 换装系统:通过制作不同的模型替换各种原有模型,并把数据统一化,按照数据排列规则随意组织排列和替换模型,从而实现多样的组合变化;
[0049] 反向动力学:基于父子关系,权重比,运用雅克比矩阵推算动画结果,通过重要的关节部位进行定位,从而确立姿势,在骨骼链的末端以此反向往上推算,在约束参数的综合控制下得到合理的结果;
[0050] 软体动画:对于根据作用力的不同会产生一定的动态形变的软性物体,建立父子链接关系,通过权重和约束变量去控制动画范围,通过物理碰撞,动力学公式计算整个动画的结果;通过简易碰撞体和多线程计算来整个加速过程;
[0051] 控制器动画:通过目标点定位,让动画跟随目标点产生动态的反应与变化,通过约束参数,雅克比矩阵和父子链接关系达到在需要的范围内动画跟踪定位;
[0052] 绑定动画:允许把其他物体动画绑定点,挂节点绑定到动画中,同时通过绑定点的位置运算实现绑定动画的无缝连接。
[0053] 底层管理模块包括动画管理器,所述动画管理器对动画进行内存共用,多线程计算,动画调度,统一计数管理,是动画系统的控制中心。
[0054] 如图3所示,底层功能模块包括动画序列、动画树、动画过渡、多重动画混合、动画压缩、碰撞系统、导航系统和LOD系统;
[0055] 动画序列:改变每帧动画的属性,从而控制动画在不同速率进行播放;
[0056] 动画树:通过逻辑编码将动画按照逻辑需求进行播放,通过可视化的用户界面用连接线和条件判断的方式达成逻辑反馈,形成完整的动画连接关系;
[0057] 动画过渡:将2个动画以一种平滑的方式进行转换,通过线性插值或贝塞尔插值把权重平均化;
[0058] 多重动画混合:按美术的需求进行部位分解,每个部位可以播放各自的动画;
[0059] 动画压缩:在效果没有损失的情况下把动画数据由一个矩阵转换为双重四元数,同时将关键帧数据通过曲线平滑使数据量进一步减少;
[0060] 碰撞系统:使用物理引擎开发,能够支持射线检测、几何体检测以及动力学模拟,将动画模型数据进行简化,得到一个近似距离,在检测完成后根据距离进行向量偏移得到最后结果,通过互相碰撞和动力学模拟,计算出每个动画片段的冲量、速度和动能,从而计算出最后的位置和形体结构;
[0061] 导航系统:起到了动态侦测路径的作用,动画制作过程中设定导航基础网格,通过权重和偏移信息实时计算出导航的位置和作用范围;
[0062] LOD系统:主要分为动画LOD与骨骼LOD,通过距离的远近判断出动画的重要性和先后关系。
[0063] 上层编辑模块包括动画编辑器,所述动画编辑器,提供制作人员所见即所得的编辑操作功能,通过交互式的人机界面进行创作,能够支持取消操作和操作记录,通过人性化的面板制定出通俗易懂的编辑流程。
[0064] 本发明技术方案提供的动画系统适用于电脑游戏,主机游戏,手机游戏的开发,能快速集成,使用方便,可扩展性强,可以大大减少游戏的开发成本和重复劳动的时间。
[0065] 本发明技术方案提供的动画系统是针对游戏定制的,能同时支持成百上千的动画同时运算,并能保持较高的帧率,通过资源管理能大大减少内存的占用。
[0066] 本发明技术方案作为三维游戏引擎的重要模块能方便的适用于各个引擎,从而大大减小开发难度,降低行业的槛,促进行业的高速发展。
[0067] 游戏动画系统作为三维引擎的独立模块进行开发,是作为一个插件式的功能进行的设计与集成。系统不依赖于外部的接口与功能,能方便快速的集成到其他引擎或软件中。本发明技术方案的功能实现分为4大块,分别是上层功能模块(骨骼动画,面部表情动画,换装系统,反向动力学,软体动画,控制器动画,绑定动画),底层管理模块(动画管理器),底层功能模块(动画序列,动画树,动画过渡,多重动画混合,动画压缩,碰撞系统,导航系统,LOD系统),上层编辑模块(动画编辑器),上层功能模块主要提供给程序开发人员调用,上层编辑模块主要提供给美术开发人员使用,底层管理模块和底层功能模块主要由资深的程序底层开发人员进行开发和维护。本发明的整套开发流程如下:首先程序底层开发人员对动画系统的功能进行汇总分析,然后开始程序框架的设计和搭建,包括程序中的程序类的设计,分工,程序语言中设计模式的采用。本发明程序类的设计主要包含基础动画网格类,动画节点类,动画节点管理类,动画文件管理类,动画实体类,换装文件节点类,动画关键帧类,动画文件解析类,其中基础动画网格类会派生出骨骼类,蒙皮网格类,刚性网格类,蒙皮网格类还会派生出基于混合函数的蒙皮网格类,基于着色器加速的蒙皮网格类,基于CPU运算的蒙皮网格类,以上所述的派生关系都是由上到下的继承关系。
[0068] 骨骼动画:骨骼动画系统支持从三维软件中导出的动画数据,包括基于欧拉和四元数的平滑数据,支持通过动作捕捉处理的数据。首先从动作捕捉设备获取基本数据,然后通过3dmax软件中的动作处理插件修改为动画系统所需的关键帧数据,比如:每个骨骼的在关键帧时刻的平移,旋转,缩放数值。最后计算得到骨骼列表的世界矩阵传到GPU,GPU根据每个顶点受那些骨骼索引以及权重来计算每个顶点的新位置,调整的最后结果是与实现设定场景中位置相符合。
[0069] 动画序列:动画序列就是每帧改变位置,旋转,缩放,颜色属性值或者其他的材质属性,用于控制动画在不同速率进行播放;它是按照美术人员在3Dmax中事先制作的模型的关键帧顺序来播放的,实现创建在位置上平移,缩放和旋转上进行调整最终成为游戏中模拟3dmax的播放效果。
[0070] 动画树:通过逻辑编码将动画按照逻辑需求进行播放,也就是说动画播放以及放的速率,播放的动作名字等播放参数的设置,是上层根据需要,编写调用播放接口完成逻辑需求。通过可视化的用户界面用连接线和条件判断的方式达成逻辑反馈,形成完整的动画连接关系。
[0071] 动画过渡:动画过渡将2个动画以一种平滑的方式进行转换,通过线性插值或贝塞尔插值把权重平均化,在显卡中将骨骼进行混合计算从而满足高效率的需求。为了保证在插值过程中避免位置,缩放和旋转分量产生非等比的变化,在其中需要将变换矩阵进行拆解计算最后再合并为结果矩阵。
[0072] 多重动画混合:多重动画混合可以按美术的需求进行部位分解,每个部位可以播放各自的动画,动画系统会自动进行融合,骨骼会根据配置表找到所属的部位,继而进行相应的动作计算和混合,每个部位的混合权重可以单独控制,以达到最佳的表现效果。很多复杂动画的实现都需要使用到多重动画混合技术,可以大大减少美术的工作量,而且使用方便直观,调整自然快捷,所见即所得,使开发效率明显提高。
[0073] 面部表情动画:通过面部表情捕捉或手动制作动画制作面部表情动画,最后通过调整修改交付给动画系统进行处理,可以根据面部的肌肉表现出明显的变化。喜怒哀乐之间的变化可以平滑实现融合和过渡。对话时所用到的口型可以根据字母的发音进行制作和融合,最后由动画系统接管控制。
[0074] 换装系统:通过制作不同的模型替换各种原有模型,动画系统把数据统一化,按照数据排列规则可以随意组织排列和替换模型,从而实现多样的组合变化,大大减少美术的工作量,提高工作效率。内存占用和消耗也能减少很多。换装系统的数据具有较大的灵活性,没有关节和部位的限制,美术在制作时控制好权重和骨骼的影响,标准动作统一即可以实现。
[0075] 反向动力学:基于父子关系,权重比,运用雅克比矩阵推算动画结果,通过重要的关节部位进行定位,从而确立姿势,在骨骼链的末端以此反向往上推算,在约束参数的综合控制下得到合理的结果,这种动画可以运用在不平坦的地面,斜坡,以及攀爬的自动定位,而且该领域很难有其他有效的动画模拟方式去弥补,所以反向动力学是动画系统中较难实现但拟真度很强的方式。
[0076] 软体动画:像轮胎,海绵等软性物体,根据作用力的不同会产生一定的动态形变,这种形变动画和形式一般很难用固定方式去制作,必须借助于物理计算去模拟,包括人物死亡后的瘫倒动画以及失去知觉后的自然姿势等方面的模拟。采用的方法主要是建立父子链接关系,通过权重和约束变量去控制动画范围,通过物理碰撞,动力学公式去计算整个动画的结果。通过简易碰撞体和多线程来计算整个加速过程。
[0077] 控制器动画:通过目标点定位,让动画跟随目标点产生动态的反应与变化,通过约束参数,雅克比矩阵和父子链接关系达到在需要的范围内动画跟踪定位,比如说模拟人眼的眼光,可以盯着一个运动的动态物体看,随之产生的反应包括转头,弯腰,转身,通过控制器动画可以达到动态的表现动画需求。
[0078] 绑定动画:绑定动画允许把其他物体动画绑定点,挂节点绑定到动画中,比如说人物手上可以拿刀拿枪,美术不需要制作多套不同的动画去匹配,只需要把刀,枪等物体通过绑定点绑定到相应位置就可以了,同时通过绑定点的位置运算可以实现绑定动画的无缝连接。
[0079] 动画压缩:伴随着大量的复杂动画的实现与添加,使之而来的是巨量的数据,如果没有对数据进行压缩和处理,那么对系统的承载压力将是一个巨大的考验,针对这种情况,将数据结构进行梳理,在效果没有损失的情况下把动画数据由一个矩阵转换为双重四元数,在动画数据上的压缩达到了一半,同时将关键帧数据通过曲线平滑使数据量进一步减少,最后通过32位数据以2个16位数据保存的方式使最终的数据量小了80%。
[0080] 碰撞系统:碰撞系统使用了物理引擎开发,能够支持射线检测,几何体检测,动力学模拟。在碰撞系统中将动画模型数据进行简化,得到一个近似的距离,在检测完成后根据距离进行向量偏移得到最后的结果,这种方法比普通的遍历运算快10倍以上,通过互相碰撞和动力学模拟,能构计算出每个动画片段的冲量,速度,动能,再计算出最后的位置和形体结构。碰撞系统结合了诸多高级算法比如GJK算法来加速计算过程。
[0081] 导航系统:动画系统中导航起到了动态侦测路径的作用,比如一座吊桥动画在动画过程中导航也是在不断变化的,为了动态适应路径侦测,动画系统中需要实现动态的导航系统以满足游戏开发的需求。在动画制作过程中设定导航基础网格,通过权重和偏移信息实时计算出导航的位置和作用范围。
[0082] LOD系统:需要支持成百上千的动画实时在计算机中表现和交互,LOD系统是必不可少的优化方式。主要分为动画LOD与骨骼LOD。通过距离的远近判断出动画的重要性和先后关系。动画LOD在远距离会简化动画运算的机制,从而只计算出粗略的动画效果,通过减少浮点精度,减少权重循环次数来优化效率。骨骼LOD是通过减少骨骼的方式来减少计算量,主要方法是简化父子关系,根据父子关系的重要层级来推算需要去除的骨骼,距离越远去除的骨骼就越多,效率就越高。
[0083] 动画管理器:会对动画进行内存共用,多线程计算,动画调度,统一计数管理。是动画系统的控制中心。采用单件架构,核心数据的调用与访问通过动画管理器完成。
[0084] 动画实体:动画实体是动画对象呈现的具体方式,也是暴露给上层的调用。包含各个动画单体的具体信息,通过动画实体与其他模块进行数据交互和共享。
[0085] 动画编辑器:动画编辑器提供制作人员所见即所得的编辑操作功能,通过交互式的人机界面进行创作,能够支持取消操作和操作记录,通过人性化的面板制定出通俗易懂的编辑流程。动画编辑器能大大减少项目开发的工作量,同时能合理化分配任务,使制作过程变得顺畅。对提高工作效能产生了极大的帮助。编辑器支持在线和离线操作,对保证工作进度,协同开发提供了良好的平台,通过将数据记录在服务器,同步客户端数据的方式来实现异步操作和数据刷新共享
[0086] 三维游戏动画系统中的各个功能模块,如骨骼动画,面部表情动画,换装系统,反向动力学,软体动画,控制器动画,绑定动画,它们作为直接功能以接口的方式提供给用户使用,动画管理器主要负责对动画系统的数据进行统一管理,它作为底层功能对动画系统提供支持,用户无法直接通过接口对底层数据进行操作和干预。动画系统在实现的过程中需要多种技术模块作为底层功能进行支持,没有这些功能无法实现上层的功能,如动画序列,动画树,动画过渡,多重动画混合,动画压缩,碰撞系统,导航系统,LOD系统。动画编辑器作为可视化工具提供给开发人员使用,是属于最高层的开发。
[0087] 动画管理系统包含多个动画实体和动画编辑器;动画系统的子模块组合成完整的动画系统。上层开发人员不需要了解动画系统的详细开发方式,只需了解每个模块接口调用规则即可方便的制作游戏动画。这对开发人员的使用提供了极大的便利。在渲染方面通过暴露给外部的虚函数可以重载函数达到自定义化的实现功能,动画管理系统负责动画实体,动画数据,动画文件的管理,通过动画管理系统把动画实体交给更高层的场景管理系统进行管理,启到系统管理的目的。动画管理模块会对动画系统进行内存管理,包括动画数据,模型数据,骨骼数据,权重数据,顶点数据,导航数据,碰撞数据,控制器数据,物理数据,捕捉数据,绑定数据。这些数据会通过单件管理的方式进行全局管理。
[0088] 其中,绑定动画:通过让某个实体(可以是静态模型,半透明物体,特效或者其他的骨骼模型,任意的实体)绑定到骨骼上,从而当骨骼运动的时候,骨骼会带动实体跟着运动,达到帧帧跟随骨骼运动,然后把这些具体实现的步骤封装提供给外部模块进行调用。
[0089] 动画压缩:关键帧避免每帧需要保存帧数据,双向四元素减少从CPU->GPU的数据量通过一个四元数float4表示旋转四元数,另一个四元数表示平移和缩放来减少数据量传递到GPU。然后把这些具体实现的步骤封装提供给外部模块进行调用。
[0090] 动画序列:动画数据是由一组序列的帧数据组成的并放在时间轴上进行播放,随着时间的推进,产生各个帧序列的数据。然后把这些具体实现的步骤封装提供给外部模块进行调用。
[0091] 控制器动画:通过美术人员设置关键帧数值,而程序线性插值产生帧数据或者设置关键帧的uv数值,然后产生uv动画或者设置关键帧的材质参数,从而产生材质动画。然后这些具体实现的步骤封装提供给外部模块进行调用。
[0092] 下面对程序各个类的功能和关系进行分析和阐述:
[0093] 如图4至图13所示,基础动画网格类是最基础的网格类,实际上它是一个虚基类,主要提供大量接口给派生类重写,一个动画节点类包含多个基础动画网格类的指针,基础动画网格类根据不同的派生对象实现相关功能。基础动画网格类包含对应网格的网格数据,渲染数据,碰撞数据,材质数据,LOD数据,导航数据。
[0094] 骨骼类是特殊的动画网格类,它不包含实质性的渲染数据,它包含了父子关系数据,动画数据指针,动画计算方式接口,骨骼ID号。
[0095] 蒙皮网格类是动画网格的具体实现,它包含网格蒙皮数据,权重数据,骨骼索引数据,通过骨骼类提供的矩阵调色板蒙皮进行蒙皮计算。
[0096] 刚性网格类和蒙皮网格类的区别是刚性网格类不会有蒙皮计算,适用于不会有形变的刚性物体的运动,所以它不需要蒙皮数据。
[0097] 由蒙皮网格类派生出来的基于混合函数的蒙皮网格类,基于着色器加速的蒙皮网格类和基于CPU运算的蒙皮网格类区别在于,基于混合函数的蒙皮网格类是通过外部的显卡驱动渲染接口层提供的接口进行运算,具有一定的局限性,基于着色器加速的蒙皮网格类是通过着色器加速运算,基于显卡的多流进行多重并行运算,是使用最普遍的类,效率最高,但是对骨骼数量有一定的限制。基于CPU运算的蒙皮网格类是完全基于CPU运算的网格,它的效率最低,但没有骨骼限制。动画系统会根据计算机配置自动采用最佳方案。
[0098] 动画节点类可以包含多个基础动画网格类,动画节点类对一组网格进行统一管理,包括渲染,骨骼统一计算数据处理,动画文件的保存读取操作。上层功能模块基本都是在这个类里面实现,是一组功能集的实现。
[0099] 换装文件节点类是一种特殊的动画节点,当动画需要换装时需要换装文件节点类对换装部位进行网格的替换,状态设置,同时对换装的引用计数进行控制。动画节点的数据在这里会进行共享,以便计算时需要。
[0100] 动画节点管理类属于底层管理模块,对大量不同的动画节点进行管理,包括更新调用,数据同步,动画节点管理类是一个单件类,通过容器保存所有动画节点的指针,所以在程序中可以通过公共接口进行操作。
[0101] 动画文件管理类是对动画节点管理类的一个补充,主要负责统计和调用管理,对文件的批量管理。
[0102] 动画实体类是上层功能模块的实现,上层程序开发人员通过此类的接口进行数据的访问,调用和处理操作。上层开发人员只和此类打交道,避免了无用的信息去干扰开发。动画实体类最终会添加到场景管理器中交给引擎托管,整套程序流程也是到此结束。
[0103] 底层功能模块都是在动画节点类中实现,其中动画压缩采用的手段包括双重四元数和字节数据合并。以前保存矩阵需要16个浮点数即64个字节,采用双重四元数的话可以只需要8个浮点数即32个字节,数据量减少百分之五十,具体方式为一般的矩阵保存位置,旋转,缩放信息,需要16个浮点,其中4行每一行的第4位浮点固定为0,0,0,1,这四个浮点是常量,所以去掉,也就是把矩阵进行转置,可以压缩成4乘3的矩阵,节约了三分之一,双重四元数把位置旋转缩放数据以四元数的方式表达,而不是以传统的欧拉角方式表达,进而把缩放变量以四元数方式再乘以位置与旋转的四元数上得到2个四元数。2个四元数就可以保存信息。字节数据合并也就是把32位的浮点数以2个16位浮点进行压缩,这样的话1个32位浮点可以保存2个数据,在数据量上再减少了一半。
[0104] 动作过渡采用的是贝塞尔插值,比线性插值得到的结果更为平滑,而且通过贝塞尔差值的动画实际上需要保存的关键帧数据可以进一步减少,不需要保存太多的帧数据从而使内存和磁盘空间得到一定的减少。
[0105] 多重动画混合先把骨骼按部位进行划分,保存在一个配置表中,然后根据部位进行动画设置,每个部位可以播放各自所需要的动画,在进行动画运算时首先判断骨骼属于哪个部位,然后根据部位找到对应播放的动画,再根据该动画数据进行骨骼计算得到结果。每个部位都保存各自一套完整的数据。最后进行骨骼解算,得到整套骨骼的最终数据。
[0106] 动画树和动画序列所采用的方式和当前主流的方式相近。在底层功能模块开发完成后会开发底层管理模块,采用的方法是采用单件开发,全局有一个统一的管理器,根据引用计数进行判断,当小于等于0删除内存,反之保留内存直至动画系统全盘销毁为止。
[0107] 然后下一步就是实现上层功能模块,动画LOD系统采用的方法包括骨骼LOD,网格LOD,动画数据LOD。
[0108] 网格LOD采用了普通的直接突变的方式,只需提前制作出对应级别的网格即可。
[0109] 骨骼LOD采用的方法为首先根据骨骼连接关系确定父子关系,在低级别不需要精确的情况下,可以根据父子关系在运算动画时跳过低级别的也就是不重要的骨骼,这样的话需要运算的骨骼可以得到一定的减少,如果级别越低需要运算的骨骼就越少,计算量越少所占用的计算时间也会越少,而且效果会根据减少量逐一降低,开发人员可以进行更好的把控,因为在低级别下,一般不需要看到太精确的细节,所以这种优化会变得非常的实用。
[0110] 动画LOD所采用的技术方法为在低级别下每个顶点受到的骨骼权重会减少,最高级别下会受到4个权重,也就是受到4根骨骼的影响,在低级别下只受到2根骨骼的影响,即只有2个权重,这样的话运算效率也会得到提升。上层功能模块开发完成后就是开发编辑工具,以提供可视化编辑功能给上层开发者使用。
[0111] 综上所述,本发明将游戏动画系统的需求进行归拢,继而进行重新的设计与架构,针对效率,承载量等优化难点进行重点攻关。在架构时就考虑到效率平衡性,软件扩展性,对系统进行完整的设计与封装,最终完成开发工作。
[0112] 最后应说明的是:以上所述仅为本发明的优选实施例而已,并不用于限制本发明,尽管参照前述实施例对本发明进行了详细的说明,对于本领域的技术人员来说,其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
高效检索全球专利

专利汇是专利免费检索,专利查询,专利分析-国家发明专利查询检索分析平台,是提供专利分析,专利查询,专利检索等数据服务功能的知识产权数据服务商。

我们的产品包含105个国家的1.26亿组数据,免费查、免费专利分析。

申请试用

分析报告

专利汇分析报告产品可以对行业情报数据进行梳理分析,涉及维度包括行业专利基本状况分析、地域分析、技术分析、发明人分析、申请人分析、专利权人分析、失效分析、核心专利分析、法律分析、研发重点分析、企业专利处境分析、技术处境分析、专利寿命分析、企业定位分析、引证分析等超过60个分析角度,系统通过AI智能系统对图表进行解读,只需1分钟,一键生成行业专利分析报告。

申请试用

QQ群二维码
意见反馈