3d骨骼动画的渲染方法及装置制造方法

文档序号:6521841阅读:240来源:国知局
3d骨骼动画的渲染方法及装置制造方法
【专利摘要】本发明提供一种3D骨骼动画的渲染方法及装置,所述方法包括以下步骤:创建骨骼动画对象,并加载预先生成的全局骨骼矩阵数据;载入动画对象并进行动画播放,从所述全局骨骼矩阵数据中获取动画的当前帧所需要的骨骼矩阵数据,并将该骨骼矩阵数据传入GPU中;在GPU中获取骨骼动画着色器代码、图像对象以及模型顶点数据,并根据所获取的骨骼矩阵数据、骨骼动画着色器代码、图像对象以及模型顶点数据进行运算,渲染出骨骼动画画面。本发明的方法及装置避免了在实际环境中通过CPU计算全局骨骼矩阵数据所带来的CPU资源消耗过大的问题,有效降低了CPU的占用率,特别是针对复杂和计算量庞大的骨骼动画模型具有显著的性能优势。
【专利说明】3D骨骼动画的渲染方法及装置
【技术领域】
[0001]本发明涉及计算机图形【技术领域】,特别是涉及一种3D骨骼动画的渲染方法以及一种3D骨骼动画的渲染装置。
【背景技术】
[0002]当前有两种模型动画的方式:顶点动画和骨骼动画。在骨骼动画中,模型具有互相连接的“骨骼”组成的骨架结构,通过改变骨骼的朝向和位置来为模型生成动画。
[0003]骨骼动画比顶点动画要求更高的处理器性能,但同时它也具有更多的优点,骨骼动画可以更容易、更快捷地创建。不同的骨骼动画可以被结合到一起,比如模型可以转动头部、射击并且同时也在走路。一些引擎可以实时操纵单个骨骼,这样就可以和环境更加准确地进行交互——模型可以俯身并向某个方向观察或射击,或者从地上的某个地方捡起一个东西等。
[0004]目前,一般的3D(即三维)引擎中,在实现骨骼动画的时候,都是每帧动画使用CPU(Central Processing Unit,中央处理器)即时计算全局骨骼矩阵数据,然后再提交给GPU(Graphics Processing Unit,图形处理单元),渲染出3D骨骼动画模型来。然而,采用上述方法实现3D骨骼动画,由于每帧动画均需消耗CPU计算资源,3D骨骼动画模型数量大时会导致CPU占用率过高;尤其是对于一些特别消耗CPU来计算骨骼姿势数据的骨骼模型来说,对CPU资源的消耗更为严重,甚至会导致引用卡顿现象的出现。

【发明内容】

[0005]基于此,本发明提供一种3D骨骼动画的渲染方法及装置,能够降低CPU的占用率,减小CPU资源的消耗。
[0006]为实现上述目的,本发明采用如下的技术方案:
[0007]一种3D骨骼动画的渲染方法,包括以下步骤:
[0008]创建骨骼动画对象,并加载预先生成的全局骨骼矩阵数据;
[0009]载入动画对象并进行动画播放,从所述全局骨骼矩阵数据中获取动画的当前帧所需要的骨骼矩阵数据,并将该骨骼矩阵数据传入GPU中;
[0010]在GPU中获取骨骼动画着色器代码、图像对象以及模型顶点数据,并根据所获取的骨骼矩阵数据、骨骼动画着色器代码、图像对象以及模型顶点数据进行运算,渲染出骨骼动画画面。
[0011]一种3D骨骼动画的渲染装置,包括:
[0012]对象创建及数据加载模块,用于创建骨骼动画对象,并加载预先生成的全局骨骼矩阵数据;
[0013]数据获取模块,用于载入动画对象并进行动画播放,从所述全局骨骼矩阵数据中获取动画的当前帧所需要的骨骼矩阵数据,并将该骨骼矩阵数据传入GPU中;
[0014]渲染模块,用于在GPU中获取骨骼动画着色器代码、图像对象以及模型顶点数据,并根据所获取的骨骼矩阵数据、骨骼动画着色器代码、图像对象以及模型顶点数据进行运算,渲染出骨骼动画画面。
[0015]由以上方案可以看出,本发明的3D骨骼动画的渲染方法及装置,在动画播放前已经预先生成了全局骨骼矩阵数据,这样一来在播放动画的过程中可以直接加载全局骨骼矩阵数据,不再需要CPU去计算骨骼动画每帧的全局骨骼矩阵数据,从而避免了在实际环境中通过CPU计算全局骨骼矩阵数据所带来的CPU资源消耗过大的问题,有效降低了 CPU的占用率,特别是针对复杂和计算量庞大的骨骼动画模型具有显著的性能优势。
【专利附图】

【附图说明】
[0016]图1为本发明一种3D骨骼动画的渲染方法的流程示意图;
[0017]图2为本发明一种3D骨骼动画的渲染装置的结构示意图。
【具体实施方式】
[0018]为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
[0019]参见图1所示,一种3D骨骼动画的渲染方法,包括以下步骤:
[0020]步骤S101,创建骨骼动画对象,并加载预先生成的全局骨骼矩阵数据。
[0021]需要说明的是,本发明中的全局骨骼矩阵数据并不是在实际使用环境中利用CPU即时计算出来的,而是在实际使用环境外就已经事先生成的。以实际使用环境如游戏中为例进行说明,本发明在游戏前就已经预先生成全局骨骼矩阵数据,游戏时直接使用全局骨骼矩阵提交到GPU中进行渲染即可,无需再用CPU去计算全局骨骼姿势矩阵,故可以不用考虑资源的消耗问题。作为一个较好的实施例,本发明中生成所述全局骨骼矩阵数据的过程具体包括如下:
[0022]创建骨骼动画对象,加载骨骼动画所需要的资源,并对所述资源进行解析,获得骨骼、动作姿势数据;
[0023]根据所述骨骼、动作姿势数据进行动画播放,并在播放动画的每一帧时计算全局骨骼姿势矩阵数据,将计算得到的全局骨骼姿势矩阵数据存放到一个动作帧列表中;
[0024]在当前动作全部帧计算完毕后,将所述动作帧列表中所存放的所有的全局骨骼矩阵数据保存成动作磁盘文件。具体的,该磁盘文件可以为二进制格式,即将计算得到的动作全局骨骼矩阵数据以二进制的形式保存成动作磁盘文件。
[0025]另外,作为一个较好的实施例,所述加载预先生成的全局骨骼矩阵数据的过程具体可以包括如下:加载所述动作磁盘文件,并对该动作磁盘文件分时间段(这个时间可以弹性控制,使得解析过程不会因为占用过多CPU导致游戏卡顿的现象)进行解析,得到所述全局骨骼矩阵数据。
[0026]步骤S102,载入动画对象并进行动画播放,从所述全局骨骼矩阵数据中获取动画的当前帧所需要的骨骼矩阵数据,并将该骨骼矩阵数据传入GPU中。
[0027]具体的,在进行动画播放时可以调用帧函数,并根据帧函数来获取当前帧所需要的骨骼矩阵数据,然后通过GPU对象将所述骨骼矩阵数据传入GPU内存中。[0028]步骤S103,在GPU中获取骨骼动画着色器代码(即Shader)、图像对象以及模型顶点数据,具体可以通过GPU对象将骨骼动画着色器代码、图像对象以及模型顶点数据传入GPU内存中;并根据步骤S102中所获取的骨骼矩阵数据以及本步骤中获取到的骨骼动画着色器代码、图像对象、模型顶点数据进行运算,渲染出当前帧的骨骼动画画面。
[0029]与上述一种3D骨骼动画的渲染方法相对应,本发明还提供一种3D骨骼动画的渲染装置,如图2所示,包括:
[0030]对象创建及数据加载模块101,用于创建骨骼动画对象,并加载预先生成的全局骨骼矩阵数据;
[0031]数据获取模块102,用于载入动画对象并进行动画播放,从所述全局骨骼矩阵数据中获取动画的当前帧所需要的骨骼矩阵数据,并将该骨骼矩阵数据传入GPU中;
[0032]渲染模块103,用于在GPU中获取骨骼动画着色器代码、图像对象以及模型顶点数据,并根据所获取的骨骼矩阵数据、骨骼动画着色器代码、图像对象以及模型顶点数据进行运算,渲染出骨骼动画画面。
[0033]作为一个较好的实施例,所述3D骨骼动画的渲染装置还可以包括:
[0034]预处理模块,用于在加载预先生成的全局骨骼矩阵数据之前,生成所述全局骨骼矩阵数据。
[0035]作为一个较好的实施例,所述预处理模块可以包括:
[0036]解析模块,用于创建骨骼动画对象,加载骨骼动画所需要的资源,并对所述资源进行解析,获得骨骼、动作姿势数据;
[0037]计算模块,用于根据所述骨骼、动作姿势数据进行动画播放,并在播放动画的每一帧时计算全局骨骼姿势矩阵数据,将计算得到的全局骨骼姿势矩阵数据存放到动作帧列表中;
[0038]存储模块,用于在当前动作全部帧计算完毕后,将所述动作帧列表中的全局骨骼矩阵数据保存成动作磁盘文件。
[0039]作为一个较好的实施例,所述对象创建及数据加载模块可以包括:
[0040]动作磁盘文件解析模块,用于加载所述动作磁盘文件,并对该动作磁盘文件分时间段进行解析,得到所述全局骨骼矩阵数据。
[0041]作为一个较好的实施例,所述磁盘文件可以为二进制格式。
[0042]上述一种3D骨骼动画的渲染装置的其它技术特征与本发明的一种3D骨骼动画的渲染方法相同,此处不予赘述。
[0043]需要说明的是,除非上下文另有特定清楚的描述,本发明中的元件和组件,数量既可以单个的形式存在,也可以多个的形式存在,本发明并不对此进行限定。本发明中的步骤虽然用标号进行了排列,但并不用于限定步骤的先后次序,除非明确说明了步骤的次序或者某步骤的执行需要其他步骤作为基础,否则步骤的相对次序是可以调整的。
[0044]通过以上方案可以看出,本发明的3D骨骼动画的渲染方法及装置,在动画播放前已经预先生成了全局骨骼矩阵数据,这样一来在播放动画的过程中可以直接加载全局骨骼矩阵数据,不再需要CPU去计算骨骼动画每帧的全局骨骼矩阵数据,从而避免了在实际环境中通过CPU计算全局骨骼矩阵数据所带来的CPU资源消耗过大的问题,有效降低了 CPU的占用率,特别是针对复杂和计算量庞大的骨骼动画模型具有显著的性能优势。[0045] 以上所述实施例仅表达了本发明的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对本发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。因此,本发明专利的保护范围应以所附权利要求为准。
【权利要求】
1.一种3D骨骼动画的渲染方法,其特征在于,包括以下步骤: 创建骨骼动画对象,并加载预先生成的全局骨骼矩阵数据; 载入动画对象并进行动画播放,从所述全局骨骼矩阵数据中获取动画的当前帧所需要的骨骼矩阵数据,并将该骨骼矩阵数据传入GPU中; 在GPU中获取骨骼动画着色器代码、图像对象以及模型顶点数据,并根据所获取的骨骼矩阵数据、骨骼动画着色器代码、图像对象以及模型顶点数据进行运算,渲染出骨骼动画画面。
2.根据权利要求1所述的3D骨骼动画的渲染方法,其特征在于,生成所述全局骨骼矩阵数据的过程包括: 创建骨骼动画对象,加载骨骼动画所需要的资源,并对所述资源进行解析,获得骨骼、动作姿势数据; 根据所述骨骼、动作姿势数据进行动画播放,并在播放动画的每一帧时计算全局骨骼姿势矩阵数据,将计算得到的全局骨骼姿势矩阵数据存放到动作帧列表中; 在当前动作全部帧计算完毕后,将所述动作帧列表中的全局骨骼矩阵数据保存成动作磁盘文件。
3.根据权利要求2所述的3D骨骼动画的渲染方法,其特征在于,所述加载预先生成的全局骨骼矩阵数据的过程包括: 加载所述动作磁盘文件,并对该动作磁盘文件分时间段进行解析,得到所述全局骨骼矩阵数据。`
4.根据权利要求2所述的3D骨骼动画的渲染方法,其特征在于,所述磁盘文件为二进制格式。
5.—种3D骨骼动画的渲染装置,其特征在于,包括: 对象创建及数据加载模块,用于创建骨骼动画对象,并加载预先生成的全局骨骼矩阵数据; 数据获取模块,用于载入动画对象并进行动画播放,从所述全局骨骼矩阵数据中获取动画的当前帧所需要的骨骼矩阵数据,并将该骨骼矩阵数据传入GPU中; 渲染模块,用于在GPU中获取骨骼动画着色器代码、图像对象以及模型顶点数据,并根据所获取的骨骼矩阵数据、骨骼动画着色器代码、图像对象以及模型顶点数据进行运算,渲染出骨骼动画画面。
6.根据权利要求5所述的3D骨骼动画的渲染装置,其特征在于,还包括: 预处理模块,用于在加载预先生成的全局骨骼矩阵数据之前,生成所述全局骨骼矩阵数据。
7.根据权利要求6所述的3D骨骼动画的渲染装置,其特征在于,所述预处理模块包括: 解析模块,用于创建骨骼动画对象,加载骨骼动画所需要的资源,并对所述资源进行解析,获得骨骼、动作姿势数据; 计算模块,用于根据所述骨骼、动作姿势数据进行动画播放,并在播放动画的每一帧时计算全局骨骼姿势矩阵数据,将计算得到的全局骨骼姿势矩阵数据存放到动作帧列表中; 存储模块,用于在当前动作全部帧计算完毕后,将所述动作帧列表中的全局骨骼矩阵数据保存成动作磁盘文件。
8.根据权利要求7所述的3D骨骼动画的渲染装置,其特征在于,所述对象创建及数据加载模块包括: 动作磁盘文件解析模块,用于加载所述动作磁盘文件,并对该动作磁盘文件分时间段进行解析,得到所述全局骨骼矩阵数据。
9.根据权利要求7所述的3 D骨骼动画的渲染装置,其特征在于,所述磁盘文件为二进制格式。
【文档编号】G06T13/40GK103606180SQ201310634747
【公开日】2014年2月26日 申请日期:2013年11月29日 优先权日:2013年11月29日
【发明者】陈苏俊 申请人:广州菲动软件科技有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1