一种基于GPU的三维几何图元拾取方法技术

技术编号:9490547 阅读:161 留言:0更新日期:2013-12-26 00:21
一种基于GPU的三维几何图元拾取方法,意在解决现有技术中拾取效率低、拾取对象有限、拾取信息量小等各种不足。在进行拾取绘制时关闭光栅化,将鼠标位置信息和图元顶点坐标变换到规范化设备坐标系或视口坐标系,通过在几何处理器中判断投影后的二维图元与鼠标位置或选择框的关系进行命中判定,并利用变换反馈将拾取结果返回应用程序。本发明专利技术既适用于单体拾取,也适用于块拾取,拾取绘制时无需进行光栅化和片元处理,拾取过程高效快捷,可以获取到丰富的拾取信息,能够满足包含大量几何图元的图形应用中的实时交互需求,可应用到各种交互式图形应用中,例如CAD系统、游戏、UI、虚拟现实应用等。

【技术实现步骤摘要】
【专利摘要】一种基于GPU的三维几何图元拾取方法,意在解决现有技术中拾取效率低、拾取对象有限、拾取信息量小等各种不足。在进行拾取绘制时关闭光栅化,将鼠标位置信息和图元顶点坐标变换到规范化设备坐标系或视口坐标系,通过在几何处理器中判断投影后的二维图元与鼠标位置或选择框的关系进行命中判定,并利用变换反馈将拾取结果返回应用程序。本专利技术既适用于单体拾取,也适用于块拾取,拾取绘制时无需进行光栅化和片元处理,拾取过程高效快捷,可以获取到丰富的拾取信息,能够满足包含大量几何图元的图形应用中的实时交互需求,可应用到各种交互式图形应用中,例如CAD系统、游戏、UI、虚拟现实应用等。【专利说明】—种基于GPU的三维几何图元拾取方法【
】 本专利技术涉及一种三维几何图元的快速选择与拾取方法,特别涉及一种基于图形处理单元GPU的三维几何图元拾取方法。【
技术介绍
】 图形拾取是指,根据用户使用鼠标等定位设备进行点击操作的位置或者进行框选操作的区域信息,返回选中的几何图元的ID等相关信息的过程。根据图形拾取的结果,方可进行进一步的交互操作,因此该技术是交互式图形应用的关键技术之一,在CAD软件、游戏、图形用户界面等方面有着广泛应用。图形拾取方式分为单体拾取和块拾取两种。单体拾取使用鼠标点击选取单个图形对象;而块拾取使用鼠标键按下后拖动形成的矩形框选取位于矩形框内部的一个或多个图形对象。现有的三维几何图元拾取方法主要有以下三种: 1、老版本OpenGL中提供的拾取方法 基于固定流水线的老版本OpenGL提供了一种基于名称堆栈和拾取矩阵的拾取方法。其主要步骤为:设置名称缓存,进入选择模式,初始化名称堆栈,设置拾取矩阵,进行拾取绘制,返回常规模式,处理命中记录。拾取的原理是利用拾取矩阵修改投影变换,将视域体限制在以鼠标位置为中心的拾取块内,绘制时,如果图形对象未被完全裁减掉,则根据当前名称堆栈中的名称信息在名称缓存中记录一次命中信息。该方法需要为不同的图形对象设置不同的ID,并在绘制相应对象前更新名称堆栈(进行名称的压入与弹出操作)。 该方法的缺点是:频繁的名称堆栈的压入与弹出操作会严重影响拾取的效率?’另外对于场景中含有大量几何图元的情况,名称堆栈容易产生溢出;此外,该方法仅能得到拾取到的图形对象ID,但得不到命中该对象的具体位置信息(比如所命中的三角形的坐标)。2、射线相交测试法 射线相交测试法将鼠标选中的点从屏幕坐标系逆变换到世界坐标系得到投影点,然后将从视点指向投影点的射线与场景中的各个几何图元在世界坐标系下进行相交测试,找出被选中的物体。射线相交测试法的步骤如下:首先获得屏幕上鼠标点击的点,找到其对应的投影窗口上的点/7 ;然后计算拾取射线,即一条从原点出发穿过点/7的射线;将射线乘以投影矩阵和观察矩阵级联后矩阵的转置逆矩阵,变换到和模型相同的坐标系中,即将射线和模型变换到同一坐标系中;判定射线和物体是否相交,如果相交则该物体是被拾取到的物体,对于有多个物体与射线相交的情况,可根据深度信息判定拾取到的物体。该方法能够得到更精确的拾取信息,但不适用于块拾取。进行块拾取时,拾取点有非常多个,需要用多条射线进行相交测试,计算量太大。3、基于离屏渲染的拾取方法 此方法是将图形对象ID等信息编码为颜色,在进行拾取时进行一次额外的绘制,将不同对象以不同的颜色绘制到离屏缓存中,绘制完成后根据鼠标位置读取离屏缓存中相应位置像素的颜色值,进行解码从而获得拾取到的物体信息。该方法的步骤如下:首先进行初始化,创建离屏缓存对象FBO以及对图形对象ID等信息进行颜色编码;然后在拾取时进行一次额外的绘制,绘制时使用与正常模式一样的变换,保证渲染得到的图像中物体位置与正常模式下一致,但绘制时每个对象使用不同的单一颜色;绘制结束后,从离屏缓存中读取与鼠标位置对应的像素的颜色,对其解码从而获得物体的ID等信息。 此方法有以下缺点:需要进行一次额外的绘制,须耗费一定时间;再者对象信息编码容量受到离屏缓存位深的限制;此外相对于前两种方法,该方法能够获取到的拾取对象信息非常有限,例如只能拾取到位于最前方的对象,而获取不到位于拾取位置后方被遮挡的对象。随着现代GPU的迅速发展,GPU的并行处理能力以超摩尔定律的速度发展着,在并行处理方面较CPU有着绝对优势,同时GPU的可编程能力越来越强,灵活性越来越高。Shader Model 4.0 的 GPU 上已经可以进行 Vertex Shader> Geometry Shader 和 FragmentShader三个阶段的GPU编程;Shader Model 5.0中更是增加了曲面细分Shader以及用于GPU通用计算的Compute Shader等。Shader是自定义的在GPU上运行的小程序,用于替代固定渲染管线中的部分流程。可编程能力的增强使得可以实现更多的图形特效,同时也能利用GPU进行更广泛的通用计算。【
技术实现思路
】 本专利技术针对现有技术中拾取效率低、拾取对象有限、拾取信息量小等各种不足,通过将GI^U用于通用计算目的而非渲染目的,充分利用现代GPU的并行处理能力、可编程性及灵活性,提供一种可在大量几何图元中快速拾取目标图元或图元集合,并能获取丰富拾取信息的拾取方法。该方法的基本思想是,将鼠标位置信息和图元顶点坐标变换到规范化设备坐标系或视口坐标系,利用几何处理器(Geometry Shader)判断投影后的二维图元与鼠标位置或选择框的关系,并利用变换反馈(Transform Feedback)将拾取结果返回应用程序。本专利技术的技术方案是: 一种基于GPU的三维几何图元单体拾取方法,其特征在于,包括如下步骤: (1)将鼠标位置由窗口设备坐标系转换到规范化设备坐标系(当拾取三角形时)或视口坐标系(当拾取线段或点时)下,并将其传入几何处理器; (2)关闭光栅化,使得进行拾取绘制时图元仅流经顶点处理器和几何处理器; (3)开启变换反馈,绘制各拾取对象,利用几何处理器判断当前图元是否会覆盖到鼠标位置,如果会覆盖到则利用变换反馈将图元信息输出到回馈缓存中,如果不会覆盖到则遗弃当前图元;应用程序端负责场景的组织、绘制顺序的控制,以及为顶点处理器和几何处理器提供拾取需要的属性参数。(4)关闭变换反馈,查询反馈结果,处理和获取拾取信息。所述的基于GPU的三维几何图元单体拾取方法,其特征在于,所述步骤⑶中,绘制各拾取对象时GPU端顶点处理器主要对输入顶点进行坐标变换,变换到裁剪坐标系下,如果需要获取拾取到的图元的其他坐标系下坐标,则在顶点处理器中进行计算并传给几何处理器。所述的基于GPU的三维几何图元单体拾取方法,其特征在于,绘制各拾取对象时GPU端几何处理器要进行以下处理: (1)定义输入输出图元类型,输入图元可能为三角形、线段或点,每个命中图元只产生一套属性输出,即输出图元类型设为点; (2)根据需要定义输出到回馈缓存的属性(例如图元所属对象的ID、父对象ID、鼠标位置深度、图元顶点世界坐标等等); (3)将输入的裁剪坐标系下的图元顶点坐标通过透视相除转换到规范化设备坐标系下,如果输入图元是线段或点,则进一步转换到视口坐标系下; (4)通过取图元顶点的前两维坐标,得到本文档来自技高网
...

【技术保护点】
一种基于GPU的三维几何图元单体拾取方法,其特征在于,包括如下步骤:(1)将鼠标位置由窗口设备坐标系转换到规范化设备坐标系(当拾取三角形时)或视口坐标系(当拾取线段或点时)下,并将其传入几何处理器;(2)关闭光栅化,使得进行拾取绘制时图元仅流经顶点处理器和几何处理器;(3)开启变换反馈,绘制各拾取对象,利用几何处理器判断当前图元是否会覆盖到鼠标位置,如果会覆盖到则利用变换反馈将图元信息输出到回馈缓存中,如果不会覆盖到则遗弃当前图元;应用程序端负责场景的组织、绘制顺序的控制,以及为顶点处理器和几何处理器提供拾取需要的属性参数。(4)关闭变换反馈,查询反馈结果,处理和获取拾取信息。

【技术特征摘要】

【专利技术属性】
技术研发人员:邹昆周文辉黎敏杨亮黎冬媛李赞邓春健段琢华
申请(专利权)人:电子科技大学中山学院
类型:发明
国别省市:

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

1