CN101458825B - 显卡中实现3d骨骼动画模型的碰撞检测方法及显卡、系统 - Google Patents

显卡中实现3d骨骼动画模型的碰撞检测方法及显卡、系统 Download PDF

Info

Publication number
CN101458825B
CN101458825B CN2009100760564A CN200910076056A CN101458825B CN 101458825 B CN101458825 B CN 101458825B CN 2009100760564 A CN2009100760564 A CN 2009100760564A CN 200910076056 A CN200910076056 A CN 200910076056A CN 101458825 B CN101458825 B CN 101458825B
Authority
CN
China
Prior art keywords
summit
pixel
information
video card
skeleton cartoon
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN2009100760564A
Other languages
English (en)
Other versions
CN101458825A (zh
Inventor
刘皓
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Tencent Technology Chengdu Co Ltd
Original Assignee
Tencent Technology Shenzhen Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Tencent Technology Shenzhen Co Ltd filed Critical Tencent Technology Shenzhen Co Ltd
Priority to CN2009100760564A priority Critical patent/CN101458825B/zh
Publication of CN101458825A publication Critical patent/CN101458825A/zh
Application granted granted Critical
Publication of CN101458825B publication Critical patent/CN101458825B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Image Generation (AREA)

Abstract

本发明实施例提供一种显卡中实现3D骨骼动画的碰撞检测方法及显卡、系统。属计算机绘图领域。方法包括:生成第一3D骨骼动画模型的三角形面顶点纹理或边顶点纹理时,将确定的三角形面顶点的信息或边顶点的信息传递给显卡的像素着色器;生成第二3D骨骼动画模型的边顶点纹理或三角形面顶点纹理时,将确定的边顶点的信息或三角形面顶点的信息传递给显卡的像素着色器;显卡的像素着色器输出第一3D骨骼动画模型的三角形面或边与第二3D骨骼动画模型的边或三角形面相交的像素点,查询显卡的像素着色器有像素点输出则确定第一3D骨骼动画模型与第二3D骨骼动画模型发生碰撞。该方法由显卡完成生成的3D骨骼动画模型的碰撞检测,节省CPU资源、减少CPU占用率。

Description

显卡中实现3D骨骼动画模型的碰撞检测方法及显卡、系统
技术领域
本发明涉及计算机绘图处理领域,尤其涉及一种显卡中实现3D骨骼动画模型的碰撞检测方法及显卡、系统。
背景技术
目前,随着计算机绘图处理技术的提高,计算机游戏的界面变的越来越漂亮,3D游戏(三维游戏)以其场景和打斗场面形象逼真的特点更受到玩家的青睐。在3D游戏中,为模拟真实的人物打斗场景,常需要在运行该3D游戏的计算机上进行大量三维动画的绘图处理,则使绘图时数据运算量较大,以往这些数据运算处理均由计算机的中央处理器CPU完成,处理后再传送至显卡中进行显示,但这种方式存在浪费CPU资源,CPU占用率过高的问题。随着显卡性能的不断发展完善,这些动画的绘制工作已由以前的计算机中央处理器CPU处理,转至由显卡进行运算处理,主要是利用显卡中高性能图形处理器GPU进行图形数据的运算处理,实现3D动画的绘图,这样可以有效节省CPU的资源,减少CPU的占用率。
随着3D动画技术的不断完善,现在的3D动画中常用骨骼动画来进行3D虚拟人物的绘制,骨骼动画的实现思路是从人的身体的运动方式而来的,将动画人物的身体(肉、皮肤等)定义为一个网格模型,网格的内部是一个骨架结构。当人物的骨架运动时,身体就会跟着骨架一起运动。骨架是由一定数目的骨骼组成的层次结构,每一个骨骼的排列和连接关系对整个骨架的运动有很重要的影响,每一个骨骼数据都包含其自身的动画数据,和每个骨骼相关联的是的一个网格模型(表示人物的肉、皮肤等),它提供动画绘制所需要的几何模型(Vertex,Normal,etc)和纹理材质信息。网格模型的每个顶点都有相应的权值(Weight),这些权值定义了骨骼的运动对有关顶点的影响因子。当把动画人物的姿势和全局运动信息作用到骨骼上时,这个网格模型就会跟随骨架一起运动。所以关键是对骨架进行动画生成,生成的方法是用关键帧。关键帧动画是对人物的网格模型采用关键帧生成动画;而骨骼动画则是对人物的骨架采用关键帧生成动画,然后再让网格模型跟随骨架运动。关键帧动画实现的关键点是:根据当前时间,通过插值计算出每个骨骼的旋转、平移等值,形成中间帧的骨骼,根据骨骼的变化情况,插值计算出骨骼的网格模型的各个顶点的位置变化。对于某个特定骨骼,网格模型的顶点变换矩阵=初始姿势的变换矩阵的逆×姿势变换后的矩阵。在显卡中实现骨骼动画的要点是把顶点数据输入顶点着色器,把当前时间的骨骼在CPU中计算好,用常量寄存器的方式输入显卡,由显卡计算顶点的最终位置。由于模拟真实的需要,常需要对两个三维模型是否发生碰撞进行检测,即判断模型A与模型B是否有任意一个三角形相交,判断两个三角形是否相交可以判断其中一个三角形的三条线段是否与另一个三角形相交。
但发明人发现,现有技术中虽将绘制骨骼动画时的数据运算处理交由计算机显卡的GPU来完成,但由于骨骼动画的转换在显卡的GPU中进行之后无法回传到计算机的CPU中,因此在对显卡实现的骨骼动画进行碰撞检测时,仍要在CPU中进行骨骼动画的转换,因此,针对在显卡中实现绘制骨骼动画但在CPU进行骨骼动画的碰撞检测的处理方式而言,仍然存在消耗CPU资源,CPU占用率过高的缺点。
发明内容
基于上述现有技术所存在的问题,本发明实施方式的目的是提供一种显卡中实现3D骨骼动画模型的碰撞检测方法及显卡、系统,将3D骨骼动画模型的碰撞检测由计算机的显卡完成,节省计算机CPU的资源和降低CPU的占用率。
一种显卡中实现3D骨骼动画模型的碰撞检测方法,包括:
生成第一3D骨骼动画模型的三角形面顶点纹理或边顶点纹理时,将确定的三角形面顶点的信息传递给显卡的像素着色器作为输出三角形面纹理的像素点的信息,或将确定的边顶点的信息传递给显卡的像素着色器作为边纹理的像素点的信息;
生成第二3D骨骼动画模型的边顶点纹理或三角形面顶点纹理时,将确定的边顶点的信息传递给显卡的像素着色器作为输出边纹理的像素点的信息,或将确定的三角形面顶点的信息传递给显卡的像素着色器作为三角形面纹理的像素点的信息;
显卡的像素着色器输出第一3D骨骼动画模型的三角形面或边与第二3D骨骼动画模型的边或三角形面相交的像素点,查询显卡的像素着色器有像素点输出则确定第一3D骨骼动画模型与第二3D骨骼动画模型发生碰撞。
一种实现权利要求1-8中任一项所述的3D骨骼动画模型的碰撞检测方法的显卡,包括:
中央处理单元、顶点信息获取单元,像素着色器和查询检测单元;
所述中央处理单元,与所述顶点信息获取单元连接,用于对构建3D骨骼动画模型的数据进行处理生成3D骨骼动画模型;
所述顶点信息获取单元,分别与所述中央处理单元和像素着色器连接,用于获取所述中央处理单元生成3D骨骼动画模型的三角形面顶点纹理时确定的三角形面顶点的信息,或生成3D骨骼动画模型的边顶点纹理时确定的边顶点的信息,并将获取的三角形面顶点的信息或边顶点的信息向像素着色器传送;
所述像素着色器,分别与所述顶点信息获取单元和查询检测单元连接,用于接收所述顶点信息获取单元传送的第一3D骨骼动画模型的三角形面顶点的信息,作为确定第一3D骨骼动画模型的三角形面纹理的像素点的信息,或接收所述顶点信息获取单元传送的第一3D骨骼动画模型的边顶点的信息,作为确定第一3D骨骼动画模型的边纹理的像素点的信息;并接收所述顶点信息获取单元传送的第二3D骨骼动画模型的边顶点的信息,作为确定第二3D骨骼动画模型的边纹理的像素点的信息,或接收所述顶点信息获取单元传送的第二3D骨骼动画模型的三角形面顶点的信息,作为确定第二3D骨骼动画模型的三角形面纹理的像素点的信息;并输出第一3D骨骼动画模型的三角形面或边与第二3D骨骼动画模型的边或三角形面相交的像素点;
所述查询检测单元,与所述像素着色器连接,用于查询显卡的像素着色器是否有像素点输出,若有像素点输出则确定第一3D骨骼动画模型与第二3D骨骼动画模型发生碰撞。
一种在显卡中实现3D骨骼动画模型的碰撞检测方法的系统,包括:
计算机主机与显示装置,计算机主机与显示装置连接;
所述计算机主机中设有处理装置和上述权利要求9-10中任一项所述的显卡,显卡与处理装置连接,用于对处理装置中运行3D游戏程序的3D骨骼动画模型的数据进行处理,并将显示画面输出至显示装置,并对该显卡中生成的不同3D骨骼动画模型之间的碰撞进行检测;
所述显示装置,与所述计算机主机连接,用于显示所述计算机主机的显卡输出的3D游戏程序的画面。
由上述本发明实施例提供的技术方案可以看出,本发明实施例通过显卡生成第一3D骨骼动画模型和第二3D骨骼动画模型时,将构成第一3D骨骼动画模型三角形面纹理的像素点信息和第二3D骨骼动画模型的边纹理的像素点信息传送至显卡的像素着色器,显卡的像素着色器输出第一3D骨骼动画模型的三角形面和第二3D骨骼动画模型边相交的像素点,通过查询显卡的像素着色器输出像素点,则可确定显卡生成的第一3D骨骼动画模型和第二3D骨骼动画模型是否发生碰撞。该方法充分利用了显卡的处理能力,将对显卡生成的3D骨骼动画模型的碰撞检测直接由显卡完成,避免了传统处理方法中,对显卡生成的3D骨骼动画模型的碰撞检测要在计算机的CPU中完成,导致计算机CPU因进行3D骨骼动画模型的碰撞检测造成的占用率高,浪费CPU资源的问题。
附图说明
图1为本发明实施例一显卡中实现3D骨骼动画的碰撞检测方法流程图;
图2为本发明实施例二显卡中实现3D骨骼动画的碰撞检测方法流程图;
图3为本发明实施例三显卡中实现3D骨骼动画的碰撞检测方法流程图;
图4为本发明实施例四显卡中实现3D骨骼动画的碰撞检测方法流程图;
图5为本发明实施例五的实现3D骨骼动画的碰撞的检测方法的显卡的结构框图;
图6为本发明实施例六的实现3D骨骼动画的碰撞的检测方法的计算机系统结构框图。
具体实施方式
本发明实施例提供一种显卡中实现3D骨骼动画模型的碰撞检测方法,具体是将显卡生成的3D骨骼动画模型的碰撞检测直接放在计算机的显卡中完成,该方法包括:
生成第一3D骨骼动画模型的三角形面顶点纹理或边顶点纹理时,将确定的三角形面顶点的信息传递给显卡的像素着色器作为输出三角形面纹理的像素点的信息,或将确定的边顶点的信息传递给显卡的像素着色器作为边纹理的像素点的信息;
生成第二3D骨骼动画模型的边顶点纹理或三角形面顶点纹理时,将确定的边顶点的信息传递给显卡的像素着色器作为输出边纹理的像素点的信息,或将确定的三角形面顶点的信息传递给显卡的像素着色器作为三角形面纹理的像素点的信息;
显卡的像素着色器输出第一3D骨骼动画模型的三角形面或边与第二3D骨骼动画模型的边或三角形面相交的像素点,查询显卡的像素着色器有像素点输出则确定第一3D骨骼动画模型与第二3D骨骼动画模型发生碰撞。
该方法简单,充分利用了显卡自身的特点,在生成3D骨骼动画模型时,利用查询显卡的像素着色器是否输出像素点,使显卡直接完成对3D骨骼动画模型的碰撞检测,相比传统的在计算机的CPU中完成3D骨骼动画模型的碰撞检测方法,降低了CPU的占用率,减少了CPU资源的浪费。
为便于对本发明实施方式的理解,下面首先结合3D模型的构建特点对本发明实施例中采用的对两个3D模型的碰撞检测方法进行说明:
在实际中,定义3D模型时均以三角形作为基本单位,连接三角形顶点的线段称为边,这是因为通过多个顶点可定义出3D模型的框架,通过多条线段(一般称为边)可将各顶点连接起来,这样多个边连接的3个或者3个以上的顶点则构成封闭的图形,该封闭的图形就形成了一个多边形,最简单的多边形就是三角形,而无论多复杂的多边形均可以分解为三角形,因此,可以用三角形作为构建3D模型的基本单位,所以在显卡中构造3D模型时通常采用三角形,而不采用其他复杂的多边形(如:矩形或者五边形),三角形与边也作为检测两个3D模型是否碰撞的基本单位,可以引出下述几种检测方式:
(1)检测3D模型A的三角形与3D模型B的边是否相交,相交则两3D模型碰撞;
(2)检测3D模型A的三角形与3D模型B的三角形是否相交,相交则两3D模型碰撞;
(3)检测3D模型A的边与3D模型B的三角形是否相交,相交则两3D模型碰撞;
(4)检测3D模型A的边与3D模型B的边是否相交,相交则两3D模型碰撞;
本发明实施例中对显卡中生成的3D骨骼动画模型的碰撞检测即采用上述的方法,结合附图和具体实施例对本发明作进一步说明。
实施例一
本实施例提供一种显卡中实现3D骨骼动画模型的碰撞检测方法,通过该方法可以实现将显卡生成的3D骨骼动画模型的碰撞检测直接在计算机的显卡中完成,该方法如图1所示,采用的是检测一个3D骨骼动画模型的三角形与另一个3D骨骼动画模型的边是否相交,来检测两个3D骨骼动画模型是否发生碰撞,具体包括下述步骤:
步骤1:显卡生成第一3D骨骼动画模型的三角形面顶点纹理时,将确定的三角形面顶点的信息传递给显卡的像素着色器作为输出三角形面纹理的像素点的信息;
步骤2:显卡生成第二3D骨骼动画模型的边顶点纹理时,将确定的边顶点的信息传递给显卡的像素着色器作为输出边纹理的像素点的信息;
步骤3:显卡的像素着色器输出第一3D骨骼动画模型的三角形面与第二3D骨骼动画模型的边相交的像素点,查询显卡的像素着色器有像素点输出则确定第一3D骨骼动画模型与第二3D骨骼动画模型发生碰撞。
为更清楚的理解上述方法,需要说明的是,显卡生成3D骨骼动画模型时,是以三角形作为生成模型的基本单位,一个三角形由3个顶点组成,一个顶点由3个坐标x、y、z组成,由于设置在一个三角形上的一个纹理最多有4个通道,所以必须要3张纹理。
因此在上述检测方法中,显卡生成第一3D骨骼动画模型的三角形面顶点纹理时,显卡以三角形索引方式绘制第一3D骨骼动画模型的三角形面顶点,显卡的顶点着色器根据显卡的常量寄存器输入的第一3D骨骼动画模型的骨骼信息进行顶点位置变换后,得到当前顶点的实际位置,结合顶点所在三角形的编号确定顶点的具体位置,将确定的顶点的具体位置及顶点在所在三角形中的索引值作为三角形面顶点的信息传递给显卡的像素着色器,将所述索引值用于作为显卡的像素着色器确定将所述像素点输出至哪一个三角形面纹理的信息,所述顶点的具体位置作为输出像素点的位置信息。
对于以边定义的3D骨骼动画模型,认为模型的各顶点均是由边连接而成的,一个边由两个顶点组成,一个顶点由3个坐标x、y、z组成,所以针对一个边必须要两张纹理。
因此上述检测方法中,显卡以线段索引方式绘制第二3D骨骼动画模型的边顶点,显卡的顶点着色器根据显卡的常量寄存器输入的第二3D骨骼动画模型的骨骼信息进行顶点位置变换后,得到当前顶点的实际位置,结合顶点所在边的编号确定顶点的具体位置,将确定的顶点的具体位置及顶点在所在边中的索引值作为边顶点的信息传递给显卡的像素着色器,其中,所述索引值用于作为显卡的像素着色器确定将所述像素点输出至哪一个边纹理的信息,所述顶点的具体位置作为输出像素点的位置信息。
在显卡的像素着色器得到第一3D骨骼动画模型的三角形面纹理的像素点的信息与第二3D骨骼动画模型的边纹理像素点的信息后,通过遍历构成第二3D骨骼动画模型边纹理的每个像素点,若存在任一像素点与构成第一3D骨骼动画模型的三角形面纹理的任一像素点重合,则确定第一3D骨骼动画模型三角形面与第二3D骨骼动画模型边相交并输出重合的像素点,通过显卡硬件查询像素着色器是否有像素点输出,即可确定显卡生成的第一3D骨骼动画模型和第二3D骨骼动画模型是否发生碰撞。相比传统3D骨骼动画模型的碰撞检测方法,降低了CPU的占用率,减少了CPU资源的浪费。
下面以实际中显卡对生成的骨骼动画的碰撞进行检测的过程,对上述本发明实施例的处理方法作进一步说明,具体包括:
步骤1:生成模型A的三角形面顶点纹理(如可以将三个纹理分别设有为:A_Pos_Map_1,A_Pos_Map_2,A_Pos_Map_3),一个三角形由3个顶点组成,一个顶点由3个坐标x、y、z组成,由于一个纹理最多有4个通道,所以必须要3张纹理。纹理的大小由模型A的三角形面数目决定,纹理长度=宽度=Map_length,为大于三角形面数目的最小的2的幂,如:构成模型A的三角形面数目为3200,那么用于模型A的纹理的长度=宽度=Map_length=64(64×64=4096>3200);
基于上述说明,显卡在生成模型A时以三角形索引的方式绘制点,在顶点着色器中处理顶点时,先根据常量寄存器输入的骨骼信息进行顶点位置的变换,得到当前时间顶点的实际位置,再根据顶点所在的三角形的编号(如可以将编号设为:Tri_No)决定顶点的位置,具体位置的确定为:x=Tri_No÷Map_length(纹理的长度),y=Tri_No÷Map_length(纹理的高度),z=0,并且把顶点本身的位置以及顶点在本三角形中的索引传递给像素着色器;像素着色器根据本顶点在本三角形中的索引决定把像素输出到顶点纹理的哪一个,输出值为顶点的本身位置;
步骤2:显卡生成模型B的边顶点纹理(如可以将两个纹理分别设有为:B_EDGE_Map_1,B_EDGE_Map_2),一个边由两个顶点组成,一个顶点由3个坐标x、y、z组成,所以必须要两张纹理。纹理的大小由模型B的边的数目决定,纹理长度=宽度=Map_length,为大于边数目的最小的2的幂,例如边数目为940,那么纹理长度=宽度=Map_length=32(32×32=1024>940);
基于上述说明,显卡在生成模型B时以线段索引的方式绘制点,在顶点着色器中处理顶点时,先根据常量寄存器输入的骨骼信息进行顶点位置的变换,得到当前时间顶点的实际位置,再根据顶点所在的边的编号(如可以将编号设为:Edge_No)决定顶点的位置,位置x=Edge_No÷Map_length(纹理的长度),y=Edge_No÷Map_length(纹理的高度),z=0,并且把顶点本身的位置以及顶点在本边中的索引传递给像素着色器;像素着色器根据本顶点在本边中的索引决定把像素输出到顶点纹理的哪一个,输出值为顶点的本身位置;
步骤3:硬件查询(显卡查询显卡的像素着色器是否有像素被绘制,若有则确定显卡生成的模型A与模型B发生碰撞,并可以将检测结果回传至CPU);具体处理过程可以是:显卡绘制一个以模型A的三角形面的一个纹理A_Pos_Map_1为大小的平面,在显卡的像素着色器中设置一个全局逻辑变量bHit=false(假),以A_Pos_Map_1,A_Pos_Map_2,A_Pos_Map_3和B_EDGE_Map_1,B_EDGE_Map_2为显卡像素着色器的输入;对于像素处理器处理绘制纹理A_Pos_Map_1为大小的平面中的一个像素p时,如果bHit=true(真)就不处理这个像素,并负责取得该像素p在模型A的三角形面的三个纹理A_Pos_Map_1,A_Pos_Map_2,A_Pos_Map_3上所对应的像素,得到三个顶点位置,也就得到了三角形;遍历模型B的边纹理B_EDGE_Map_1,B_EDGE_Map_2上每个像素,得到两个顶点位置,也就得到一个边,判断像素p在模型A的三角形面的三个纹理上构成的三角形与模型B的边是否相交,若相交则像素着色器将相交的像素输出,并且把全局变量bHit=true,否则处理模型B的两个纹理的B_EDGE_Map_1,B_EDGE_Map_2的下一个像素,若构成模型A的三角形与构成模型B的边相交则显卡通过硬件查询会返回像素着色器有一个像素被绘制,即可确定显卡生成的模型A与模型B发生碰撞。
本实施例中在进行3D骨骼动画模型的碰撞检测时,通过判断构成第一3D骨骼动画模型的三角形面是否与第二3D骨骼动画模型构成的边相交,若相交则判断两个3D骨骼动画模型发生碰撞,即通过显卡查询像素着色器是否有相交点的像素输出,由显卡完成对两个3D骨骼动画模型的碰撞检测,这种方式充分利用了构建3D骨骼动画模型的特点,具有检测速度快,占用资源小的特点。
实施例二
本实施例提供另一种显卡中实现3D骨骼动画模型的碰撞检测方法,是在显卡中采用检测一个3D骨骼动画模型的三角形与另一个3D骨骼动画模型的三角形是否相交,来检测两个3D骨骼动画模型是否发生碰撞,该方法如图2所示,具体包括下述步骤:
步骤21:显卡生成第一3D骨骼动画模型的三角形面顶点纹理时,将确定的三角形面顶点的信息传递给显卡的像素着色器作为输出第一3D骨骼动画模型三角形面纹理的像素点的信息;
步骤22:显卡生成第二3D骨骼动画模型的三角形面顶点纹理时,将确定的三角形面顶点的信息传递给显卡的像素着色器作为输出第二3D骨骼动画模型三角形面纹理的像素点的信息;
步骤23:显卡的像素着色器输出第一3D骨骼动画模型的三角形面与第二3D骨骼动画模型的三角形面相交的像素点,查询显卡的像素着色器有像素点输出则确定第一3D骨骼动画模型与第二3D骨骼动画模型发生碰撞。
实施例三
本实施例提供又一种显卡中实现3D骨骼动画模型的碰撞检测方法,是在显卡中采用检测一个3D骨骼动画模型的边与另一个3D骨骼动画模型的三角形是否相交,来检测两个3D骨骼动画模型是否发生碰撞,该方法如图3所示,具体包括下述步骤:
步骤31:显卡生成第一3D骨骼动画模型的边顶点纹理时,将确定的边顶点的信息传递给显卡的像素着色器作为输出边纹理的像素点的信息;
步骤32:显卡生成第二3D骨骼动画模型的三角形面顶点纹理时,将确定的三角形面顶点的信息传递给显卡的像素着色器作为输出三角形面纹理的像素点的信息;
步骤33:显卡的像素着色器输出第一3D骨骼动画模型的边与第二3D骨骼动画模型的三角形面相交的像素点,查询显卡的像素着色器有像素点输出则确定第一3D骨骼动画模型与第二3D骨骼动画模型发生碰撞。
实施例四
本实施例提供的显卡中实现3D骨骼动画模型的碰撞检测方法,是在显卡中采用检测一个3D骨骼动画模型的边与另一个3D骨骼动画模型的边是否相交,来检测两个3D骨骼动画模型是否发生碰撞,该方法如图4所示,具体包括下述步骤:
步骤41:显卡生成第一3D骨骼动画模型的边顶点纹理时,将确定的三角形面顶点的信息传递给显卡的像素着色器作为输出第一3D骨骼动画模型的边纹理的像素点的信息;
步骤42:显卡生成第二3D骨骼动画模型的边顶点纹理时,将确定的边顶点的信息传递给显卡的像素着色器作为输出边纹理的像素点的信息;
步骤43:显卡的像素着色器输出第一3D骨骼动画模型的边与第二3D骨骼动画模型的边相交的像素点,查询显卡的像素着色器有像素点输出则确定第一3D骨骼动画模型与第二3D骨骼动画模型发生碰撞。
实施例五
本实施例提供一种实现上述实施例一中的3D骨骼动画模型的碰撞检测方法的显卡,如图5所示,该显卡具体包括:
中央处理单元501、顶点信息获取单元502,像素着色器503和查询检测单元504;
其中,中央处理单元501与顶点信息获取单元502连接,用于对构建3D骨骼动画模型的数据进行处理生成3D骨骼动画模型;
顶点信息获取单元502分别与中央处理单元501和像素着色器503连接,用于获取所述中央处理单元生成3D骨骼动画模型的三角形面顶点纹理时确定的三角形面顶点的信息,或生成3D骨骼动画模型的边顶点纹理时确定的边顶点的信息,并将获取的三角形面顶点的信息或边顶点的信息向像素着色器传送;如:对两个3D骨骼动画模型进行碰撞检测时,可以分别对第一3D骨骼动画模型和第二3D骨骼动画模型的信息进行获取,并传送至像素着色器;
像素着色器503分别与顶点信息获取单元502和查询检测单元504连接,用于接收所述顶点信息获取单元传送的第一3D骨骼动画模型的三角形面顶点的信息,作为确定第一3D骨骼动画模型的三角形面纹理的像素点的信息,或接收所述顶点信息获取单元传送的第一3D骨骼动画模型的边顶点的信息,作为确定第一3D骨骼动画模型的边纹理的像素点的信息;并接收所述顶点信息获取单元传送的第二3D骨骼动画模型的边顶点的信息,作为确定第二3D骨骼动画模型的边纹理的像素点的信息,或接收所述顶点信息获取单元传送的第二3D骨骼动画模型的三角形面顶点的信息,作为确定第二3D骨骼动画模型的三角形面纹理的像素点的信息;并输出第一3D骨骼动画模型的三角形面或边与第二3D骨骼动画模型的边或三角形面相交的像素点;
查询检测单元504与像素着色器503连接,用于查询显卡的像素着色器是否有像素点输出,若有像素点输出则确定第一3D骨骼动画模型与第二3D骨骼动画模型发生碰撞。
上述显卡的中央处理单元501中还包括:顶点着色器5011与常量寄存器5012,顶点着色器与常量寄存器连接,用于以三角形索引方式绘制第一3D骨骼动画模型的三角形面顶点,对所述常量寄存器输入的3D骨骼动画模型的骨骼信息进行顶点位置变换后,得到当前顶点的实际位置,结合顶点所在三角形的编号确定顶点的具体位置,将确定的顶点的具体位置及顶点在所在三角形中的索引值作为三角形面顶点的信息;或用于以线段索引方式绘制3D骨骼动画模型的边顶点时,根据所述常量寄存器输入的3D骨骼动画模型的骨骼信息进行顶点位置变换后,得到当前顶点的实际位置,结合顶点所在边的编号确定顶点的具体位置,将确定的顶点的具体位置及顶点在所在边中的索引值作为边顶点的信息。
实施例六
本实施例提供一种在显卡中实现3D骨骼动画模型的碰撞检测方法的系统,是一种计算机系统,如图6所示,具体包括:
计算机主机601与显示装置602,计算机主机601与显示装置602连接;
该计算机主机601中设有处理装置604和上述实施例二中所述的显卡603,显卡603与处理装置604连接,显卡603用于对处理装置604中运行3D游戏程序的3D骨骼动画模型的数据进行处理,并将显示画面输出至显示装置,并对该显卡中生成的不同3D骨骼动画模型之间的碰撞进行检测;实际中,计算机主机可以采用与现有计算机主机结构相同的主机,主要是显卡采用本发明实施例二中给出的显卡即可,以通过该显卡实现在显卡中直接完成对显卡生成的3D骨骼动画模型的碰撞检测;
显示装置602与计算机主机601连接,用于显示计算机主机601的显卡603输出的3D游戏程序的画面;实际中,显示装置602可以采用CRT显示器、或液晶显示器等。
上述实施例二、三是基于本发明实施例一中的显卡中实现显卡中实现3D骨骼动画的碰撞的检测方法的显卡和计算机系统,但并不局限于此,本领域技术人员根据本发明实施例中提供的指导思想,可以预见的实现3D骨骼动画的碰撞检测方法的显卡和计算机系统的各种结构形式,均应涵盖在本发明的范围内。
综上所述,本发明实施例中将显卡生成骨骼动画的碰撞检测都由显卡完成,避免了传统方法将骨骼动画的转换在计算机的显卡的GPU中进行之后无法回传到计算机的CPU中,在进行碰撞检测的时候,仍要在CPU中进行骨骼动画的转换,消耗CPU资源,使CPU占用率高,对配置较低的计算机运行3D游戏时,影响运行效率的问题。本发明实施例的方法将显卡生成骨骼动画的碰撞直接由显卡进行检测,节省了CPU资源,降低了CPU占用率。
以上所述,仅为本发明较佳的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应该以权利要求的保护范围为准。

Claims (8)

1.一种显卡中实现3D骨骼动画模型的碰撞检测方法,其特征在于,包括
生成第一3D骨骼动画模型的三角形面顶点纹理或边顶点纹理时,将确定的三角形面顶点的信息传递给显卡的像素着色器作为输出三角形面纹理的像素点的信息,或将确定的边顶点的信息传递给显卡的像素着色器作为边纹理的像素点的信息;
所述生成第一3D骨骼动画模型的三角形面顶点纹理或边顶点纹理时,将确定的三角形面顶点的信息传递给显卡的像素着色器作为输出三角形面纹理的像素点的信息,或将确定的边顶点的信息传递给显卡的像素着色器作为边纹理的像素点的信息具体包括:
显卡以三角形索引方式绘制第一3D骨骼动画模型的三角形面顶点,显卡的顶点着色器根据显卡的常量寄存器输入的第一3D骨骼动画模型的骨骼信息进行顶点位置变换后,得到当前顶点的实际位置,结合顶点所在三角形的编号确定顶点的具体位置,将确定的顶点的具体位置及顶点在所在三角形中的索引值作为三角形面顶点的信息传递给显卡的像素着色器,所述索引值和顶点的具体位置作为输出三角形面纹理的像素点的信息;
或显卡以线段索引方式绘制第一3D骨骼动画模型的边顶点,显卡的顶点着色器根据显卡的常量寄存器输入的第一3D骨骼动画模型的骨骼信息进行顶点位置变换后,得到当前顶点的实际位置,结合顶点所在边的编号确定顶点的具体位置,将确定的顶点的具体位置及顶点在所在边中的索引值作为边顶点的信息传递给显卡的像素着色器,所述索引值和顶点的具体位置作为输出边纹理像素点的信息;
生成第二3D骨骼动画模型的边顶点纹理或三角形面顶点纹理时,将确定的边顶点的信息传递给显卡的像素着色器作为输出边纹理的像素点的信息,或将确定的三角形面顶点的信息传递给显卡的像素着色器作为三角形面纹理的像素点的信息;
所述生成第二3D骨骼动画模型的边顶点纹理或三角形面顶点纹理时,将确定的边顶点的信息传递给显卡的像素着色器作为输出边纹理的像素点的信息,或将确定的三角形面顶点的信息传递给显卡的像素着色器作为三角形面纹理的像素点的信息具体包括:
显卡以线段索引方式绘制第二3D骨骼动画模型的边顶点,显卡的顶点着色器根据显卡的常量寄存器输入的第二3D骨骼动画模型的骨骼信息进行顶点位置变换后,得到当前顶点的实际位置,结合顶点所在边的编号确定顶点的具体位置,将确定的顶点的具体位置及顶点在所在边中的索引值作为边顶点的信息传递给显卡的像素着色器,所述索引值和顶点的具体位置作为输出边纹理的像素点的信息;
或显卡以三角形索引方式绘制第二3D骨骼动画模型的三角形面顶点,显卡的顶点着色器根据显卡的常量寄存器输入的第二3D骨骼动画模型的骨骼信息进行顶点位置变换后,得到当前顶点的实际位置,结合顶点所在三角形的编号确定顶点的具体位置,将确定的顶点的具体位置及顶点在所在三角形中的索引值作为三角形面顶点的信息传递给显卡的像素着色器,所述索引值和顶点的具体位置作为输出三角形面纹理的像素点的信息;
显卡的像素着色器输出第一3D骨骼动画模型的三角形面或边与第二3D骨骼动画模型的边或三角形面相交的像素点,查询显卡的像素着色器有像素点输出则确定第一3D骨骼动画模型与第二3D骨骼动画模型发生碰撞;
所述显卡的像素着色器输出第一3D骨骼动画模型的三角形面或边与第二3D骨骼动画模型的边或三角形面相交的像素点具体包括:
显卡的像素着色器遍历构成第二3D骨骼动画模型边纹理的每个像素点或三角形面纹理的每个像素点,若存在任一像素点与构成第一3D骨骼动画模型的三角形面纹理的任一像素点或边纹理的任一像素点重合,则确定第一3D骨骼动画模型三角形面或与第二3D骨骼动画模型边或三角形面相交并输出重合的像素点。
2.根据权利要求1所述的碰撞检测方法,其特征在于,所述索引值和顶点的具体位置作为输出三角形面纹理的像素点的信息具体为:所述索引值用于作为显卡的像素着色器确定将所述像素点输出至对应三角形面纹理的信息,所述顶点的具体位置作为输出像素点的位置信息。
3.根据权利要求1所述的碰撞检测方法,其特征在于,所述索引值和顶点的具体位置作为输出边纹理像素点的信息具体为:所述索引值用于作为显卡的像素着色器确定将所述像素点输出至对应边纹理的信息,所述顶点的具体位置作为输出像素点的位置信息。
4.根据权利要求1所述的碰撞检测方法,其特征在于,所述索引值和顶点的具体位置作为输出边纹理的像素点的信息具体为:所述索引值用于作为显卡的像素着色器确定将所述像素点输出至对应边纹理的信息,所述顶点的具体位置作为输出像素点的位置信息。
5.根据权利要求1所述的碰撞的检测方法,其特征在于,所述索引值和顶点的具体位置作为输出边纹理像素点的信息具体为:所述索引值用于作为显卡的像素着色器确定将所述像素点输出至对应边纹理的信息,所述顶点的具体位置作为输出像素点的位置信息。
6.一种实现权利要求1-5中任一项所述的3D骨骼动画模型的碰撞检测方法的显卡,其特征在于,包括:
中央处理单元、顶点信息获取单元,像素着色器和查询检测单元;
所述中央处理单元,与所述顶点信息获取单元连接,用于对构建3D骨骼动画模型的数据进行处理生成3D骨骼动画模型;
所述顶点信息获取单元,分别与所述中央处理单元和像素着色器连接,用于获取所述中央处理单元生成3D骨骼动画模型的三角形面顶点纹理时确定的三角形面顶点的信息,或生成3D骨骼动画模型的边顶点纹理时确定的边顶点的信息,并将获取的三角形面顶点的信息或边顶点的信息向像素着色器传送;
所述像素着色器,分别与所述顶点信息获取单元和查询检测单元连接,用于接收所述顶点信息获取单元传送的第一3D骨骼动画模型的三角形面顶点的信息,作为确定第一3D骨骼动画模型的三角形面纹理的像素点的信息,或接收所述顶点信息获取单元传送的第一3D骨骼动画模型的边顶点的信息,作为确定第一3D骨骼动画模型的边纹理的像素点的信息;并接收所述顶点信息获取单元传送的第二3D骨骼动画模型的边顶点的信息,作为确定第二3D骨骼动画模型的边纹理的像素点的信息,或接收所述顶点信息获取单元传送的第二3D骨骼动画模型的三角形面顶点的信息,作为确定第二3D骨骼动画模型的三角形面纹理的像素点的信息;并输出第一3D骨骼动画模型的三角形面或边与第二3D骨骼动画模型的边或三角形面相交的像素点;
所述查询检测单元,与所述像素着色器连接,用于查询显卡的像素着色器是否有像素点输出,若有像素点输出则确定第一3D骨骼动画模型与第二3D骨骼动画模型发生碰撞。
7.根据权利要求6所述的显卡,其特征在于,所述中央处理单元中还包括:顶点着色器与常量寄存器,顶点着色器与所述常量寄存器连接,用于以三角形索引方式绘制第一3D骨骼动画模型的三角形面顶点,对所述常量寄存器输入的3D骨骼动画模型的骨骼信息进行顶点位置变换后,得到当前顶点的实际位置,结合顶点所在三角形的编号确定顶点的具体位置,将确定的顶点的具体位置及顶点在所在三角形中的索引值作为三角形面顶点的信息;或用于以线段索引方式绘制3D骨骼动画模型的边顶点时,根据所述常量寄存器输入的3D骨骼动画模型的骨骼信息进行顶点位置变换后,得到当前顶点的实际位置,结合顶点所在边的编号确定顶点的具体位置,将确定的顶点的具体位置及顶点在所在边中的索引值作为边顶点的信息。
8.一种在显卡中实现3D骨骼动画模型的碰撞检测方法的系统,其特征在于,包括:
计算机主机与显示装置,计算机主机与显示装置连接;
所述计算机主机中设有处理装置和上述权利要求6-7中任一项所述的显卡,显卡与处理装置连接,用于对处理装置中运行3D游戏程序的3D骨骼动画模型的数据进行处理,并将显示画面输出至显示装置,并对该显卡中生成的不同3D骨骼动画模型之间的碰撞进行检测;
所述显示装置,与所述计算机主机连接,用于显示所述计算机主机的显卡输出的3D游戏程序的画面。
CN2009100760564A 2009-01-04 2009-01-04 显卡中实现3d骨骼动画模型的碰撞检测方法及显卡、系统 Active CN101458825B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN2009100760564A CN101458825B (zh) 2009-01-04 2009-01-04 显卡中实现3d骨骼动画模型的碰撞检测方法及显卡、系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN2009100760564A CN101458825B (zh) 2009-01-04 2009-01-04 显卡中实现3d骨骼动画模型的碰撞检测方法及显卡、系统

Publications (2)

Publication Number Publication Date
CN101458825A CN101458825A (zh) 2009-06-17
CN101458825B true CN101458825B (zh) 2011-07-20

Family

ID=40769669

Family Applications (1)

Application Number Title Priority Date Filing Date
CN2009100760564A Active CN101458825B (zh) 2009-01-04 2009-01-04 显卡中实现3d骨骼动画模型的碰撞检测方法及显卡、系统

Country Status (1)

Country Link
CN (1) CN101458825B (zh)

Families Citing this family (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102024273A (zh) * 2010-12-10 2011-04-20 中国人民解放军国防科学技术大学 基于隐式向量空间的非刚性注册方法
CN103164867A (zh) * 2011-12-09 2013-06-19 金耀有限公司 三维图形数据处理方法和装置
CN102810133B (zh) * 2012-05-15 2015-08-12 北京像素软件科技股份有限公司 网络游戏中的射线查询方法和场景服务器
CN102880454B (zh) * 2012-06-15 2016-03-09 深圳市旭东数字医学影像技术有限公司 医学三维模型的网页显示的方法及其系统
CN103279968B (zh) * 2013-05-09 2015-11-18 四三九九网络股份有限公司 检测移动端设备上gpu渲染动画像素碰撞的方法和装置
CN106215419B (zh) 2016-07-28 2019-08-16 腾讯科技(深圳)有限公司 碰撞控制方法及装置
CN107481200B (zh) * 2017-07-31 2018-09-18 腾讯科技(深圳)有限公司 图像处理方法和装置
CN108846891B (zh) * 2018-05-30 2023-04-28 广东省智能制造研究所 一种基于三维骨架检测的人机安全协作方法
CN109035384A (zh) * 2018-06-06 2018-12-18 广东您好科技有限公司 基于三维扫描、模型自动顶点处理引擎的像素合成技术
CN109621421A (zh) * 2018-12-24 2019-04-16 网易(杭州)网络有限公司 信息处理方法及装置
CN112169331B (zh) * 2020-10-26 2024-03-19 网易(杭州)网络有限公司 对象控制方法及装置
CN115661310B (zh) * 2022-12-22 2023-03-14 海马云(天津)信息技术有限公司 虚拟数字人表情逼近方法、装置、存储介质、电子设备

Also Published As

Publication number Publication date
CN101458825A (zh) 2009-06-17

Similar Documents

Publication Publication Date Title
CN101458825B (zh) 显卡中实现3d骨骼动画模型的碰撞检测方法及显卡、系统
CN105556571B (zh) 使用计算着色器作为顶点着色器的前端
CN104077797B (zh) 三维游戏动画系统
CN113034656B (zh) 游戏场景中光照信息的渲染方法、装置及设备
CN107750373A (zh) 使用光线跟踪渲染以生成可见性流
CN110090440B (zh) 虚拟对象显示方法、装置、电子设备及存储介质
CN112530005B (zh) 一种三维模型直线结构识别与自动修复方法
CN105144243A (zh) 数据可视化
JP4936522B2 (ja) 画像処理方法、画像処理装置
CN106875492A (zh) 一种面向gpu包围盒碰撞检测方法
CN103426199A (zh) 一种三维几何场景的低噪声实时全局光照绘制方法
CN104715500A (zh) 一种基于三维动画设计的3d动画制作开发系统
CN106952340A (zh) 三维虚拟建模的方法及装置
CN111091620A (zh) 基于图形学的地图动态路网处理方法及系统、计算机设备
CN108290071A (zh) 用于在预测游戏者的意图的情况下确定用于执行绘制的资源分配的程序、电子装置、系统和方法
CN103412973B (zh) 三维仿真的生成方法及系统
JP5864474B2 (ja) 空間を分割してグラフィックスを処理する画像処理装置及び画像処理方法
CN115099025A (zh) 在流体模型中计算流体流速的方法、电子设备及存储介质
US8274513B1 (en) System, method, and computer program product for obtaining a boundary attribute value from a polygon mesh, during voxelization
CN111111154B (zh) 虚拟游戏对象的建模方法、装置、处理器及电子装置
Wang et al. LVDIF: a framework for real-time interaction with large volume data
US9437042B1 (en) System, method, and computer program product for performing dicing on a primitive
KR101281156B1 (ko) 레이 트레이싱 코어 및 레이 트레이싱 처리 방법
Kuzma Occlusion in Augmented Reality: Exploring the problem of rendering semi-occluded objects in augmented reality using a model-based approach.
de Lucas et al. Ultra-low power render-based collision detection for CPU/GPU systems

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
ASS Succession or assignment of patent right

Owner name: TENCENT TECHNOLOGY (CHENGDU) CO., LTD.

Free format text: FORMER OWNER: TENCENT TECHNOLOGY (SHENZHEN) CO., LTD.

Effective date: 20111117

C41 Transfer of patent application or patent right or utility model
COR Change of bibliographic data

Free format text: CORRECT: ADDRESS; FROM: 518028 SHENZHEN, GUANGDONG PROVINCE TO: 610041 CHENGDU, SICHUAN PROVINCE

TR01 Transfer of patent right

Effective date of registration: 20111117

Address after: 610041 Sichuan city of Chengdu province high tech Zone Tuodong Street No. 81 Tianfu Software Park two C District No. 4

Patentee after: Tencent Technology (Chengdu) Co.,Ltd.

Address before: 2 East 403 room, SEG science and technology garden, Futian District, Guangdong, Shenzhen 518028, China

Patentee before: Tencent Technology (Shenzhen) Co., Ltd.