显卡中实现3D骨骼动画模型的碰撞检测方法及显卡、系统技术方案

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

【技术实现步骤摘要】

本专利技术涉及计算机绘图处理领域,尤其涉及一种显卡中实现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中完成,导致本文档来自技高网
...

【技术保护点】
一种显卡中实现3D骨骼动画模型的碰撞检测方法,其特征在于,包括: 生成第一3D骨骼动画模型的三角形面顶点纹理或边顶点纹理时,将确定的三角形面顶点的信息传递给显卡的像素着色器作为输出三角形面纹理的像素点的信息,或将确定的边顶点的信息传递 给显卡的像素着色器作为边纹理的像素点的信息; 生成第二3D骨骼动画模型的边顶点纹理或三角形面顶点纹理时,将确定的边顶点的信息传递给显卡的像素着色器作为输出边纹理的像素点的信息,或将确定的三角形面顶点的信息传递给显卡的像素着色器作为三角 形面纹理的像素点的信息; 显卡的像素着色器输出第一3D骨骼动画模型的三角形面或边与第二3D骨骼动画模型的边或三角形面相交的像素点,查询显卡的像素着色器有像素点输出则确定第一3D骨骼动画模型与第二3D骨骼动画模型发生碰撞。

【技术特征摘要】

【专利技术属性】
技术研发人员:刘皓
申请(专利权)人:腾讯科技深圳有限公司
类型:发明
国别省市:94[中国|深圳]

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1
相关领域技术
  • 暂无相关专利