一种基于gpu加速的实体面片模型间碰撞检测方法

文档序号:6638488阅读:385来源:国知局
一种基于gpu加速的实体面片模型间碰撞检测方法
【专利摘要】本发明公开了一种基于GPU加速的实体面片模型间碰撞检测方法。与常规方法不同之处在于:对模型中的所有顶点创建平行射线并设定相同的射线长度作为碰撞精度,碰撞精度可根据需要进行人工调节,碰撞检测过程中所有的碰撞射线有相同的执行程序,因而运用GPU进行所有碰撞射线与模型所有三角面片的相交计算,缩短计算时间,提高计算效率,实现实体面片模型间实时精确的碰撞检测方法。
【专利说明】-种基于GPU加速的实体面片模型间碰撞检测方法

【技术领域】
[0001] 本发明涉及虚拟装配领域,特别涉及一种基于GPU加速的实体面片模型间碰撞检 测方法。

【背景技术】
[0002] 虚拟装配是近年来兴起的重要研究方向之一,它从产品装配设计的角度出发,利 用虚拟现实技术和计算机仿真技术,建立一个具有听觉、视觉、触觉的多模式虚拟环境,借 助于虚拟现实的输入输出设备,设计者可在虚拟环境中人机交互式地进行装配操作和规 划,检验和评价产品的装配性能,生成经济、合理、实用的装配方案。
[0003] 碰撞检测是虚拟装配中必然面临的技术问题,尤其是面向大规模复杂科学装置的 装配设计,碰撞检测的实时性与精确性直接影响到装配性能的优劣。然而,现有的碰撞检测 技术难以同时满足实时性与精确性的要求。
[0004] 基于层次包围盒方法的碰撞检测方法广泛应用于复杂环境中的碰撞检测,层 次包围盒方法的核心思想是用体积略大而几何特性简单的包围盒来近似地描述复杂的 几何对象,从而只需对包围盒重叠的对象进行进一步的相交测试,通过构造树状层次结 构可以越来越逼近对象的几何模型,典型的层次结构树主要包括AABB(alignedaxis boundingbox)层次树、包围球(spheres)层次树、OBB(orientedboundingbox)层次树和 k-D0Ps(discreteorientationpolytope)层次树等。
[0005] AABB层次包围盒的碰撞检测在研究历史中使用得最广,一个给定对象的AABB被 定义为包含该对象且边平行于坐标轴的最小长方体,它具有构造难度低、存储量较小、相交 测试复杂度低、紧密性较差等特点。使用AABB层次包围盒的方法在进行相交测试的过程中 复杂度低,很容易满足实时性的要求,但其精确性却依赖于形状规则的物体;基于一条射线 的精确到三角面片级的碰撞检测,仅能提高该射线的发射点与另一物体的碰撞精度,如果 模型发射点附近区域为非规则区域,则会出现发射点还未与对方发生碰撞,附近区域先与 对方发生碰撞而未进行检测的情况,因此实时性与精确性难以同时满足。
[0006] GPU(GraphicProcessingUnit)最初应用于图形显示的加速,GPU的单指令多数 据流(SIMD:SingleInstructionMultipleData)的处理方式可并行地对大规模的数据进 行操作,可大大缩短计算时间。GPU上的可编程语言出现以后,研究人员将一部分运算交由 GPU来执行,以加快程序运行的速度。基于该思路,出现了一些在GPU上执行部分检测计算 的碰撞检测算法,如在GPU进行三角形相交计算的方法和在GPU上进行包围盒流计算的方 法,然而当场景中模型的复杂度较高,全部交由GPU并行处理会出现效率显著下降,同样无 法达到精确与实时的目的。
[0007] 本发明一方面为运动模型构建所有平行顶点射线,避免了单一射线带来的碰撞 滞后的假象,提高了实体间碰撞检测的精度,另一方面将GPU应用于模型顶点射线查询的 碰撞检测计算中,通过碰撞射线与模型所有三角面片的并行求交计算提高了碰撞检测的速 度。


【发明内容】

[0008] 本发明要解决的技术问题为:克服现有碰撞检测技术的不足,提供了一种基于 加速的实体面片模型间碰撞检测方法,能实时、精确的实现模型间的碰撞检查。
[0009] 本发明米用的技术方案为:一种基于GPU加速的实体面片模型间碰撞检测方法, 其特征在于,实现步骤包括:
[0010] 步骤(1)、获取第一模型A所有顶点信息,获取第二模型B的AABB层次包围盒位置 信息;
[0011] 步骤(2)、判断模型B是否为实体三角面片模型,如果是,则不做处理,否则,先对 模型B进行三角面片处理;
[0012]步骤(3)、获取模型B各三角面片的顶点信息,并将所有顶点信息构建成顶点纹理 V加载至GPU显存中;
[0013] 步骤(4)、为模型A各个顶点创建射线,设定阈值作为碰撞精度,所有射线相互平 行,且阈值相同,由各个顶点与阈值求得射线的另一端点,将所有顶点射线两端点位置信息 存储至系统内存中;
[0014] 步骤(5)、在模型A向模型B运动靠近过程中,判断模型A各顶点射线与模型B的 层次包围盒是否相交,如果是,则模型A与模型B的包围盒发生碰撞,否则,模型A与模型B 不发生碰撞;
[0015]步骤(6)、根据步骤(5),如果模型A与模型B的包围盒发生碰撞,则为GPU分配存 储空间,向GPU传送发生碰撞的射线两端点位置信息;
[0016] 步骤(7)、根据步骤(6),利用GPU进行碰撞射线与模型B的顶点纹理V的相交运 算,判断碰撞射线是否与模型B任何一个三角面片都不相交,如果是,则模型A与模型B不 发生碰撞,否则,模型A与模型B发生碰撞。
[0017] 进一步的,对模型A各个顶点均创建了射线,检测模型A各个顶点与模型B层次包 围盒的相交情况,对发生相交的射线进行GPU加速处理。
[0018] 进一步的,在模型A与模型B的包围盒发生碰撞时为GPU分配存储空间,向GPU传 送发生碰撞的顶点射线的两端点位置信息及模型B所有三角面片顶点信息,使用每个GPU 线程进行碰撞射线与模型B所有三角面片的相交运算。
[0019] 本发明与现有技术相比的优点在于:
[0020] (1)、模型所有顶点射线的创建提高了实体间碰撞检测的精度,尤其适用于不规则 的几何实体,避免了单一发射点引起的碰撞检测精度问题。
[0021](2)、利用GPU存储每个碰撞射线的端点信息,并调用GPU线程并行处理各个碰撞 射线与第二模型所有三角面片的相交运算,提高了碰撞检测的计算速度,增强了实时性。

【专利附图】

【附图说明】
[0022] 图1是本发明的实现流程图。

【具体实施方式】
[0023] 如图1所示,本发明具体实现步骤如下:
[0024]步骤(1)、获取第一模型(记作模型A)所有顶点信息,获取第二模型(记作模型 B)AABB层次包围盒信息;
[0025]步骤(2)、判断模型B是否为实体三角面片模型,如果是,则不做处理,否则,对模 型B先进行三角面片处理;
[0026] 步骤(3)、获取模型B各三角面片的顶点信息,三角面片总数记作f,并将f个三角 面顶点信息构建成顶点纹理(记作纹理V)加载至GPU显存中;
[0027] 步骤⑷、为模型A各个顶点创建射线,假设模型A有n个顶点,第i个顶点坐标记 作(Xi,yi,Zi),设定阈值1作为碰撞精度,所有射线相互平行,射线方向与模型A移动的方向 一致,射线方向记作(Ui,Vi,Wi),其中,

【权利要求】
1. 一种基于GPU加速的实体面片模型间碰撞检测方法,其特征在于,实现步骤包括: 步骤(1)、获取第一模型A所有顶点信息,获取第二模型B的AABB层次包围盒位置信 息; 步骤(2)、判断模型B是否为实体三角面片模型,如果是,则不做处理,否则,先对模型B 进行三角面片处理; 步骤(3)、获取模型B各三角面片的顶点信息,并将所有顶点信息构建成顶点纹理V加 载至GPU显存中; 步骤(4)、为模型A各个顶点创建射线,设定阈值作为碰撞精度,所有射线相互平行,且 阈值相同,由各个顶点与阈值求得射线的另一端点,将所有顶点射线两端点位置信息存储 至系统内存中; 步骤(5)、在模型A向模型B运动靠近过程中,判断模型A各顶点射线与模型B层次包 围盒是否相交,如果是,则模型A与模型B的包围盒发生碰撞,否则,模型A与模型B不发生 碰撞; 步骤(6)、根据步骤(5),如模型A与模型B的层次包围盒发生碰撞,则为GPU分配存储 空间,向GPU传送发生碰撞的射线端点位置信息; 步骤(7)、根据步骤(6),利用GPU进行碰撞射线与模型B的顶点纹理V的相交运算,判 断碰撞射线是否与模型B任何一个三角面片都不相交,如果是,则模型A与模型B不发生碰 撞,否则,模型A与模型B发生碰撞。
2. 根据权利要求1所述的基于GPU加速的实体面片模型间碰撞检测方法,其特征在于, 对模型A各个顶点均创建了射线,检测模型A各个顶点与模型B层次包围盒的相交情况,对 发生相交的射线进行GPU加速处理。
3. 根据权利要求1所述的基于GPU加速的实体面片模型间碰撞检测方法,其特征在于, 在模型A与模型B的包围盒发生碰撞时为GPU分配存储空间,向GPU实时传送发生碰撞的 顶点射线的两端点位置信息,使用每个GPU线程进行碰撞射线与模型B所有三角面片的相 交运算。
【文档编号】G06T1/00GK104408774SQ201410766711
【公开日】2015年3月11日 申请日期:2014年12月11日 优先权日:2014年12月11日
【发明者】赵锦波, 李廷, 何桃, 龙鹏程, 吴宜灿 申请人:中国科学院合肥物质科学研究院
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1