一种面向GPU包围盒碰撞检测方法技术

技术编号:15692085 阅读:81 留言:0更新日期:2017-06-24 05:49
本发明专利技术公开了一种面向GPU包围盒碰撞检测方法,包括以下三个阶段:阶段1、包围盒层次结构构造阶段;阶段2、轴对齐包围盒(AABB)碰撞检测阶段;阶段3、包围盒层次结构更新阶段;其中,阶段2具体包括步骤21、在GPU上进行AABB重叠测试;步骤22、在GPU上进行基元三角形相交测试;本发明专利技术的一种面向GPU包围盒碰撞检测方法在保证高度交互式更新率的前提下,快速准确地检测两个严重变形模型的所有基元对之间的相交。

A collision detection method for GPU bounding box

The invention discloses a GPU oriented bounding box collision detection method, including the following three stages: Stage 1, bounding box hierarchy construction stage; stage 2, axis aligned bounding box (AABB) collision detection stage; 3 stage, bounding box hierarchy updates the stage; stage 2 includes 21 steps the AABB overlap in the GPU test; step 22, the GPU on the basis of the invention of the triangle intersection test; a GPU oriented bounding box collision detection method in the premise of ensuring the highly interactive update rate, detection of two serious deformation model based on the intersection between all elements quickly and accurately.

【技术实现步骤摘要】
一种面向GPU包围盒碰撞检测方法
本专利技术涉及计算机图形学领域,尤其涉及一种面向GPU包围盒碰撞检测方法。
技术介绍
碰撞检测是计算机图像、虚拟现实、计算机游戏、动画、计算机辅助设计、机器人及虚拟制造等领域中的一个重要研究课题。碰撞检测技术是检测物体之间是否发生接触或穿透,如果发生了这种情况就要采取相应的相应措施,而自碰撞检测是可变形体模拟过程中最耗时的环节。而,现有算法大多是为单核CPU设计的,无法有效扩展到大规模并行处理器上。随着多核图形处理器(GraphicsProcessingUnit,简称GPU)的快速发展,基本上所有的计算机上都配置有GPU,设计新的并行算法有望利用GPU的计算资源提高碰撞检测算法的效率。因此,本领域的技术人员致力于开发一种面向GPU包围盒碰撞检测方法,在保证高度交互式更新率的前提下,快速准确地检测两个严重变形模型的所有基元对之间的相交。
技术实现思路
有鉴于现有技术的上述缺陷,本专利技术所要解决的技术问题是开发一种面向GPU包围盒碰撞检测方法,在保证高度交互式更新率的前提下,快速准确地检测两个严重变形模型的所有基元对之间的相交。为了获得GPU的最大计算性能,需要考虑两个问题:1、每个线程应使用尽量少的硬件寄存器和存储资源,以保证GPU内部同一时刻可以运行更多的活动线程;2、线程的单指令多数据操作对程序的分支执行非常敏感,统一线程组内的线程只有执行程序的同一分支才能获得最大性能。为实现上述目的,本专利技术提供了一种面向GPU包围盒碰撞检测方法,包括以下三个阶段:阶段1、包围盒层次结构构造阶段;阶段2、轴对齐包围盒(AABB)碰撞检测阶段;阶段3、包围盒层次结构更新阶段;其中,阶段1具体为包括步骤11、在GPU上分阶段构造BVH树;阶段2具体为包括步骤21、在GPU上进行AABB重叠测试;步骤22、在GPU上进行基元三角形相交测试;阶段3具体为包括步骤31、使用包围盒修整的方式更新BVH树结构。进一步地,步骤11具体为:采用表面积启发式算法策略来确定最优的分割点,进而形成包围盒的节点。进一步地,计算每个潜在的分割点,然后采用宽度优先的方式计算各个采样分割点的表面积启发式算法花费,以确定加速结构中一个节点包围盒的最优分割点位置。进一步地,计算每个潜在分割点的具体步骤为:Cp被设置为选取当前采样点后进行遍历和相交操作所可能产生的花费;nl和nr分别被设置为相应左子节点、右子节点所含的面片数量;S(Nl)、S(Nr)分别被设置为与当前采样分割点相邻的左子节点、右子节点的表面积,S(N)被设置为当前采样分割点的父节点的表面积,KT被设置为对当前采样分割点的父节点进行遍历所产生的花费,KI被设置为对当前采样分割点进行相交操作所产生的花费,利用公式Cp=KT+Kl[nlS(Nl)+nrS(Nr)]/S(N)得到的最小的Cp所对应的点即为最优分割点。进一步地,在包围盒碰撞检测阶段,首先在GPU上进行全局的AABB重叠测试,接着在GPU上进行大规模并行重叠测试,在模型的全局AABB对之间检测相交,找出存在相交的模型对。进一步地,步骤31具体为,首先更新叶子节点,再更新两个孩子节点,最后更新中间节点。进一步地,步骤1还包括减少GPU计算资源浪费的步骤,具体为:步骤12、在全局存储区域中建立2个队列,第1队列和第2队列分别用来存放等待进行划分的包围盒;步骤13、当GPU存在空闲线程块时,依次从第1队列中取等待进行划分的包围盒节点进行划分,并将产生的新的包围盒节点放入第2队列;步骤14、当第1队列中所有等待进行划分的包围盒节点处理完毕后,清空第1队列中的所有节点数据;当GPU存在空闲线程块时,依次从第2队列中取等待进行划分的包围盒节点进行划分,并将产生的新的包围盒节点放入第1队列,直至第2队列中等待进行划分的包围盒节点都处理完毕;步骤15、循环执行步骤14和步骤15,直至完成相应的包围盒节点的划分。进一步地,构造BVH树的中期,使用一个block处理一个BVH节点。进一步地,步骤1分别对模型X和模型Y构造BVH树。技术效果本专利技术的一种面向GPU包围盒碰撞检测方法能够有效地利用GPU可多线程并行的特点,在GPU上构建BVH树结构,在GPU上执行大规模并行AABB包围盒重叠测试,在GPU上进行造包围盒层次结构的更新,有效地将复杂的变形体碰撞检测在GPU下进行大规模并行流计算的方式实现,在保证高度交互率的前提下,快速准确检测两个严重变形模型的所有基元对之间的相交。以下将结合附图对本专利技术的构思、具体结构及产生的技术效果作进一步说明,以充分地了解本专利技术的目的、特征和效果。附图说明图1是本专利技术的一个较佳实施例的一种面向GPU包围盒碰撞检测方法的流程示意图。图2是本专利技术的一个较佳实施例的一种面向GPU包围盒碰撞检测方法的BVH树构造过程示意图。具体实施方式如图1所示,本专利技术的一较佳实施例提供了一种面向GPU包围盒碰撞检测方法,以检测模型X、模型Y之间发生碰撞的三角形基元对为例,对专利技术的一种面向GPU包围盒碰撞检测方法进行详细说明,在本专利技术的较佳实施例中,输入流为根据模型X和Y构造的BVH树结构构成的两个轴对齐包围盒(AxisAlignedBoundingBox,简称AABB),面向GPU包围盒碰撞检测方法的步骤主要是:阶段1、包围盒层次结构构造阶段;阶段2、轴对齐包围盒碰撞检测阶段;阶段3、包围盒层次结构更新阶段;具体地,步骤如下:阶段1具体为包括步骤11、在GPU上分阶段构造BVH树;步骤11、在GPU上分阶段构造BVH树的具体步骤是,分别对模型X、Y创建初始的BVH树。采用表面积启发式算法(SAH)策略来确定最优的分割点,进而形成包围盒节点。GPU线程计算单元都用以计算各个采样分割点的SAH花费进而快速确定加速结构中一个节点包围盒的最优分割点位置。采用宽度优先的方式,在3个坐标轴上分别计算采样分割点的SAH花费,然后选取每个坐标轴上花费最小的分割点。计算每个潜在分割点的具体步骤为:Cp被设置为选取当前采样点后进行遍历和相交操作所可能产生的花费;nl和nr分别被设置为相应左子节点、右子节点所含的面片数量;S(Nl)、S(Nr)分别被设置为与当前采样分割点相邻的左子节点、右子节点的表面积,S(N)被设置为当前采样分割点的父节点的表面积,KT被设置为对当前采样分割点的父节点进行遍历所产生的花费,KI被设置为对当前采样分割点进行相交操作所产生的花费,利用公式Cp=KT+KI[nlS(Nl)+nrS(Nr)]/S(N)得到的最小的Cp所对应的点即为最优分割点。根据BVH树在不同构造阶段的特点采用不同的构造策略,解决在构造初期线程块间因任务不均而使空闲线程块出现等待状况的问题。在加速构造初期,可以将GPU中全部线程计算单元都用以计算各个采样分割点的SAH花费,进而快速确定加速结构中一个结点包围盒的最优分割点位置。因此,步骤1还包括减少GPU计算资源浪费的步骤,具体为:步骤12、在全局存储区域中建立2个队列,第1队列和第2队列分别用来存放等待进行划分的包围盒;步骤13、当GPU存在空闲线程块时,依次从第1队列中取等待进行划分的包围盒节点进行划分,并将产生的新的包围盒节点放入第2队列;对于第1队列中编号为k的包围盒节点进行本文档来自技高网...
一种面向GPU包围盒碰撞检测方法

【技术保护点】
一种面向GPU包围盒碰撞检测方法,其特征在于,包括以下三个阶段:阶段1、包围盒层次结构构造阶段;阶段2、轴对齐包围盒(AABB)碰撞检测阶段;阶段3、包围盒层次结构更新阶段;其中,所述阶段1具体为包括步骤11、在GPU上分阶段构造BVH树;所述阶段2具体为包括步骤21、在GPU上进行AABB重叠测试;步骤22、在GPU上进行基元三角形相交测试;所述阶段3具体为包括步骤31、使用包围盒修整的方式更新BVH树结构。

【技术特征摘要】
1.一种面向GPU包围盒碰撞检测方法,其特征在于,包括以下三个阶段:阶段1、包围盒层次结构构造阶段;阶段2、轴对齐包围盒(AABB)碰撞检测阶段;阶段3、包围盒层次结构更新阶段;其中,所述阶段1具体为包括步骤11、在GPU上分阶段构造BVH树;所述阶段2具体为包括步骤21、在GPU上进行AABB重叠测试;步骤22、在GPU上进行基元三角形相交测试;所述阶段3具体为包括步骤31、使用包围盒修整的方式更新BVH树结构。2.如权利要求1所述的一种面向GPU包围盒碰撞检测方法,其特征在于,所述步骤11具体为:采用表面积启发式算法策略来确定最优的分割点,进而形成包围盒的节点。3.如权利要求2所述的一种面向GPU包围盒碰撞检测方法,其特征在于,计算每个潜在的分割点,然后采用宽度优先的方式计算各个采样分割点的所述表面积启发式算法花费,以确定加速结构中一个节点包围盒的最优分割点位置。4.如权利要求3所述的一种面向GPU包围盒碰撞检测方法,其特征在于,计算每个潜在分割点的具体步骤为:Cp被设置为选取当前采样点后进行遍历和相交操作所可能产生的花费;nl和nr分别被设置为相应左子节点、右子节点所含的面片数量;S(Nl)、S(Nr)分别被设置为与当前采样分割点相邻的左子节点、右子节点的表面积,S(N)被设置为当前采样分割点的父节点的表面积,KT被设置为对当前采样分割点的父节点进行遍历所产生的花费,KI被设置为对当前采样分割点进行相交操作所产生的花费,利用公式Cp=KT+KI[nlS(Nl)+nrS(Nr)]/S(N)得到的最小的Cp...

【专利技术属性】
技术研发人员:张新宇黄楠郭娟
申请(专利权)人:华东师范大学
类型:发明
国别省市:上海,31

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

1