一種虛擬現實仿真中物體表面間最小距離的快速計算方法
【專利摘要】本發明屬于一種虛擬仿真【技術領域】,特別涉及一種虛擬模型空間距離計算方法。一種虛擬現實仿真中物體表面間最小距離的快速計算方法,其特征包括以下步驟:A、將虛擬物體模型離散成頂點和多邊形面片的形式,標記各頂點的序號及多邊形面片對應頂點索引信息;B、構建樹型空間結構遍歷后找出兩模型間的最近頂點對,并計算該最近點對在歐式空間直線距離;還包括C、在兩個模型上分別找出各自最近頂點所在的全部多邊形面片;D、分別計算兩個模型上最近頂點到對方模型上最近頂點所在全部多邊形面片的距離;E、重復步驟C和D,找出最小值即為兩物體間的最小間隙。本發明加速了最近頂點的搜索過程,提高了估算精度,加強了對不同類型物體模型的適應性。
【專利說明】一種虛擬現實仿真中物體表面間最小距離的快速計算方法
【技術領域】
[0001] 本發明屬于一種虛擬仿真【技術領域】,特別涉及一種虛擬模型空間距離計算方法。
【背景技術】
[0002] 隨著虛擬仿真技術的發展,虛擬模型所包含的信息越來越豐富,同時數據量也不 斷增大。現有技術中,計算兩個虛擬物體模型間的最小距離主要有以下兩種方案:
[0003] 第一類是窮舉的方法,即采用暴力搜索(Brute-force)算法遍歷構成兩個模型的 所有頂點,計算兩兩頂點之間的最近距離并進行排序比較,找出其中最短的距離,并記下最 短距離對應的頂點對,即為兩個虛擬模型的最近距離和最近點。這種方法思路簡單,容易實 現,假設搜索空間包括η個點,則該算法將計算所有可能的η (n-1) /2對點之間的距離,并在 其中挑選出最小距離的一對。該算法由于需要遍歷所有可能的點對,是一種線性搜索算法, 搜索效率很低,其算法復雜度為Q(n 2)。在實際應用中僅適用于搜索空間較小的情況。
[0004] 第二類是GJK(Gilbert-Johnson-Keerthi)算法,一種碰撞檢測算法。用GJK算法 來計算的最近距離即兩個虛擬模型的明可夫斯基差形狀到原點的最近距離。這種方法通過 構建明可夫斯基差形狀,用迭代的算法避開了對點的遍歷,可以獲得很高的速度。但GJK算 法只適用于凸多邊形或凸多面體,所以在實現的應用中可能多數情況都不能直接運行該算 法來進行距離的計算,涉及到如何將復雜物體分割成多個凸多面體的問題,增加了其復雜 度的不確定性。
[0005] 本發明是針對以上方法的不足,提供一種能快速、精確計算兩個虛擬模型之間最 小距離以及最鄰近點的方法。
【發明內容】
[0006] 本發明的目的是:提供一種能快速、精確計算兩個虛擬模型之間最小距離以及最 鄰近點的方法。
[0007] 本發明的技術方案是:
[0008] -種虛擬現實仿真中物體表面間最小距離的快速計算方法,其特征是包括以下步 驟:
[0009] 步驟1.將虛擬物體模型A和B離散成頂點和多邊形面片的形式,并標記模型中各 頂點的序號以及多邊形面片對應的頂點索引信息;
[0010] 步驟2.對模型B的所有頂點,構建樹型空間結構,以實現三維空間的二分查找樹 的數據存儲結構;
[0011] 步驟3.對于模型A上的每一個點%,在歐式空間中遍歷步驟2所述的模型B的樹 型空間結構中各節點,并在其中找到距S i最近的點Pi,并計算%與Pi之前的直線距離Cli ;
[0012] 步驟4.遍歷步驟3中得到的所有距離di,找出最小值dmin,并記錄最小值d min對應 的頂點%和Pi,則最小值dmin為兩個模型的最近距離的初步估計值,對應的頂點%和P i為 初步估計的兩個模型的最近點。
[0013] 在模型采樣率足夠高的前提下,完成步驟1至步驟4后找出的最近頂點和最短距 離便能夠近似地表示兩個模型的最近點和最小距離。但一方面當模型的采樣率比較低的時 候,如果直接步驟1至步驟4后找出的最近頂點計算出的最近距離來表示兩個模型之間的 最近距離,就會有很大的偏差。另一方面,當虛擬模型表面曲率變化不大的時候,若采樣率 過高,會使數據量大幅度增加,從而增加運算量,無端增加系統開銷。為了避免這樣的情況 出現,本發明設計了步驟5-步驟9,分別計算兩個模型上最近頂點到對方模型上最近頂點 所在全部多邊形面片的距離,尋找其中的最近點,作為兩個虛擬模型之間的最鄰近點與最 小距離,使結果更加精確,其實現方法為:
[0014] 步驟5.在模型B上確定頂點Pi所在的全部η個多邊形,分別在每個多邊形面上 找到步驟3所述的距離模型A上頂點S i最近的點qp qf qn,并分別計算出Si到qf qn 的直線距離Iplfln;
[0015] 步驟6.在模型A上確定頂點ai所在的全部m個多邊形,在每個多邊形上找到距 離模型B上頂點P i最近的點!T1, r2. . . rm,并分別計算出Pi到點!T1, r2. . . rm的直線距離kp kg,· · · km ;
[0016] 步驟7.遍歷所有距離I1, V·· In,找到最短距離Imin,則Imin所對應的點qj即為當 iu最鄰近點;
[0017] 步驟8.遍歷所有距離kp k2, . . . km找到最短距離kmin, kmin <= kj, j = I, . . . m, 則kmin所對應的點r」即為當前最鄰近點;
[0018] 步驟9.比較kmin與Imin的大小,兩者的最小值即為兩個模型的最近距離的精確估 計值,對應的頂點%與%、或P i與&為精確估計的兩個模型的最近點。
[0019] 進一步的,步驟1所述的將虛擬模型離散的過程中,根據不同的應用場景以及實 時性和精度要求進行參數的設定,達到適用其應用場景的模型設定。
[0020] 進一步的,根據權利要求1所述的一種虛擬仿真中物體間最小距離的快速估算方 法,其特征是:步驟2所述構建樹型空間結構的方法采用最近鄰搜索算法構建kd樹的空間 結構。
[0021] 進一步的,根據權利要求1所述的一種虛擬仿真中物體間最小距離的快速估算方 法,其特征是:步驟3所述遍歷步驟2所述的模型B的樹型空間結構中各節點,并在其中找 到距%最近的點P i時用采用并行計算的方法加以實現,包括基于GPU的并行搜索加速、基 于OpenMP的并行計算、多線程計算、分布式計算的并行計算方法。
[0022] 本發明與直接暴力搜索遍歷方法相比,樹空間結構(如kd樹)的構建極大地加速 最近頂點對的搜索過程。找到樹結構中距離查詢點最近的三維空間點,在模型采樣率足夠 高的前提下,這樣找出的最近頂點和最短距離便能夠近似地表示兩個模型的最近點和最小 距離。
[0023] 本發明在點到點最短距離計算的基礎上,又實現了點到多邊形邊和面以及多邊形 面到多邊形面之間最短距離的計算,擺脫了虛擬物體模型建立和多邊形離散化時模型分辨 率或采樣率對算法精度、穩定性和魯棒性的影響。尤其是在一些曲率變化不大的模型表面 可以使采樣率盡可能降低,減少多邊形數量,以節省存儲空間,提高計算效率,同時更好地 實現實時性。
[0024] 本發明與GJK算法相比,該方法對虛擬模型的具體形狀沒有任何要求,可以適用 于任意復雜形狀(非凸幾何體)的模型,具有普適性。
[0025] 本發明在虛擬現實、3D游戲、場景模擬、工程仿真等領域都有著重要的實用價值和 良好的應用前景。
【專利附圖】
【附圖說明】
[0026] 圖1為本發明流程圖;
[0027] 圖2為本發明所述的kd樹對應的三維空間切割示意圖;
[0028] 圖3為點到三角形切片的最短距離計算過程示意圖。
【具體實施方式】
[0029] 實施例1 :如圖1所示一種虛擬現實仿真中物體表面間最小距離的快速計算方法, 其特征是包括以下步驟:
[0030] 步驟1.將虛擬物體模型A和B離散成頂點和多邊形面片的形式,并標記模型中各 頂點的序號以及多邊形面片對應的頂點索引信息;設模型A和B離散后的頂點數為為乂和 Nb;虛擬模型離散的過程中,根據不同的應用場景以及實時性和精度要求進行參數的設定, 達到適用其應用場景的模型設定。
[0031] 步驟2.對模型B的所有頂點,采用構建樹型空間結構,以實現三維空間的二分查 找樹的數據存儲結構;其中:
[0032] 構建相應的樹型空間結構選用最近鄰搜索算法構建kd樹的空間結構。kd樹是用 來快速搜索近鄰的一種數據結構,對于三維空間的點,其基于點的空間位置信息,通過二分 法迭代劃分三維空間,實現最優存儲與快速搜索。三維空間的劃分示意圖如圖2所示。由 于模型B的頂點數為N b,則在kd樹上進行k近鄰查找的時間復雜度為0(log2NB)。對于該 方法中的三維空間kd樹的構建過程如下:
[0033] al.在三維數據集合(模型B頂點集合)中選擇具有最大方差的維度m,在該維度 上以其中值為中心對該數據集合進行劃分,得到兩個子集合,并創建一個樹結點node用于 存儲;
[0034] a2.每個子集合重復步驟al直到所有子集合都不能再劃分為止。
[0035] 步驟3.對于模型A上的每一個點叫,在歐式空間中遍歷模型B步驟2所述的樹型 空間結構中節點,并在其中找到距S i最近的點Pi,并計算%與Pi之前的直線距離Cli ;最終 得到點對集合為k,PiIai e A,Pi e B},i = Ρ··ΝΑ,對應的距離值為{dj,i = 1…Na ;其 中:
[0036] 對于kd樹,可以基于歐式距離進行k近鄰的查找,但在該方法中只需要得到模型 B中距離最近的點,所以取k = 1即可。
[0037] 對于查詢點%和模型B構建好的kd樹,最近鄰查找的過程如下:
[0038] bl.從根結點開始,將查詢點ai與各個結點進行比較,并根據比較結果向下訪問 kd樹,直到達到葉子結點;
[0039] b2.到達葉子結點后進行回溯操作,判斷未被訪問過的分支里是否還有離查詢點 Si更近的點,從而找到離查詢點ai更近的最近鄰點。
[0040] 所述遍歷模型B的樹型空間結構中各節點,并在其中找到距%最近的點Pi時用采 用并行計算的方法加以實現,包括基于GPU的并行搜索加速、基于OpenMP的并行計算、多線 程計算、分布式計算的并行計算方法。
[0041] 步驟4.遍歷步驟3中得到的所有距離di,找出最小值dmin,并記錄最小值d min對應 的頂點%和Pi,則最小值dmin為初步估計的兩個模型的最近距離,對應的頂點%和P i為初 步估計的兩個模型的最近點。
[0042] 實施例2 :-種虛擬現實仿真中物體表面間最小距離的快速計算方法,其特征是 在實施例1的基礎上還包括以下步驟:
[0043] 步驟5.在模型B上確定頂點Pi所在的全部η個多邊形,分別在每個多邊形面上 找到步驟3所述的距離模型A上頂點S i最近的點qp qf qn,并分別計算出Si到qf qn 的直線距離Iplfln;
[0044] 該步驟也就是求模型A上頂點%到的模型B上確定頂點Pi所在的全部η個多邊 形的最近點及距離,即求點到面的最短距離。可以采用點到點在面上的投影點之間的距離 來計算。多邊形以三角形為例。點Q到三角形ABC之間的最短距離的流程如下 :
[0045] cl.令V。= A-Ba1 = A-C,則(Vc^V1)為該三角形所確定平面的一個基,此時平面 上任意一點可以表示為Pt = A+tQ · Vc^t1 · Viq
[0046] c2.設點Q在三角形ABC所在平面上的投影為P,則有Q-P = Q-(A+tQ Ift1 · V1), J
【權利要求】
1. 一種虛擬現實仿真中物體表面間最小距離的快速計算方法,其特征是包括w下步 驟: 步驟1.將虛擬物體模型A和B離散成頂點和多邊形面片的形式,并標記模型中各頂點 的序號W及多邊形面片對應的頂點索引信息; 步驟2.對模型B的所有頂點,構建樹型空間結構,W實現H維空間的二分查找樹的數 據存儲結構; 步驟3.對于模型A上的每一個點a;,在歐式空間中遍歷步驟2所述的模型B的樹型空 間結構中各節點,并在其中找到距^最近的點Pi,并計算a;與Pi之前的直線距離中; 步驟4.遍歷步驟3中得到的所有距離中,找出最小值cL。,并記錄最小值cU對應的頂 點a;和Pi,則最小值屯1。為兩個模型的最近距離的初步估計值,對應的頂點a;和Pi為初步 估計的兩個模型的最近點。
2. 根據權利要求1所述的一種虛擬現實仿真中物體表面間最小距離的快速計算方法, 其特征是還包括W下步驟: 步驟5.在模型B上確定頂點Pi所在的全部n個多邊形,分別在每個多邊形面上找到 步驟3所述的距離模型A上頂點最近的點山屯…q。,并分別計算出到山屯…q。的直 線距離li,12…1。; 步驟6.在模型A上確定頂點a;所在的全部m個多邊形,在每個多邊形上找到距離模型 B上頂點Pi最近的點ri,r2. . . r。,并分別計算出Pi到點ri,r2. . . r。的直線距離ki,k2,. . . km ; 步驟7.遍歷所有距離li,I2…1。,找到最短距離Imi。,則Imi。所對應的點dj.即為當前最 鄰近點; 步驟8.遍歷所有距離ki,k2, . . . km找到最短距離kmin,kmin < = kj,J = 1,. . . m,則kmin 所對應的點rj.即為當前最鄰近點; 步驟9.比較kmi。與Imi。的大小,兩者的最小值即為兩個模型的最近距離的精確估計值, 對應的頂點^與Qj.、或Pi與rj.為精確估計的兩個模型的最近點。
3. 根據權利要求1所述的一種虛擬現實仿真中物體表面間最小距離的快速計算方法, 其特征是:步驟1所述的將虛擬模型離散的過程中,根據不同的應用場景W及實時性和精 度要求進行參數的設定,達到適用其應用場景的模型設定。
4. 根據權利要求1所述的一種虛擬現實仿真中物體表面間最小距離的快速計算方法, 其特征是:步驟2所述構建樹型空間結構的方法為采用最近鄰搜索算法構建kd樹的空間結 構。
5. 根據權利要求1所述的一種虛擬現實仿真中物體表面間最小距離的快速計算方法, 其特征是:步驟3所述遍歷模型B的樹型空間結構中各節點,并在其中找到距^最近的點 Pi時用采用并行計算的方法加W實現,包括基于GPU的并行搜索加速、基于化enMP的并行 計算、多線程計算、分布式計算的并行計算方法。
【文檔編號】G06F19/00GK104462764SQ201410615853
【公開日】2015年3月25日 申請日期:2014年11月6日 優先權日:2014年11月6日
【發明者】費允鋒, 田慶龍, 宋銀灝, 孫廣毅, 李吉, 孫沁璇, 張晨峰, 譚可可, 劉瑞萍, 李國文, 耿彤, 常正陽, 王聰, 李偉, 占金春 申請人:中國人民解放軍第二炮兵工程設計研究所, 南開大學