CN104462764A - 一种虚拟现实仿真中物体表面间最小距离的快速计算方法 - Google Patents
一种虚拟现实仿真中物体表面间最小距离的快速计算方法 Download PDFInfo
- Publication number
- CN104462764A CN104462764A CN201410615853.6A CN201410615853A CN104462764A CN 104462764 A CN104462764 A CN 104462764A CN 201410615853 A CN201410615853 A CN 201410615853A CN 104462764 A CN104462764 A CN 104462764A
- Authority
- CN
- China
- Prior art keywords
- model
- distance
- summit
- nearest
- tree
- 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.)
- Pending
Links
Landscapes
- Processing Or Creating Images (AREA)
Abstract
本发明属于一种虚拟仿真技术领域,特别涉及一种虚拟模型空间距离计算方法。一种虚拟现实仿真中物体表面间最小距离的快速计算方法,其特征包括以下步骤:A、将虚拟物体模型离散成顶点和多边形面片的形式,标记各顶点的序号及多边形面片对应顶点索引信息;B、构建树型空间结构遍历后找出两模型间的最近顶点对,并计算该最近点对在欧式空间直线距离;还包括C、在两个模型上分别找出各自最近顶点所在的全部多边形面片;D、分别计算两个模型上最近顶点到对方模型上最近顶点所在全部多边形面片的距离;E、重复步骤C和D,找出最小值即为两物体间的最小间隙。本发明加速了最近顶点的搜索过程,提高了估算精度,加强了对不同类型物体模型的适应性。
Description
技术领域
本发明属于一种虚拟仿真技术领域,特别涉及一种虚拟模型空间距离计算方法。
背景技术
随着虚拟仿真技术的发展,虚拟模型所包含的信息越来越丰富,同时数据量也不断增大。现有技术中,计算两个虚拟物体模型间的最小距离主要有以下两种方案:
第一类是穷举的方法,即采用暴力搜索(Brute-force)算法遍历构成两个模型的所有顶点,计算两两顶点之间的最近距离并进行排序比较,找出其中最短的距离,并记下最短距离对应的顶点对,即为两个虚拟模型的最近距离和最近点。这种方法思路简单,容易实现,假设搜索空间包括n个点,则该算法将计算所有可能的n(n-1)/2对点之间的距离,并在其中挑选出最小距离的一对。该算法由于需要遍历所有可能的点对,是一种线性搜索算法,搜索效率很低,其算法复杂度为O(n2)。在实际应用中仅适用于搜索空间较小的情况。
第二类是GJK(Gilbert-Johnson-Keerthi)算法,一种碰撞检测算法。用GJK算法来计算的最近距离即两个虚拟模型的明可夫斯基差形状到原点的最近距离。这种方法通过构建明可夫斯基差形状,用迭代的算法避开了对点的遍历,可以获得很高的速度。但GJK算法只适用于凸多边形或凸多面体,所以在实现的应用中可能多数情况都不能直接运行该算法来进行距离的计算,涉及到如何将复杂物体分割成多个凸多面体的问题,增加了其复杂度的不确定性。
本发明是针对以上方法的不足,提供一种能快速、精确计算两个虚拟模型之间最小距离以及最邻近点的方法。
发明内容
本发明的目的是:提供一种能快速、精确计算两个虚拟模型之间最小距离以及最邻近点的方法。
本发明的技术方案是:
一种虚拟现实仿真中物体表面间最小距离的快速计算方法,其特征是包括以下步骤:
步骤1.将虚拟物体模型A和B离散成顶点和多边形面片的形式,并标记模型中各顶点的序号以及多边形面片对应的顶点索引信息;
步骤2.对模型B的所有顶点,构建树型空间结构,以实现三维空间的二分查找树的数据存储结构;
步骤3.对于模型A上的每一个点ai,在欧式空间中遍历步骤2所述的模型B的树型空间结构中各节点,并在其中找到距ai最近的点pi,并计算ai与pi之前的直线距离di;
步骤4.遍历步骤3中得到的所有距离di,找出最小值dmin,并记录最小值dmin对应的顶点ai和pi,则最小值dmin为两个模型的最近距离的初步估计值,对应的顶点ai和pi为初步估计的两个模型的最近点。
在模型采样率足够高的前提下,完成步骤1至步骤4后找出的最近顶点和最短距离便能够近似地表示两个模型的最近点和最小距离。但一方面当模型的采样率比较低的时候,如果直接步骤1至步骤4后找出的最近顶点计算出的最近距离来表示两个模型之间的最近距离,就会有很大的偏差。另一方面,当虚拟模型表面曲率变化不大的时候,若采样率过高,会使数据量大幅度增加,从而增加运算量,无端增加系统开销。为了避免这样的情况出现,本发明设计了步骤5-步骤9,分别计算两个模型上最近顶点到对方模型上最近顶点所在全部多边形面片的距离,寻找其中的最近点,作为两个虚拟模型之间的最邻近点与最小距离,使结果更加精确,其实现方法为:
步骤5.在模型B上确定顶点pi所在的全部n个多边形,分别在每个多边形面上找到步骤3所述的距离模型A上顶点ai最近的点q1,q2…qn,并分别计算出ai到q1,q2…qn的直线距离l1,l2…ln;
步骤6.在模型A上确定顶点ai所在的全部m个多边形,在每个多边形上找到距离模型B上顶点pi最近的点r1,r2...rm,并分别计算出pi到点r1,r2...rm的直线距离k1,k2,...km;
步骤7.遍历所有距离l1,l2…ln,找到最短距离lmin,则lmin所对应的点qj即为当前最邻近点;
步骤8.遍历所有距离k1,k2,...km找到最短距离kmin,kmin<=kj,j=1,...m,则kmin所对应的点rj即为当前最邻近点;
步骤9.比较kmin与lmin的大小,两者的最小值即为两个模型的最近距离的精确估计值,对应的顶点ai与qj、或pi与rj为精确估计的两个模型的最近点。
进一步的,步骤1所述的将虚拟模型离散的过程中,根据不同的应用场景以及实时性和精度要求进行参数的设定,达到适用其应用场景的模型设定。
进一步的,根据权利要求1所述的一种虚拟仿真中物体间最小距离的快速估算方法,其特征是:步骤2所述构建树型空间结构的方法采用最近邻搜索算法构建kd树的空间结构。
进一步的,根据权利要求1所述的一种虚拟仿真中物体间最小距离的快速估算方法,其特征是:步骤3所述遍历步骤2所述的模型B的树型空间结构中各节点,并在其中找到距ai最近的点pi时用采用并行计算的方法加以实现,包括基于GPU的并行搜索加速、基于OpenMP的并行计算、多线程计算、分布式计算的并行计算方法。
本发明与直接暴力搜索遍历方法相比,树空间结构(如kd树)的构建极大地加速最近顶点对的搜索过程。找到树结构中距离查询点最近的三维空间点,在模型采样率足够高的前提下,这样找出的最近顶点和最短距离便能够近似地表示两个模型的最近点和最小距离。
本发明在点到点最短距离计算的基础上,又实现了点到多边形边和面以及多边形面到多边形面之间最短距离的计算,摆脱了虚拟物体模型建立和多边形离散化时模型分辨率或采样率对算法精度、稳定性和鲁棒性的影响。尤其是在一些曲率变化不大的模型表面可以使采样率尽可能降低,减少多边形数量,以节省存储空间,提高计算效率,同时更好地实现实时性。
本发明与GJK算法相比,该方法对虚拟模型的具体形状没有任何要求,可以适用于任意复杂形状(非凸几何体)的模型,具有普适性。
本发明在虚拟现实、3D游戏、场景模拟、工程仿真等领域都有着重要的实用价值和良好的应用前景。
附图说明
图1为本发明流程图;
图2为本发明所述的kd树对应的三维空间切割示意图;
图3为点到三角形切片的最短距离计算过程示意图。
具体实施方式
实施例1:如图1所示一种虚拟现实仿真中物体表面间最小距离的快速计算方法,其特征是包括以下步骤:
步骤1.将虚拟物体模型A和B离散成顶点和多边形面片的形式,并标记模型中各顶点的序号以及多边形面片对应的顶点索引信息;设模型A和B离散后的顶点数为为NA和NB;虚拟模型离散的过程中,根据不同的应用场景以及实时性和精度要求进行参数的设定,达到适用其应用场景的模型设定。
步骤2.对模型B的所有顶点,采用构建树型空间结构,以实现三维空间的二分查找树的数据存储结构;其中:
构建相应的树型空间结构选用最近邻搜索算法构建kd树的空间结构。kd树是用来快速搜索近邻的一种数据结构,对于三维空间的点,其基于点的空间位置信息,通过二分法迭代划分三维空间,实现最优存储与快速搜索。三维空间的划分示意图如图2所示。由于模型B的顶点数为NB,则在kd树上进行k近邻查找的时间复杂度为O(log2NB)。对于该方法中的三维空间kd树的构建过程如下:
a1.在三维数据集合(模型B顶点集合)中选择具有最大方差的维度m,在该维度上以其中值为中心对该数据集合进行划分,得到两个子集合,并创建一个树结点node用于存储;
a2.每个子集合重复步骤a1直到所有子集合都不能再划分为止。
步骤3.对于模型A上的每一个点ai,在欧式空间中遍历模型B步骤2所述的树型空间结构中节点,并在其中找到距ai最近的点pi,并计算ai与pi之前的直线距离di;最终得到点对集合为{ai,pi|ai∈A,pi∈B},i=1…NA,对应的距离值为{di},i=1…NA;其中:
对于kd树,可以基于欧式距离进行k近邻的查找,但在该方法中只需要得到模型B中距离ai最近的点,所以取k=1即可。
对于查询点ai和模型B构建好的kd树,最近邻查找的过程如下:
b1.从根结点开始,将查询点ai与各个结点进行比较,并根据比较结果向下访问kd树,直到达到叶子结点;
b2.到达叶子结点后进行回溯操作,判断未被访问过的分支里是否还有离查询点ai更近的点,从而找到离查询点ai更近的最近邻点。
所述遍历模型B的树型空间结构中各节点,并在其中找到距ai最近的点pi时用采用并行计算的方法加以实现,包括基于GPU的并行搜索加速、基于OpenMP的并行计算、多线程计算、分布式计算的并行计算方法。
步骤4.遍历步骤3中得到的所有距离di,找出最小值dmin,并记录最小值dmin对应的顶点ai和pi,则最小值dmin为初步估计的两个模型的最近距离,对应的顶点ai和pi为初步估计的两个模型的最近点。
实施例2:一种虚拟现实仿真中物体表面间最小距离的快速计算方法,其特征是在实施例1的基础上还包括以下步骤:
步骤5.在模型B上确定顶点pi所在的全部n个多边形,分别在每个多边形面上找到步骤3所述的距离模型A上顶点ai最近的点q1,q2…qn,并分别计算出ai到q1,q2…qn的直线距离l1,l2…ln;
该步骤也就是求模型A上顶点ai到的模型B上确定顶点pi所在的全部n个多边形的最近点及距离,即求点到面的最短距离。可以采用点到点在面上的投影点之间的距离来计算。多边形以三角形为例。点Q到三角形ABC之间的最短距离的流程如下:
c1.令v0=A-B,v1=A-C,则(v0,v1)为该三角形所确定平面的一个基,此时平面上任意一点可以表示为Pt=A+t0·v0+t1·v1。
c2.设点Q在三角形ABC所在平面上的投影为P,则有Q-P=Q-(A+t0·v0+t1·v1),且 即 解方程组即可得到t0和t1的值,代入P=A+t0·v0+t1·v1便得到点P的坐标值。
c3.若有 则P=A+t0·v0+t1·v1在三角形ABC内部,那么点P即为点Q在三角形上的最近点,|QP|即为最短距离;否则P不在三角形ABC内部,执行步骤c4;
c4.根据参数t0,t1的范围划分为以下三种情况,如图3所示:t0<0,将点P投影在边AC上,即t0=0,并将t1限制在[0,1]范围内;或 将点P投影在边AB上,即t1=0,并将t0限制在[0,1]范围内;或 将点P投影在边BC上,即t0+t1=1,并将t0,t1限制在[0,1]范围内。这三种情况下点Q在三角形某条边上的投影点即为点Q在三角形上的最近点,相应的距离即为最短距离。
步骤6.在模型A上确定顶点ai所在的全部m个多边形,在每个多边形上找到距离模型B上顶点pi最近的点r1,r2...rm,并分别计算出pi到点r1,r2...rm的直线距离k1,k2,...km;
步骤7.遍历所有距离l1,l2…ln,找到最短距离lmin,则lmin所对应的点qj即为当前最邻近点;
步骤8.遍历所有距离k1,k2,...km找到最短距离kmin,kmin<=kj,j=1,...m,则kmin所对应的点rj即为当前最邻近点;
步骤9.比较kmin与lmin的大小,两者的最小值即为两个模型的最近距离的精确估计值,对应的顶点ai与qj、或pi与rj为精确估计的两个模型的最近点。
实验结果:对若干具有不同顶点数的虚拟模型完成步骤1-4的运算速度的统计如下表所示:
实验序号 | 模型A顶点数NA | 模型B顶点数NB | 实时性(fps) |
1 | 24 | 88 | ~100 |
2 | 88 | 24 | ~100 |
3 | 347 | 644 | ~90 |
4 | 644 | 347 | ~90 |
5 | 4648 | 4996 | ~70 |
6 | 4996 | 4648 | ~40 |
7 | 1028 | 17473 | ~60 |
8 | 17473 | 1028 | ~20 |
9 | 17473 | 17473 | ~10 |
由统计结果可以看出,随着顶点数量的增加,处理时间会增加,但都能基本满足实时性的要求。另外,实验中用来构建kd树的是模型B中的顶点,而模型A中的顶点则是用来作为查询点,所以当两个模型的顶点数量不同时,选择顶点数量少的那个作为模型A可以获得更高的实时性。
Claims (5)
1.一种虚拟现实仿真中物体表面间最小距离的快速计算方法,其特征是包括以下步骤:
步骤1.将虚拟物体模型A和B离散成顶点和多边形面片的形式,并标记模型中各顶点的序号以及多边形面片对应的顶点索引信息;
步骤2.对模型B的所有顶点,构建树型空间结构,以实现三维空间的二分查找树的数据存储结构;
步骤3.对于模型A上的每一个点ai,在欧式空间中遍历步骤2所述的模型B的树型空间结构中各节点,并在其中找到距ai最近的点pi,并计算ai与pi之前的直线距离di;
步骤4.遍历步骤3中得到的所有距离di,找出最小值dmin,并记录最小值dmin对应的顶点ai和pi,则最小值dmin为两个模型的最近距离的初步估计值,对应的顶点ai和pi为初步估计的两个模型的最近点。
2.根据权利要求1所述的一种虚拟现实仿真中物体表面间最小距离的快速计算方法,其特征是还包括以下步骤:
步骤5.在模型B上确定顶点pi所在的全部n个多边形,分别在每个多边形面上找到步骤3所述的距离模型A上顶点ai最近的点q1,q2…qn,并分别计算出ai到q1,q2…qn的直线距离l1,l2…ln;
步骤6.在模型A上确定顶点ai所在的全部m个多边形,在每个多边形上找到距离模型B上顶点pi最近的点r1,r2...rm,并分别计算出pi到点r1,r2...rm的直线距离k1,k2,...km;
步骤7.遍历所有距离l1,l2…ln,找到最短距离lmin,则lmin所对应的点qj即为当前最邻近点;
步骤8.遍历所有距离k1,k2,...km找到最短距离kmin,kmin<=kj,J=1,...m,则kmin所对应的点rj即为当前最邻近点;
步骤9.比较kmin与lmin的大小,两者的最小值即为两个模型的最近距离的精确估计值,对应的顶点ai与qj、或pi与rj为精确估计的两个模型的最近点。
3.根据权利要求1所述的一种虚拟现实仿真中物体表面间最小距离的快速计算方法,其特征是:步骤1所述的将虚拟模型离散的过程中,根据不同的应用场景以及实时性和精度要求进行参数的设定,达到适用其应用场景的模型设定。
4.根据权利要求1所述的一种虚拟现实仿真中物体表面间最小距离的快速计算方法,其特征是:步骤2所述构建树型空间结构的方法为采用最近邻搜索算法构建kd树的空间结构。
5.根据权利要求1所述的一种虚拟现实仿真中物体表面间最小距离的快速计算方法,其特征是:步骤3所述遍历模型B的树型空间结构中各节点,并在其中找到距ai最近的点pi时用采用并行计算的方法加以实现,包括基于GPU的并行搜索加速、基于OpenMP的并行计算、多线程计算、分布式计算的并行计算方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410615853.6A CN104462764A (zh) | 2014-11-06 | 2014-11-06 | 一种虚拟现实仿真中物体表面间最小距离的快速计算方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410615853.6A CN104462764A (zh) | 2014-11-06 | 2014-11-06 | 一种虚拟现实仿真中物体表面间最小距离的快速计算方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN104462764A true CN104462764A (zh) | 2015-03-25 |
Family
ID=52908793
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410615853.6A Pending CN104462764A (zh) | 2014-11-06 | 2014-11-06 | 一种虚拟现实仿真中物体表面间最小距离的快速计算方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104462764A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105787126A (zh) * | 2016-03-29 | 2016-07-20 | Tcl集团股份有限公司 | k-d树生成方法和k-d树生成装置 |
CN115908542A (zh) * | 2022-10-31 | 2023-04-04 | 中交第四航务工程勘察设计院有限公司 | 基于bim的多面体间距离快速计算方法 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101040809A (zh) * | 2007-04-19 | 2007-09-26 | 上海交通大学 | 基于认知和目标辨识的视觉替代方法 |
-
2014
- 2014-11-06 CN CN201410615853.6A patent/CN104462764A/zh active Pending
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101040809A (zh) * | 2007-04-19 | 2007-09-26 | 上海交通大学 | 基于认知和目标辨识的视觉替代方法 |
Non-Patent Citations (2)
Title |
---|
AR S. ET AL.: "Self-customized BSP trees for collision detection", 《COMPUTATIONAL GEOMETRY,THEORY AND APPLICATIONS》 * |
彭亚宁: "面向口腔正畸的仿真技术研究与应用", 《中国优秀硕士学位论文全文数据库医药卫生科技辑》 * |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105787126A (zh) * | 2016-03-29 | 2016-07-20 | Tcl集团股份有限公司 | k-d树生成方法和k-d树生成装置 |
CN115908542A (zh) * | 2022-10-31 | 2023-04-04 | 中交第四航务工程勘察设计院有限公司 | 基于bim的多面体间距离快速计算方法 |
CN115908542B (zh) * | 2022-10-31 | 2023-09-19 | 中交第四航务工程勘察设计院有限公司 | 基于bim的多面体间距离快速计算方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103247041B (zh) | 一种基于局部采样的多几何特征点云数据的分割方法 | |
CN107862738B (zh) | 一种基于移动激光测量点云进行室内结构化三维重建方法 | |
CN103529843B (zh) | Lambda*路径规划算法 | |
CN111707269B (zh) | 一种三维环境下的无人机路径规划方法 | |
CN104200212B (zh) | 一种基于机载LiDAR数据的建筑物外边界线提取方法 | |
CN104318622B (zh) | 一种室内场景非均匀三维点云数据的三角网格建模方法 | |
CN101510225B (zh) | 产品stl模型布尔运算方法 | |
CN106570468A (zh) | 一种重建LiDAR原始点云建筑物轮廓线的方法 | |
CN105427317A (zh) | 一种适用于多视角自动化配准多站地面激光点云数据的方法 | |
CN107392875A (zh) | 一种基于k近邻域划分的点云数据去噪方法 | |
CN104200507A (zh) | 一种三维点云点法向量估计方法 | |
CN104392426A (zh) | 一种自适应的无标志点三维点云自动拼接方法 | |
CN104363654A (zh) | 基于Tunneling method的无线传感器网络三维节点定位方法 | |
CN108961294A (zh) | 一种三维点云的分割方法及装置 | |
CN103744886B (zh) | 一种直接提取的k个最近邻点搜索方法 | |
CN112907747A (zh) | 一种点云数据处理的方法、装置、电子设备及存储介质 | |
CN106123812A (zh) | 基于遥感影像获取起伏地表甘蔗种植面积的方法及装置 | |
CN104968046A (zh) | 一种基于共面度的跳距修正的wsn三维空间目标定位方法 | |
CN105069845A (zh) | 基于曲面变化的点云精简方法 | |
CN101937453A (zh) | 一种基于加权拓扑约束比较的三维模型检索方法 | |
CN103778191A (zh) | 一种顾及空间邻近关系的矢量等高线数据划分方法 | |
CN105468375A (zh) | 一种面向面结构光点云数据的对应点搜索结构的构建方法 | |
CN115952691A (zh) | 多站无源时差交叉联合定位系统的优化布站方法及装置 | |
CN104361625A (zh) | 一种基于射线原理的带边界保留的云数据精简算法 | |
CN115661374A (zh) | 一种基于空间划分和模型体素化的快速检索方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20150325 |
|
WD01 | Invention patent application deemed withdrawn after publication |