CN104408774B - 一种基于gpu加速的实体面片模型间碰撞检测方法 - Google Patents
一种基于gpu加速的实体面片模型间碰撞检测方法 Download PDFInfo
- Publication number
- CN104408774B CN104408774B CN201410766711.XA CN201410766711A CN104408774B CN 104408774 B CN104408774 B CN 104408774B CN 201410766711 A CN201410766711 A CN 201410766711A CN 104408774 B CN104408774 B CN 104408774B
- Authority
- CN
- China
- Prior art keywords
- model
- gpu
- collision
- ray
- vertex
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T19/00—Manipulating 3D models or images for computer graphics
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T1/00—General purpose image data processing
- G06T1/20—Processor architectures; Processor configuration, e.g. pipelining
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Computer Graphics (AREA)
- Computer Hardware Design (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Image Generation (AREA)
Abstract
本发明公开了一种基于GPU加速的实体面片模型间碰撞检测方法。与常规方法不同之处在于:对模型中的所有顶点创建平行射线并设定相同的射线长度作为碰撞精度,碰撞精度可根据需要进行人工调节,碰撞检测过程中所有的碰撞射线有相同的执行程序,因而运用GPU进行所有碰撞射线与模型所有三角面片的相交计算,缩短计算时间,提高计算效率,实现实体面片模型间实时精确的碰撞检测方法。
Description
技术领域
本发明涉及虚拟装配领域,特别涉及一种基于GPU加速的实体面片模型间碰撞检测方法。
背景技术
虚拟装配是近年来兴起的重要研究方向之一,它从产品装配设计的角度出发,利用虚拟现实技术和计算机仿真技术,建立一个具有听觉、视觉、触觉的多模式虚拟环境,借助于虚拟现实的输入输出设备,设计者可在虚拟环境中人机交互式地进行装配操作和规划,检验和评价产品的装配性能,生成经济、合理、实用的装配方案。
碰撞检测是虚拟装配中必然面临的技术问题,尤其是面向大规模复杂科学装置的装配设计,碰撞检测的实时性与精确性直接影响到装配性能的优劣。然而,现有的碰撞检测技术难以同时满足实时性与精确性的要求。
基于层次包围盒方法的碰撞检测方法广泛应用于复杂环境中的碰撞检测,层次包围盒方法的核心思想是用体积略大而几何特性简单的包围盒来近似地描述复杂的几何对象,从而只需对包围盒重叠的对象进行进一步的相交测试,通过构造树状层次结构可以越来越逼近对象的几何模型,典型的层次结构树主要包括AABB(alignedaxisboundingbox)层次树、包围球(spheres)层次树、OBB(orientedboundingbox)层次树和k-DOPs(discreteorientationpolytope)层次树等。
AABB层次包围盒的碰撞检测在研究历史中使用得最广,一个给定对象的AABB被定义为包含该对象且边平行于坐标轴的最小长方体,它具有构造难度低、存储量较小、相交测试复杂度低、紧密性较差等特点。使用AABB层次包围盒的方法在进行相交测试的过程中复杂度低,很容易满足实时性的要求,但其精确性却依赖于形状规则的物体;基于一条射线的精确到三角面片级的碰撞检测,仅能提高该射线的发射点与另一物体的碰撞精度,如果模型发射点附近区域为非规则区域,则会出现发射点还未与对方发生碰撞,附近区域先与对方发生碰撞而未进行检测的情况,因此实时性与精确性难以同时满足。
GPU(GraphicProcessingUnit)最初应用于图形显示的加速,GPU的单指令多数据流(SIMD:SingleInstructionMultipleData)的处理方式可并行地对大规模的数据进行操作,可大大缩短计算时间。GPU上的可编程语言出现以后,研究人员将一部分运算交由GPU来执行,以加快程序运行的速度。基于该思路,出现了一些在GPU上执行部分检测计算的碰撞检测算法,如在GPU进行三角形相交计算的方法和在GPU上进行包围盒流计算的方法,然而当场景中模型的复杂度较高,全部交由GPU并行处理会出现效率显著下降,同样无法达到精确与实时的目的。
本发明一方面为运动模型构建所有平行顶点射线,避免了单一射线带来的碰撞滞后的假象,提高了实体间碰撞检测的精度,另一方面将GPU应用于模型顶点射线查询的碰撞检测计算中,通过碰撞射线与模型所有三角面片的并行求交计算提高了碰撞检测的速度。
发明内容
本发明要解决的技术问题为:克服现有碰撞检测技术的不足,提供了一种基于GPU加速的实体面片模型间碰撞检测方法,能实时、精确的实现模型间的碰撞检查。
本发明采用的技术方案为:一种基于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发生碰撞。
进一步的,对模型A各个顶点均创建了射线,检测模型A各个顶点与模型B层次包围盒的相交情况,对发生相交的射线进行GPU加速处理。
进一步的,在模型A与模型B的包围盒发生碰撞时为GPU分配存储空间,向GPU传送发生碰撞的顶点射线的两端点位置信息及模型B所有三角面片顶点信息,使用每个GPU线程进行碰撞射线与模型B所有三角面片的相交运算。
本发明与现有技术相比的优点在于:
(1)、模型所有顶点射线的创建提高了实体间碰撞检测的精度,尤其适用于不规则的几何实体,避免了单一发射点引起的碰撞检测精度问题。
(2)、利用GPU存储每个碰撞射线的端点信息,并调用GPU线程并行处理各个碰撞射线与第二模型所有三角面片的相交运算,提高了碰撞检测的计算速度,增强了实时性。
附图说明
图1是本发明的实现流程图。
具体实施方式
如图1所示,本发明具体实现步骤如下:
步骤(1)、获取第一模型(记作模型A)所有顶点信息,获取第二模型(记作模型B)AABB层次包围盒信息;
步骤(2)、判断模型B是否为实体三角面片模型,如果是,则不做处理,否则,对模型B先进行三角面片处理;
步骤(3)、获取模型B各三角面片的顶点信息,三角面片总数记作f,并将f个三角面顶点信息构建成顶点纹理(记作纹理V)加载至GPU显存中;
步骤(4)、为模型A各个顶点创建射线,假设模型A有n个顶点,第i个顶点坐标记作(xi,yi,zi),设定阈值l作为碰撞精度,所有射线相互平行,射线方向与模型A移动的方向一致,射线方向记作(ui,vi,wi),其中,求得第i个顶点对应的第i条射线另一端点为(xi+lui,yi+lvi,zi+lwi);
步骤(5)、在模型A向模型B运动靠近过程中,假设模型A运行了距离d,实时计算模型A各顶点射线与模型B层次包围盒的相交情况,即计算射线是否与模型B层次包围盒的六个矩形面是否相交,如所有的射线均与六个矩形面不相交,说明模型A与模型B未发生碰撞,因此不做处理;
步骤(6)、根据步骤(5),如模型A与模型B的层次包围盒发生碰撞,即模型A中某个或某些顶点射线与模型B层次包围盒的六个矩形面中任何一面发生相交,则记录射线新的端点位置分别为P0(xi+dui,yi+dvi,zi+dwi)与P1(xi+(l+d)ui,yi+(l+d)vi,zi+(l+d)wi),假设有m条发生相交的顶点射线,同时为GPU分配存储空间,向GPU传送模型A的m条顶点射线的端点位置信息;
步骤(7)、根据步骤(6),利用GPU进行碰撞射线与模型B的顶点纹理V的相交运算,即依次遍历模型B的f个三角面并实时计算该三角面与模型A的m条顶点射线的交点,如模型B的所有三角面fi与模型A的所有射线均不相交,则模型A与模型B未发生碰撞,模型A继续沿该射线方向的运动,如模型B中有一条三角面fi与模型A中的任意一条射线相交,则说明模型A与模型B发生碰撞,此时模型A停止该射线方向的运动。
模型A与模型B之间的碰撞检测分为两级,第一级为模型A的所有顶点射线与模型B的包围盒之间的碰撞检测,第二级为第一级碰撞射线与模型B所有三角面片之间的碰撞检测。
模型A与模型B之间发生第一级碰撞并不能说明模型A与模型B发生碰撞,这时与模型B包围盒发生碰撞的射线至少1条。如果第一条碰撞射线与模型B的某个三角面存在相交情况,则说明碰撞已发生,此时向GPU传送的数据量及后续三角面片求交计算量低,这种情形使用GPU虽然可以起到加速效果,但并不明显,这一般发生在模型A表面较为规则的情形(比如长方体等);如果模型A与模型B之间发生第一级碰撞的前s条射线均未与模型B的三角面片相交,则此时使用GPU进入第二级碰撞检测,将显著提高碰撞检测的速度与精度,模型B的表面越是不规则,使用GPU的效果越是明显。
本发明未详细阐述部分属于本领域技术人员的公知技术。
Claims (1)
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发生碰撞。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410766711.XA CN104408774B (zh) | 2014-12-11 | 2014-12-11 | 一种基于gpu加速的实体面片模型间碰撞检测方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410766711.XA CN104408774B (zh) | 2014-12-11 | 2014-12-11 | 一种基于gpu加速的实体面片模型间碰撞检测方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104408774A CN104408774A (zh) | 2015-03-11 |
CN104408774B true CN104408774B (zh) | 2016-02-17 |
Family
ID=52646402
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410766711.XA Active CN104408774B (zh) | 2014-12-11 | 2014-12-11 | 一种基于gpu加速的实体面片模型间碰撞检测方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104408774B (zh) |
Families Citing this family (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106251407A (zh) * | 2016-08-03 | 2016-12-21 | 上海同筑信息科技有限公司 | 基于bim的超大场景盒碰撞体批量加载标识方法及系统 |
CN106599501A (zh) * | 2016-12-22 | 2017-04-26 | 大连海联自动控制有限公司 | 一种基于ogre引擎的大型船舶柴油主机虚拟现实系统 |
CN106875491A (zh) * | 2017-02-13 | 2017-06-20 | 华东师范大学 | 一种面向gpu的三角网格碰撞检测方法 |
CN107930123B (zh) * | 2017-12-15 | 2020-10-27 | 玖万里网络科技(上海)有限公司 | 碰撞系统及其信息处理方法 |
CN107961535B (zh) * | 2017-12-15 | 2020-07-17 | 玖万里网络科技(上海)有限公司 | 一种碰撞检测路径计算方法 |
CN108615262A (zh) * | 2018-04-28 | 2018-10-02 | 重庆大学 | 一种基于gpu的海量模型并行碰撞检测方法 |
CN110310357B (zh) * | 2019-07-04 | 2023-05-09 | 广州西山居网络科技有限公司 | 一种模型穿插处理方法、装置、计算设备及存储介质 |
CN111251335B (zh) * | 2020-03-24 | 2021-06-08 | 桂林电子科技大学 | 基于包围盒算法的高精度机械臂碰撞检测方法 |
CN111514587B (zh) * | 2020-04-27 | 2021-05-11 | 网易(杭州)网络有限公司 | 信息处理方法、装置、设备及存储介质 |
CN111932597B (zh) * | 2020-10-09 | 2020-12-29 | 江苏原力数字科技股份有限公司 | 一种基于代理几何体的交互式自穿透网格变形方法 |
CN112417746B (zh) * | 2020-11-18 | 2022-11-25 | 中北大学 | 一种基于神经网络预测碰撞检测的方法 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101615305A (zh) * | 2009-07-24 | 2009-12-30 | 腾讯科技(深圳)有限公司 | 碰撞检测的方法和装置 |
CN102368280A (zh) * | 2011-10-21 | 2012-03-07 | 北京航空航天大学 | 一种面向虚拟装配的基于aabb-obb混合包围盒的碰撞检测方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7737997B2 (en) * | 2006-12-28 | 2010-06-15 | Intel Corporation | Collision detection of concave bodies using art gallery problem and cube maps |
-
2014
- 2014-12-11 CN CN201410766711.XA patent/CN104408774B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101615305A (zh) * | 2009-07-24 | 2009-12-30 | 腾讯科技(深圳)有限公司 | 碰撞检测的方法和装置 |
CN102368280A (zh) * | 2011-10-21 | 2012-03-07 | 北京航空航天大学 | 一种面向虚拟装配的基于aabb-obb混合包围盒的碰撞检测方法 |
Also Published As
Publication number | Publication date |
---|---|
CN104408774A (zh) | 2015-03-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104408774B (zh) | 一种基于gpu加速的实体面片模型间碰撞检测方法 | |
Lin et al. | Collision and proximity queries | |
CN109682336B (zh) | 用于车身精度检测的三坐标测量路径自动规划与优化方法 | |
CN105469406A (zh) | 一种基于包围盒与空间划分的虚拟物体碰撞检测方法 | |
CN103236079B (zh) | 一种基于三维模型体素化的内部球改进构造方法 | |
CN111062980B (zh) | 一种软体碰撞检测方法 | |
CN101615305B (zh) | 碰撞检测的方法和装置 | |
CN102426424B (zh) | 基于分布式架构的临近空间飞行器视景仿真方法 | |
CN110340890A (zh) | 一种空间机械臂全局无碰轨迹规划系统 | |
US20200319334A1 (en) | Millimeter wave radar modeling-based method for object visibility determination | |
CN103699715A (zh) | 一种基于光滑粒子流体动力学和非线性有限元的流固耦合方法 | |
CN104574502A (zh) | 基于钢结构模型的激光断面特征识别方法 | |
Liu et al. | Optimal path planning for automated dimensional inspection of free-form surfaces | |
CN104240290A (zh) | 一种基于包围球模型的三维电缆相交检测方法 | |
US20150112655A1 (en) | Computing device and method for simulating measurement of object | |
CN103425806A (zh) | 三次元编程产品模拟系统及方法 | |
US7877210B2 (en) | System and method for projecting b-rep outlines to detect collisions along a translational path | |
Chao et al. | Improved hybrid bounding box collision detection algorithm | |
JP4592758B2 (ja) | 少なくとも2つの衝突する三次元体を有する三次元モデルから技術図面を作製するための方法 | |
CN105608239A (zh) | 三坐标程序编写系统及方法 | |
CN116049995A (zh) | 级间分离试验中基于虚拟样机的特种机构碰撞预测方法 | |
CN103177474A (zh) | 三维模型的邻域点坐标确定方法及装置、构建方法及装置 | |
CN102393827A (zh) | 一种基于连续法向锥剔除的柔性场景连续碰撞检测方法 | |
Chen et al. | Real-time continuum grass | |
WO2011111900A1 (ko) | 3차원 격자구조에서의 교점을 이용한 곡면 모델링 장치 및 방법 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |