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

文档序号:6483571阅读:217来源:国知局
专利名称:显卡中实现3d骨骼动画模型的碰撞检测方法及显卡、系统的制作方法
技术领域
本发明涉及计算机绘图处理领域,尤其涉及一种显卡中实现3D骨骼动画 模型的碰撞4企测方法及显卡、系统。
背景技术
目前,随着计算机绘图处理技术的提高,计算机游戏的界面变的越来越 漂亮,3D游戏(三维游戏)以其场景和打斗场面形象逼真的特点更受到玩家 的青睐。在3D游戏中,为模拟真实的人物打斗场景,常需要在运行该3D游戏 的计算机上进行大量三维动画的绘图处理,则使绘图时数据运算量较大,以 往这些数据运算处理均由计算机的中央处理器CPU完成,处理后再传送至显 卡中进行显示,但这种方式存在浪费CPU资源,CPU占用率过高的问题。随着 显卡性能的不断发展完善,这些动画的绘制工作已由以前的计算机中央处理 器CPU处理,转至由显卡进行运算处理,主要是利用显卡中高性能图形处理 器GPU进行图形数据的运算处理,实现3D动画的绘图,这样可以有效节省 CPU的资源,减少CPU的占用率。
随着3D动画技术的不断完善,现在的3D动画中常用骨骼动画来进行3D虚 拟人物的绘制,骨骼动画的实现思路是从人的身体的运动方式而来的,将动 画人物的身体(肉、皮肤等)定义为一个网格模型,网格的内部是一个骨架 结构。当人物的骨架运动时,身体就会跟着骨架一起运动。骨架是由一定数 目的骨骼组成的层次结构,每一个骨骼的排列和连接关系对整个骨架的运动 有很重要的影响,每一个骨骼数据都包含其自身的动画数据,和每个骨骼相 关联的是的一个网格模型(表示人物的肉、皮肤等),它提供动画绘制所需 要的几何才莫型(Vertex, Normal, etc)和紋理材质信息。网祐4莫型的每个顶点都有相应的权值(Weight),这些权值定义了骨骼的运动对有关顶点的影响因 子。当把动画人物的姿势和全局运动信息作用到骨骼上时,这个网格模型就 会跟随骨架一起运动。所以关键是对骨架进行动画生成,生成的方法是用关 键帧。关键帧动画是对人物的网格模型采用关键帧生成动画;而骨骼动画则 是对人物的骨架采用关键帧生成动画,然后再让网格模型跟随骨架运动。关 键帧动画实现的关键点是根据当前时间,通过插值计算出每个骨骼的旋转 、平移等值,形成中间帧的骨骼,根据骨骼的变化情况,插值计算出骨骼的 网格模型的各个顶点的位置变化。对于某个特定骨骼,网格模型的顶点变换 矩阵=初始姿势的变换矩阵的逆x姿势变换后的矩阵。在显卡中实现骨骼动 画的要点是把顶点数据输入顶点着色器,把当前时间的骨骼在CPU中计算好 ,用常量寄存器的方式输入显卡,由显卡计算顶点的最终位置。由于模拟真 实的需要,常需要对两个三维模型是否发生碰撞进行检测,即判断模型A与 模型B是否有任意一个三角形相交,判断两个三角形是否相交可以判断其中 一个三角形的三条线段是否与另 一个三角形相交。
但发明人发现,现有技术中虽将绘制骨骼动画时的数据运算处理交由计 算机显卡的GPU来完成,但由于骨骼动画的转换在显卡的GPU中进行之后无 法回传到计算机的CPU中,因此在对显卡实现的骨骼动画进行碰撞才企测时, 仍要在CPU中进行骨骼动画的转换,因此,针对在显卡中实现绘制骨骼动画 但在CPU进行骨骼动画的碰撞检测的处理方式而言,仍然存在消耗CPU资源 ,CPU占用率过高的缺点。

发明内容
基于上述现有技术所存在的问题,本发明实施方式的目的是提供一种显 卡中实现3D骨骼动画模型的碰撞检测方法及显卡、系统,将3D骨骼动画模型 的碰撞检测由计算机的显卡完成,节省计算机CPU的资源和降低CPU的占一种显卡中实现3D骨骼动画模型的碰撞检测方法,包括 生成第一3D骨骼动画;f莫型的三角形面顶点紋理或边顶点紋理时,将确定 的三角形面顶点的信息传递给显卡的像素着色器作为输出三角形面紋理的像 素点的信息,或将确定的边顶点的信息传递给显卡的像素着色器作为边紋理 的像素点的信息;
生成第二3D骨骼动画模型的边顶点紋理或三角形面顶点紋理时,将确定 的边顶点的信息传递给显卡的像素着色器作为输出边紋理的像素点的信息, 或将确定的三角形面顶点的信息传递给显卡的像素着色器作为三角形面紋理 的像素点的信息;
显卡的像素着色器输出第一3D骨骼动画模型的三角形面或边与第二3D骨
骼动画模型的边或三角形面相交的像素点,查询显卡的像素着色器有像素点 输出则确定第一3D骨骼动画模型与第二3D骨骼动画模型发生碰撞。
一种实现权利要求l - 8中任一项所述的3D骨骼动画模型的碰撞检测方法 的显卡,包括
中央处理单元、顶点信息获取单元,像素着色器和查询才企测单元; 所述中央处理单元,与所述顶点信息获取单元连接,用于对构建3D骨骼 动画模型的数据进行处理生成3D骨骼动画模型;
所述顶点信息获取单元,分别与所述中央处理单元和像素着色器连接, 用于获取所述中央处理单元生成3D骨骼动画模型的三角形面顶点紋理时确定 的三角形面顶点的信息,或生成3D骨骼动画^t型的边顶点紋理时确定的边顶 点的信息,并将获取的三角形面顶点的信息或边顶点的信息向像素着色器传 送;
所述像素着色器,分别与所述顶点信息获取单元和查询检测单元连接, 用于接收所述顶点信息获取单元传送的第一3D骨骼动画模型的三角形面顶点 的信息,作为确定第一3D骨骼动画模型的三角形面紋理的像素点的信息,或 接收所述顶点信息获取单元传送的第一3D骨骼动画模型的边顶点的信息,作为确定第一3D骨骼动画模型的边紋理的像素点的信息;并接收所述顶点信息 获取单元传送的第二3D骨骼动画模型的边顶点的信息,作为确定第二3D骨骼 动画模型的边紋理的像素点的信息,或接收所述顶点信息获取单元传送的第 二3D骨骼动画模型的三角形面顶点的信息,作为确定第二3D骨骼动画模型的 三角形面紋理的像素点的信息;并输出第一3D骨骼动画模型的三角形面或边 与第二3D骨骼动画模型的边或三角形面相交的像素点;
所述查询检测单元,与所述像素着色器连接,用于查询显卡的像素着色 器是否有像素点输出,若有像素点输出则确定第一3D骨骼动画模型与第二3D 骨骼动画模型发生碰撞。
一种在显卡中实现3D骨骼动画模型的碰撞检测方法的系统,包括
计算机主机与显示装置,计算机主机与显示装置连接;
所述计算机主机中设有处理装置和上述权利要求9 - IO中任一项所述的显 卡,显卡与处理装置连接,用于对处理装置中运行3D游戏程序的3D骨骼动画 模型的数据进行处理,并将显示画面输出至显示装置,并对该显卡中生成的 不同3D骨骼动画模型之间的碰撞进行检测;
所述显示装置,与所述计算机主机连接,用于显示所述计算机主机的显 卡输出的3D游戏程序的画面。
由上述本发明实施例提供的技术方案可以看出,本发明实施例通过显卡 生成第一3D骨骼动画模型和第二3D骨骼动画模型时,将构成第一3D骨骼动画 模型三角形面紋理的像素点信息和第二 3D骨骼动画模型的边紋理的像素点信 息传送至显卡的像素着色器,显卡的像素着色器输出第一3D骨骼动画模型的 三角形面和第二3D骨骼动画模型边相交的像素点,通过查询显卡的像素着色 器输出像素点,则可确定显卡生成的第一3D骨骼动画模型和第二3D骨骼动画 模型是否发生碰撞。该方法充分利用了显卡的处理能力,将对显卡生成的3D 骨骼动画模型的碰撞检测直接由显卡完成,避免了传统处理方法中,对显卡 生成的3D骨骼动画模型的碰撞检测要在计算机的CPU中完成,导致计算机CPU因进行3D骨骼动画模型的碰撞检测造成的占用率高,浪费CPU资源的问 题。


图1为本发明实施例 一显卡中实现3D骨骼动画的碰撞检测方法流程图; 图2为本发明实施例二显卡中实现3D骨骼动画的^s並撞;险测方法流程图; 图3为本发明实施例三显卡中实现3D骨骼动画的碰撞;险测方法流程图; 图4为本发明实施例四显卡中实现3D骨骼动画的石並撞才企测方法流程图; 图5为本发明实施例五的实现3D骨格动画的^5並撞的;f全测方法的显卡的结构
框图6为本发明实施例六的实现3D骨骼动画的碰撞的检测方法的计算机系统 结构框图。
具体实施例方式
本发明实施例提供一种显卡中实现3D骨骼动画模型的碰撞检测方法,具 体是将显卡生成的3D骨骼动画模型的碰撞检测直接放在计算机的显卡中完 成,该方法包括
生成第一3D骨骼动画^K型的三角形面顶点紋理或边顶点紋理时,将确定 的三角形面顶点的信息传递给显卡的像素着色器作为输出三角形面紋理的像 素点的信息,或将确定的边顶点的信息传递给显卡的像素着色器作为边紋理 的像素点的信息;
生成第二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骨骼动画模型的碰撞检测直接在计算机的显卡 中完成,该方法如图l所示,采用的是检测一个3D骨骼动画模型的三角形与另 一个3D骨骼动画模型的边是否相交,来检测两个3D骨骼动画模型是否发生碰 撞,具体包括下述步骤
步骤l:显卡生成第一3D骨駱动画模型的三角形面顶点紋理时,将确定的 三角形面顶点的信息传递给显卡的像素着色器作为输出三角形面紋理的像素 点的信息;
步骤2:显卡生成第二3D骨骼动画模型的边顶点紋理时,将确定的边顶点
的信息传递给显卡的像素着色器作为输出边紋理的像素点的信息;
步骤3:显卡的像素着色器输出第一3D骨骼动画模型的三角形面与第二犯
骨骼动画模型的边相交的像素点,查询显卡的像素着色器有像素点输出则确 定第一3D骨骼动画模型与第二3D骨骼动画模型发生碰撞。
为更清楚的理解上述方法,需要说明的是,显卡生成3D骨骼动画模型时 ,是以三角形作为生成模型的基本单位, 一个三角形由3个顶点组成, 一个顶 点由3个坐标x、 y、 z组成,由于设置在一个三角形上的一个紋理最多有4个 通道,所以必须要3张紋理。
因此在上述检测方法中,显卡生成第一3D骨骼动画模型的三角形面顶点 紋理时,显卡以三角形索引方式绘制第一3D骨骼动画模型的三角形面顶点, 显卡的顶点着色器根据显卡的常量寄存器输入的第一3D骨骼动画模型的骨骼 信息进行顶点位置变换后,得到当前顶点的实际位置,结合顶点所在三角形 的编号确定顶点的具体位置,将确定的顶点的具体位置及顶点在所在三角形 中的索引值作为三角形面顶点的信息传递给显卡的像素着色器,将所述索引 值用于作为显卡的像素着色器确定将所述像素点输出至哪一个三角形面紋理 的信息,所述顶点的具体位置作为输出像素点的位置信息。
对于以边定义的3D骨骼动画模型,认为模型的各顶点均是由边连接而成的, 一个边由两个顶点组成, 一个顶点由3个坐标x、 y、 z组成,所以4十对一 个边必须要两张紋理。
因此上述检测方法中,显卡以线段索引方式绘制第二3D骨骼动画模型的 边顶点,显卡的顶点着色器根据显卡的常量寄存器输入的第二3D骨骼动画模 型的骨骼信息进行顶点位置变换后,得到当前顶点的实际位置,结合顶点所 在边的编号确定顶点的具体位置,将确定的顶点的具体位置及顶点在所在边 中的索引值作为边顶点的信息传递给显卡的像素着色器,其中,所述索引值 用于作为显卡的像素着色器确定将所述像素点输出至哪一个边紋理的信息, 所述顶点的具体位置作为输出像素点的位置信息。
在显卡的像素着色器得到第一 3D骨骼动画模型的三角形面紋理的像素点 的信息与第二3D骨骼动画模型的边紋理像素点的信息后,通过遍历构成第二 3D骨骼动画模型边紋理的每个像素点,若存在任一像素点与构成第一3D骨骼 动画模型的三角形面紋理的任一像素点重合,则确定第一3D骨骼动画模型三 角形面与第二3D骨骼动画模型边相交并输出重合的像素点,通过显卡硬件查 询像素着色器是否有像素点输出,即可确定显卡生成的第一3D骨骼动画模型 和第二3D骨骼动画模型是否发生碰撞。相比传统3D骨骼动画模型的碰撞检测 方法,降低了CPU的占用率,减少了CPU资源的浪费。
下面以实际中显卡对生成的骨骼动画的碰撞进行才全测的过程,对上述本 发明实施例的处理方法作进一步说明,具体包括
步骤l:生成模型A的三角形面顶点紋理(如可以将三个紋理分别设有为 :A—Pos-Map-l, 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 x 64 = 4096 > 3200 );基于上述说明,显卡在生成模型A时以三角形索引的方式绘制点,在顶 点着色器中处理顶点时,先根据常量寄存器输入的骨骼信息进行顶点位置的 变换,得到当前时间顶点的实际位置,再根据顶点所在的三角形的编号(如
可以将编号设为Tri-No)决定顶点的位置,具体位置的确定为x = Tri_No + Map_length (乡文理的长度),y = T"一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 x 32 = 1024 〉 940 );
基于上述说明,显卡在生成模型B时以线段索引的方式绘制点,在顶点 着色器中处理顶点时,先根据常量寄存器输入的骨骼信息进行顶点位置的变 换,得到当前时间顶点的实际位置,再根据顶点所在的边的编号(如可以将 编号设为Edge_No)决定顶点的位置,位置x = Edge_No + Map—length (紋理 的长度),y = Edge—No + Map—length (紋理的高度),z = 0,并且4巴顶点本 身的位置以及顶点在本边中的索引传递给像素着色器;像素着色器根据本顶 点在本边中的索引决定把像素输出到顶点紋理的哪一 个,输出值为顶点的本 身位置;
步骤3:硬件查询(显卡查询显卡的像素着色器是否有像素被绘制,若有 则确定显卡生成的模型A与模型B发生碰撞,并可以将检测结果回传至CPU ) ;具体处理过程可以是显卡绘制一个以才莫型A的三角形面的一个紋理 A-Pos-Map-l为大小的平面,在显卡的像素着色器中设置一个全局逻辑变量 bHit = false (假),以 A一Pos-Map一l , A—Poslp-2 , A—Pos_Map_3和B_EDGE_Map—1, B-EDGE-Map—2为显卡像素着色器的输入;对于像素处理器处 理绘制故理A-Pos-Map-l为大小的平面中的一个^f象素p时,如果bHit = true (真)就不处理这个像素,并负责取得该像素p在模型A的三角形面的三个 紋理A—Pos-Map—1, A-Pos—Map—2, A—Pos—Map-3上所对应的Y象素,得到三个顶 点位置,也就得到了三角形;遍历才莫型B的边紋理B_EDGE_Map—l , B_EDGE_Map—2上每个像素,得到两个顶点位置,也就得到一个边,判断像素p 在模型A的三角形面的三个紋理上构成的三角形与模型B的边是否相交,若 相交则像素着色器将相交的像素输出,并且把全局变量bHit = true,否则处 理才莫型B的两个紋理的B—EDGE_Map-l, 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骨骼动画i^莫型的碰撞;险测;显示装置602与计算机主才几601连接,用于显示计算机主机601的显卡603 输出的3D游戏程序的画面;实际中,显示装置602可以釆用CRT显示器、或 液晶显示器等。
上述实施例二、三是基于本发明实施例一 中的显卡中实现显卡中实现3D 骨骼动画的碰撞的检测方法的显卡和计算机系统,但并不局限于此,本领域 技术人员根据本发明实施例中提供的指导思想,可以预见的实现3D骨骼动画 的碰撞检测方法的显卡和计算机系统的各种结构形式,均应涵盖在本发明的 范围内。
综上所述,本发明实施例中将显卡生成骨骼动画的碰撞检测都由显卡完 成,避免了传统方法将骨骼动画的转换在计算机的显卡的GPU中进行之后无 法回传到计算机的CPU中,在进行碰撞检测的时候,仍要在CPU中进行骨骼 动画的转换,消耗CPU资源,使CPU占用率高,对配置较低的计算机运行3D 游戏时,影响运行效率的问题。本发明实施例的方法将显卡生成骨骼动画的 碰撞直接由显卡进行检测,节省了 CPU资源,降低了 CPU占用率。
以上所述,仅为本发明较佳的具体实施方式
,但本发明的保护范围并不 局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可 轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明 的保护范围应该以权利要求的保护范围为准。
权利要求
1、一种显卡中实现3D骨骼动画模型的碰撞检测方法,其特征在于,包括生成第一3D骨骼动画模型的三角形面顶点纹理或边顶点纹理时,将确定的三角形面顶点的信息传递给显卡的像素着色器作为输出三角形面纹理的像素点的信息,或将确定的边顶点的信息传递给显卡的像素着色器作为边纹理的像素点的信息;生成第二3D骨骼动画模型的边顶点纹理或三角形面顶点纹理时,将确定的边顶点的信息传递给显卡的像素着色器作为输出边纹理的像素点的信息,或将确定的三角形面顶点的信息传递给显卡的像素着色器作为三角形面纹理的像素点的信息;显卡的像素着色器输出第一3D骨骼动画模型的三角形面或边与第二3D骨骼动画模型的边或三角形面相交的像素点,查询显卡的像素着色器有像素点输出则确定第一3D骨骼动画模型与第二3D骨骼动画模型发生碰撞。
2、 根据权利要求l所述的碰撞检测方法,其特征在于,所述生成第一3D骨骼动画^t型的三角形面顶点紋理或边顶点紋理时,将确定的三角形面顶点的信息传递给显卡的像素着色器作为输出三角形面紋理的像素点的信息,或将确定的边顶点的信息传递给显卡的像素着色器作为边紋理的像素点的信息具体包括显卡以三角形索引方式绘制第一3D骨骼动画模型的三角形面顶点,显卡的顶点着色器根据显卡的常量寄存器输入的第一3D骨骼动画模型的骨骼信息进行顶点位置变换后,得到当前顶点的实际位置,结合顶点所在三角形的编号确定顶点的具体位置,将确定的顶点的具体位置及顶点在所在三角形中的索引值作为三角形面顶点的信息传递给显卡的像素着色器,所述索引值和顶点的具体位置作为输出三角形面紋理的像素点的信息;或显卡以线段索引方式绘制第一3D骨骼动画模型的边顶点,显卡的顶点着色器根据显卡的常量寄存器输入的第一3D骨骼动画模型的骨骼信息进行顶点位置变换后,得到当前顶点的实际位置,结合顶点所在边的编号确定顶点的具体位置,将确定的顶点的具体位置及顶点在所在边中的索引值作为边顶点的信息传递给显卡的像素着色器,所述索引值和顶点的具体位置作为输出边紋理像素点的信息。
3、 根据权利要求2所述的碰撞检测方法,其特征在于,所述索引值和顶点的具体位置作为输出三角形面紋理的像素点的信息具体为所述索引值用于作为显卡的像素着色器确定将所述像素点输出至对应三角形面紋理的信息,所述顶点的具体位置作为输出像素点的位置信息。
4、 根据权利要求2所述的碰撞检测方法,其特征在于,所述索引值和顶点的具体位置作为输出边紋理像素点的信息具体为所述索引值用于作为显卡的像素着色器确定将所述像素点输出至对应边紋理的信息,所述顶点的具体位置作为输出像素点的位置信息。
5、 根据权利要求l所述的碰撞检测方法,其特征在于,所述生成第二3D骨骼动画模型的边顶点紋理或三角形面顶点紋理时,将确定的边顶点的信息传递给显卡的像素着色器作为输出边紋理的像素点的信息,或将确定的三角形面顶点的信息传递给显卡的像素着色器作为三角形面紋理的像素点的信息具体包括显卡以线段索引方式绘制第二3D骨骼动画模型的边顶点,显卡的顶点着色器根据显卡的常量寄存器输入的第二3D骨骼动画模型的骨骼信息进行顶点位置变换后,得到当前顶点的实际位置,结合顶点所在边的编号确定顶点的具体位置,将确定的顶点的具体位置及顶点在所在边中的索引值作为边顶点的信息传递给显卡的像素着色器,所述索引值和顶点的具体位置作为输出边紋理的^f象素点的信息;或显卡以三角形索引方式绘制第二3D骨骼动画模型的三角形面顶点,显卡的顶点着色器根据显卡的常量寄存器输入的第二 3D骨骼动画模型的骨骼信息进行顶点位置变换后,得到当前顶点的实际位置,结合顶点所在三角形的编号确定顶点的具体位置,将确定的顶点的具体位置及顶点在所在三角形中的索引值作为三角形面顶点的信息传递给显卡的像素着色器,所述索引值和顶点的具体位置作为输出三角形面紋理的像素点的信息。
6、 根据权利要求5所述的碰撞;险测方法,其特征在于,所述索引值和顶点的具体位置作为输出边紋理的像素点的信息具体为所述索引值用于作为显卡的像素着色器确定将所述像素点输出至对应边紋理的信息,所述顶点的具体位置作为输出像素点的位置信息。
7、 根据权利要求5所述的碰撞的检测方法,其特征在于,所述索引值和顶点的具体位置作为输出边紋理像素点的信息具体为所述索引值用于作为显卡的像素着色器确定将所述像素点输出至对应边紋理的信息,所述顶点的具体位置作为输出像素点的位置信息。
8、 根据权利要求l所述的碰撞检测方法,其特征在于,所述显卡的像素着色器输出第一3D骨骼动画模型的三角形面或边与第二3D骨骼动画模型的边或三角形面相交的像素点具体包括显卡的像素着色器遍历构成第二3D骨骼动画模型边紋理的每个像素点或三角形面紋理的每个像素点,若存在任一像素点与构成第一3D骨骼动画模型的三角形面紋理的任一像素点或边紋理的任一像素点重合,则确定第一3D骨骼动画模型三角形面或与第二3D骨骼动画模型边或三角形面相交并输出重合的像素点。
9、 一种实现权利要求1-8中任一项所述的3D骨骼动画模型的碰撞检测方法的显卡,其特征在于,包括中央处理单元、顶点信息获取单元,像素着色器和查询检测单元;所述中央处理单元,与所述顶点信息获取单元连接,用于对构建3D骨骼动画模型的数据进行处理生成3D骨骼动画模型;所述顶点信息获取单元,分别与所述中央处理单元和像素着色器连接,用于获取所述中央处理单元生成3D骨骼动画模型的三角形面顶点紋理时确定的三角形面顶点的信息,或生成3D骨骼动画模型的边顶点紋理时确定的边顶点的信息,并将获取的三角形面顶点的信息或边顶点的信息向像素着色器传送;所述像素着色器,分别与所述顶点信息获取单元和查询检测单元连接,用于接收所述顶点信息获取单元传送的第一3D骨骼动画模型的三角形面顶点的信息,作为确定第一3D骨骼动画模型的三角形面紋理的像素点的信息,或接收所述顶点信息获取单元传送的第一3D骨骼动画模型的边顶点的信息,作为确定第一3D骨骼动画模型的边紋理的像素点的信息;并接收所述顶点信息获取单元传送的第二3D骨骼动画模型的边顶点的信息,作为确定第二3D骨骼动画模型的边紋理的像素点的信息,或接收所述顶点信息获取单元传送的第二3D骨骼动画模型的三角形面顶点的信息,作为确定第二3D骨骼动画模型的三角形面紋理的像素点的信息;并输出第一3D骨骼动画模型的三角形面或边与第二 3D骨骼动画模型的边或三角形面相交的像素点;所述查询检测单元,与所述像素着色器连接,用于查询显卡的像素着色器是否有像素点输出,若有像素点输出则确定第一3D骨骼动画模型与第二3D骨骼动画模型发生碰撞。
10、根据权利要求9所述的显卡,其特征在于,所述中央处理单元中还包括顶点着色器与常量寄存器,顶点着色器与所述常量寄存器连接,用于以三角形索引方式绘制第一3D骨骼动画模型的三角形面顶点,对所述常量寄存器输入的3D骨骼动画模型的骨骼信息进行顶点位置变换后,得到当前顶点的实际位置,结合顶点所在三角形的编号确定顶点的具体位置,将确定的顶点的具体位置及顶点在所在三角形中的索引值作为三角形面顶点的信息;或用于以线段索引方式绘制3D骨骼动画模型的边顶点时,根据所述常量寄存器输入的3D骨骼动画模型的骨骼信息进行顶点位置变换后,得到当前顶点的实际位置,结合顶点所在边的编号确定顶点的具体位置,将确定的顶点的具体位置及顶点在所在边中的索引值作为边顶点的信息。
11、 一种在显卡中实现3D骨骼动画才莫型的碰撞;险测方法的系统,其特征在于,包括计算机主机与显示装置,计算机主机与显示装置连接;所述计算机主机中设有处理装置和上述权利要求9 - IO中任一项所述的显卡,显卡与处理装置连接,用于对处理装置中运行3D游戏程序的3D骨骼动画模型的数据进行处理,并将显示画面输出至显示装置,并对该显卡中生成的不同3D骨骼动画模型之间的碰撞进行检测;所述显示装置,与所述计算机主机连接,用于显示所述计算机主机的显卡输出的3D游戏程序的画面。
全文摘要
本发明实施例提供一种显卡中实现3D骨骼动画的碰撞检测方法及显卡、系统。属计算机绘图领域。方法包括生成第一3D骨骼动画模型的三角形面顶点纹理或边顶点纹理时,将确定的三角形面顶点的信息或边顶点的信息传递给显卡的像素着色器;生成第二3D骨骼动画模型的边顶点纹理或三角形面顶点纹理时,将确定的边顶点的信息或三角形面顶点的信息传递给显卡的像素着色器;显卡的像素着色器输出第一3D骨骼动画模型的三角形面或边与第二3D骨骼动画模型的边或三角形面相交的像素点,查询显卡的像素着色器有像素点输出则确定第一3D骨骼动画模型与第二3D骨骼动画模型发生碰撞。该方法由显卡完成生成的3D骨骼动画模型的碰撞检测,节省CPU资源、减少CPU占用率。
文档编号G06T15/70GK101458825SQ20091007605
公开日2009年6月17日 申请日期2009年1月4日 优先权日2009年1月4日
发明者皓 刘 申请人:腾讯科技(深圳)有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1