一种基于可编程gpu的骨骼动画处理方法

文档序号:6383633阅读:558来源:国知局
专利名称:一种基于可编程gpu的骨骼动画处理方法
技术领域
本发明涉及计算机图形领域,特别是一种骨骼蒙皮动画的处理方法。
背景技术
骨骼蒙皮动画也叫做骨骼动画。使用骨骼动画技术。可以塑造出各种各样,栩栩如生的动画角色。其中,人体的骨骼动画运用得最为广泛。一般来说,骨骼动画由两部分来表示。一部分是形成层次的一系列的骨骼,通常称为骨架,另一部分是蒙在骨架上的皮肤。在骨骼动画渲染时,求每一个与骨骼节点绑定的顶点在下一时刻的位置都要进行一次坐标变换,这需要大量的矩阵和乘法运算。在可编程硬件出现之前,这些工作都是由CPU来完成。CPU需要承担实时应用中大部分的运算,如场景管理,物理计算等等,这样就会造成CPU与GPU之间的负荷不平衡,当系统负荷变大时,CPU就成为提高系统性能的瓶颈,因此很难实现实时动画。随着图形硬件性能的提高,GPU的可编程性和计算性能越来越高。GPU全称是GraphicProcessing Unit,即图形处理单兀,GPU作为图形渲染的最重要硬件,随着其处理能力的不断提高和可编程性的不断完善,如何让GPU代替CPU完成更多的工作以平衡两者的协作已经成为计算机动画领域的研究热点之一。GPU使显卡减少了对CPU的依赖,并能处理部分原本CPU的工作,尤其是在处理3D图形时。如果将一些计算从CPU转移至可编程GPU中,从而将CPU解放出来用于诸如场景管理、光照以及物理等计算,可以实现更加丰富多彩的效果。目前将工作从CPU转移至GPU已经是一种技术趋势,因此如何将可编程GPU引入到骨骼动画技术之中是一个值得研究的课题,可以预见在骨骼动画领域,GPU具有良好的应用前景。

发明内容
本发明意在提供一种基于可编程GPU的骨骼动画处理方法,将骨骼动画不同部分的计算任务放到GPU中进行,使部分或者全部的计算量从CPU转移到GPU,从而将CPU从繁重的顶点变换、骨骼更新的计算中解脱出来。本发明揭示了一种基于可编程GPU的骨骼动画处理方法,步骤一在CPU中将顶点绑定到其所对应的骨骼;步骤二 在CPU中将骨骼的偏移量矩阵与其所对应的骨架进行绑定;步骤三在CPU中更新骨架并将更新后的骨架与其所对应的偏移量矩阵作矩阵乘法,然后将更新后的骨骼矩阵与顶点信息传送到GPU中;步骤四在GPU中利用传入的骨骼矩阵对顶点信息进行更新。本发明揭示了另一种基于可编程GPU的骨骼动画处理方法,包括步骤一在CPU中将顶点绑定到对应的骨骼;步骤二 在CPU中将骨骼的偏移量矩阵与其所对应的骨架进行绑定;步骤三在CPU中计算得到起始骨架和结束骨架,将更新后的骨架与其所对应的偏移量矩阵作矩阵乘法,并将计算结果传送到GPU中;步骤四在GPU中对起始骨骼矩阵和结束骨骼矩阵进行插值运算,得到当前时间点的骨骼矩阵,并利用该矩阵对顶点信息进行更新。本发明还揭示了一种基于可编程GPU的骨骼动画处理方法,包括步骤一在CPU中将顶点绑定到对应的骨骼;步骤二 在CPU中将骨骼的偏移量矩阵与其所对应的骨架进行绑定;步骤三在CPU中计算得到所有动画的骨架,将更新后的骨架与其所对应的偏移量矩阵作矩阵乘法,并将这些计算结果制作成纹理,传送到GPU中;步骤四GPU采样数据纹理,并用采样的结果对顶点信息进行更新。


图1实施例1的基于GPU的骨骼动画框架图;图2实施例1的处理方法的流程图;图3实施例2的处理方法流程图;图4实施例3的处理方法的流程图。
具体实施例方式由于CPU与GPU构造的不同,决定了他们计算与数据存储方式的不同。所以,基于(PU的算法并不能够简单的复制用于GPU中,必须先要对其进行分析与简化。骨骼动画中的数据计算主要包括以下四方面(I)骨骼与顶点的对应关系;(2)骨骼的偏移矩阵与骨架的对应关系;(3)骨架的更新;(4)顶点的更新。使用GPU进行计算与使用CPU进行计算有很大的不同。GPU在顶点处理阶段处理的每一个点,都使用同样的算法进行计算,对于像素处理阶段的每一个像素也是如此。并且在GPU中每个顶点或者像素的计算是相互独立的,当前的计算结果不能用于下 个顶点或者像素,而且顶点与顶点之间,像素与像素之间,计算结果不能被共享。由此可见,GPU较适合用于大规模并行计算,而不适合用来做逻辑性和复杂性很高的算法运算。因此,要将骨骼动画的某些运算交付给GPU来执行,这些运算必须保持算法简单,且适用于大量数据。所以在设计基于GPU的算法时应尽量保证程序的简洁。在了解了 GPU的计算特性之后,下面将对这四种计算分别进行分析(I)骨骼与顶点的对应关系骨骼与顶点的创建是分开的,但在创建的过程中,我们要将骨骼与顶点绑定在一起。这样当我们改变骨骼时,顶点才会跟着一起移动。(2)骨骼的偏移矩阵与骨架的对应关系骨骼的偏移矩阵规定了绑定在某个骨骼中顶点的偏移量,它与骨架一起控制了顶点在空间中的位置。(3)骨架的更新骨骼矩阵的改变会对它的兄弟骨骼和子骨骼产生影响,所以要对相应的骨骼进行更新,即骨架的更新。(4)顶点的更新
在整个骨架的位置改变后,附着在骨架上的顶点当然也需要改变,这样才能使模型动起来。被改变的顶点信息有顶点的位置及顶点的法向量。从以上分析可以发现骨骼与顶点的对应关系需要保留计算结果以用于下一步的计算,并且由于涉及到很多的查找计算,所以算法相对比较复杂。骨骼的偏移矩阵与骨架的对应关系同样需要保留计算结果用于下一步的计算,同样因为涉及到很多的查找计算,所以算法也相对比较复杂。骨架更新的计算结果也需要保留并且由于骨架采样是树形存储结构,一般使用递归的方法进行更新。算法比较复杂,也并不适合在GPU中计算。但是,因为骨骼动画是许多不同骨架的演化结果.所以仍有办法在GPU中生成新的骨架。顶点更新的结果可以直接输出到屏幕上而无需保留,所以顶点更新是骨骼动画中最适合GPU计算的一部分。在过去的骨骼动画中,所有的计算都在CPU中进行,计算得到的所有结果都放到顶点缓存中,然后送入GPU,最后绘制在屏幕上。由于本发明的方法将顶点更新甚至骨架更新的一部分计算放到GPU中去处理,因此不仅要将原始的顶点数据送入GPU中,而且还要将所有用于顶点更新的数据信息一同传给GPU。由于CPU与GPU之间进行数据传递并不像CPU从内存中调用数据那样方便,二者之间的数据传递相对来说是比较费时的,特别是在传递大段数据的时候更是如此。所以在算法设计中应尽量减少两者之间数据传递的频率,并且传递的数据量不要太大。CPU与GPU之阆数据的传递方法有两种(I)直接传递,该方法在传递数据时消耗比较大。传递后的数据放在GPU的内存中,在GPU计算过程中调用比较方便;(2)利用数据纹理进行传递,该方法在数据传递时消耗比较小。但传递后的数据存放在GPU的纹理内存中,为了获取所需的数据,我们需要计算出数据在纹理中的位置,并对相应位置的纹理进行采样。实施例1 :该实施例将逻辑较为复杂的骨架更新等工作放在CPU中进行计算,将逻辑较为简单的顶点更新放在GPU中进行计算,充分利用了 CPU与GPU的资源,框架图如图1所示。但是由于骨骼更新的工作在CPU中进行,所以在每次渲染的时候都需要将更新后的矩阵传入GPU中去。如图2所示,步骤如下第一步在CPU中将顶点绑定到其所对应的骨骼;第二步在CPU中将骨骼的偏移量矩阵与其所对应的骨架进行绑定;第三步在CPU中更新骨架并将更新后的骨架与其所对应的偏移量矩阵作矩阵乘法,然后将更新后的骨骼矩阵与顶点信息传送到GPU中;第四步在GPU中利用传入的骨骼矩阵对顶点信息进行更新。实施例2 该实施例是顶点动画与骨骼动画的结合,用一组起始位置的骨骼矩阵和一组结束位置的骨骼矩阵来表示一段动画,即对始末位置骨骼矩阵进行线性插值得到中间动画姿势。该实施例所展示的方法在初始化的时候完成起始位置骨骼矩阵和结束位置骨骼矩阵的计算工作,然后将所有与骨骼动画相关的计算都放入GPU中完成。该实施例所展示的方法的优点在于减少了 CPU与GPU之间的通讯,缺点在于仅使用GPU进行计算,浪费了 CPU的资源,加重了 GPU的负担。
如图3所示,步骤如下第一步在CPU中将顶点绑定到对应的骨骼;第二步在CPU中将骨骼的偏移量矩阵与其所对应的骨架进行绑定;第三步在CPU中计算得到起始骨架和结束骨架,将更新后的骨架与其所对应的偏移量矩阵作矩阵乘法,并将计算结果传送到GPU中;第四步在GPU中对起始骨骼矩阵和结束骨骼矩阵进行插值运算,得到当前时间点的骨骼矩阵,并利用该矩阵对顶点信息进行更新。实施例3 该实施例以数据纹理作为传输方法,通过将骨骼动画创建到纹理中,再通过纹理采样的方式来获取骨骼矩阵。该实施例所展示的方法的优点在于减少了 CPU与GPU之间的通讯,缺点在于仅使用GPU进行计算,浪费了 CPU的资源,加重了 GPU的负担。但是数据纹理作为一种能方便传输大量数据的方法,为实现骨骼动画提供了另一种途径。预创建骨骼动画法可以将骨骼动画数据制作成纹理,也可以创建一个纹理的ResourceView将数据映射到纹理中去。前者需要事先创建好纹理,而后者需要在初始化的过程中,计算骨骼动画的信息并映射到纹理的ResourceView中。如图4所示,步骤如下第一步在CPU中将顶点绑定到对应的骨骼;第二步在CPU中将骨骼的偏移量矩阵与其所对应的骨架进行绑定;第三步在CPU中计算得到所有动画的骨架,将更新后的骨架与其所对应的偏移量矩阵作矩阵乘法,并将这些计算结果制作成纹理,传送到GPU中;第四步GPU采样数据纹理,并用采样的结果对顶点信息进行更新。本发明展示了几种基于可编程GPU技术的骨骼动画,通过使用不同的可编程GPU技术,将骨骼动画不同部分的计算任务放到GPU中进行,使部分或者全部的计算量从CPU转移到GPU,从而将CPU从繁重的顶点变换、甚至骨骼更新的计算中解脱出来。本发明主张的权利范围并不限制于被披露的特定的形式,而是覆盖所有的改进、等效和其它任何落入本发明的精神和范围的内容。
权利要求
1.一种基于可编程GPU的骨骼动画处理方法,包括 步骤一在CPU中将顶点绑定到其所对应的骨骼; 步骤二 在CPU中将骨骼的偏移量矩阵与其所对应的骨架进行绑定; 步骤三在CPU中更新骨架并将更新后的骨架与其所对应的偏移量矩阵作矩阵乘法,然后将更新后的骨骼矩阵与顶点信息传送到GPU中; 步骤四在GPU中利用传入的骨骼矩阵对顶点信息进行更新。
2.一种基于可编程GPU的骨骼动画处理方法,包括 步骤一在CPU中将顶点绑定到对应的骨骼; 步骤二 在CPU中将骨骼的偏移量矩阵与其所对应的骨架进行绑定; 步骤三在CPU中计算得到起始骨架和结束骨架,将更新后的骨架与其所对应的偏移量矩阵作矩阵乘法,并将计算结果传送到GPU中; 步骤四在GPU中对起始骨骼矩阵和结束骨骼矩阵进行插值运算,得到当前时间点的骨骼矩阵,并利用该矩阵对顶点信息进行更新。
3.一种基于可编程GPU的骨骼动画处理方法,包括 步骤一在CPU中将顶点绑定到对应的骨骼; 步骤二 在CPU中将骨骼的偏移量矩阵与其所对应的骨架进行绑定; 步骤三在CPU中计算得到所有动画的骨架,将更新后的骨架与其所对应的偏移量矩阵作矩阵乘法,并将这些计算结果制作成纹理,传送到GPU中; 步骤四GPU采样数据纹理,并用采样的结果对顶点信息进行更新。
4.一种基于可编程GPU的骨骼动画处理系统,包括 用于在CPU中将顶点绑定到其所对应的骨骼的装置; 用于在CPU中将骨骼的偏移量矩阵与其所对应的骨架进行绑定的装置; 用于在CPU中更新骨架并将更新后的骨架与其所对应的偏移量矩阵作矩阵乘法,然后将更新后的骨骼矩阵与顶点信息传送到GPU中的装置; 用于在GPU中利用传入的骨骼矩阵对顶点信息进行更新的装置。
5.一种基于可编程GPU的骨骼动画处理系统,包括 用于在CPU中将顶点绑定到对应的骨骼的装置; 用于在CPU中将骨骼的偏移量矩阵与其所对应的骨架进行绑定的装置; 用于在CPU中计算得到起始骨架和结束骨架,将更新后的骨架与其所对应的偏移量矩阵作矩阵乘法,并将计算结果传送到GPU中的装置; 用于在GPU中对起始骨骼矩阵和结束骨骼矩阵进行插值运算,得到当前时间点的骨骼矩阵,并利用该矩阵对顶点信息进行更新的装置。
6.一种基于可编程GPU的骨骼动画处理系统,包括 用于在CPU中将顶点绑定到对应的骨骼的装置 用于在CPU中将骨骼的偏移量矩阵与其所对应的骨架进行绑定的装置; 用于在CPU中计算得到所有动画的骨架,将更新后的骨架与其所对应的偏移量矩阵作矩阵乘法,并将这些计算结果制作成纹理,传送到GPU中的装置; 用于GPU采样数据纹理,并用采样的结果对顶点信息进行更新的装置。
全文摘要
本发明意在提供一种基于可编程GPU的骨骼动画处理方法,将骨骼动画不同部分的计算任务放到GPU中进行,使部分或者全部的计算量从CPU转移到GPU,从而将CPU从繁重的顶点变换、骨骼更新的计算中解脱出来。一种基于可编程GPU的骨骼动画处理方法,步骤一在CPU中将顶点绑定到其所对应的骨骼;步骤二在CPU中将骨骼的偏移量矩阵与其所对应的骨架进行绑定;步骤三在CPU中更新骨架并将更新后的骨架与其所对应的偏移量矩阵作矩阵乘法,然后将更新后的骨骼矩阵与顶点信息传送到GPU中;步骤四在GPU中利用传入的骨骼矩阵对顶点信息进行更新。
文档编号G06T13/00GK103021008SQ20121052777
公开日2013年4月3日 申请日期2012年12月11日 优先权日2012年12月11日
发明者贺景卫, 李彦, 吴佩, 周文敏, 皮珊珊 申请人:湖南师范大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1