本發(fā)明涉及虛擬現(xiàn)實(shí)技術(shù)輔助產(chǎn)品設(shè)計(jì)分析技術(shù)領(lǐng)域,特別涉及一種動(dòng)態(tài)碰撞檢測(cè)的方法及裝置。
背景技術(shù):
虛擬維修是指運(yùn)用虛擬現(xiàn)實(shí)技術(shù)和計(jì)算機(jī)仿真技術(shù),建立一個(gè)包含裝備虛擬樣機(jī)、維修人員、維修工具、維修設(shè)備等信息的虛擬環(huán)境,并在該環(huán)境下模擬產(chǎn)品的維修過(guò)程,對(duì)設(shè)備的故障進(jìn)行分析和維修預(yù)處理,模擬拆卸過(guò)程,預(yù)估維修作業(yè)的時(shí)間,制定設(shè)備部件拆卸的順序和預(yù)估維修費(fèi)用等,對(duì)產(chǎn)品維修性方面,如維修過(guò)程中的可視性、零部件可達(dá)性以及零部件的拆裝操作性進(jìn)行分析研究,從而及早發(fā)現(xiàn)產(chǎn)品維修性設(shè)計(jì)中的缺陷并提出改進(jìn)。所以,虛擬維修技術(shù)將有關(guān)產(chǎn)品維修性方面的潛在問(wèn)題在設(shè)計(jì)階段的早期就予以發(fā)現(xiàn)并輔助解決,可顯著縮短產(chǎn)品維修性設(shè)計(jì)時(shí)間,降低因維修事前決策不當(dāng)?shù)仍斐傻纳a(chǎn)中斷和費(fèi)用損失。
碰撞檢測(cè),也稱為干涉檢測(cè)或者接觸檢測(cè),是基于現(xiàn)實(shí)生活中一個(gè)普遍存在的事實(shí):兩個(gè)不可穿透的對(duì)象不能共享相同的空間區(qū)域,而出現(xiàn)的技術(shù)。碰撞檢測(cè)作為虛擬現(xiàn)實(shí)系統(tǒng)中的一個(gè)關(guān)鍵組成部分,主要的任務(wù)是判斷物體模型之間、模型與場(chǎng)景之間是否發(fā)生了碰撞以及給出碰撞位置、穿刺深度等信息。在虛擬維修仿真中,碰撞檢測(cè)處理物體之間的位置與形狀數(shù)據(jù),并反饋物體之間的干涉信息,承擔(dān)著實(shí)現(xiàn)人機(jī)交互、保證仿真擬真度的功能。甚至,碰撞深度和方向信息還可以用來(lái)分析碰撞時(shí)力的大小和方向信息,為仿真中力反饋技術(shù)提供一定的參考。隨著產(chǎn)品和維修過(guò)程的復(fù)雜化程度不斷提高,用戶對(duì)虛擬維修仿真的真實(shí)性,包括仿真的實(shí)時(shí)性和精確度,提出了更高的要求。而碰撞檢測(cè)技術(shù)作為構(gòu)建虛擬維修仿真過(guò)程的關(guān)鍵技術(shù)之一,其精確性和快速性極大地影響了虛擬維修仿真的實(shí)時(shí)性和準(zhǔn)確程度。
目前,碰撞檢測(cè)的算法研究取得了一批有意義的成果,并在游戲等領(lǐng)域獲得廣泛的應(yīng)用。但針對(duì)虛擬維修系統(tǒng)的碰撞檢測(cè)算法研究不多,目前在虛擬維修仿真系統(tǒng)中通常借鑒或修改其它的算法加以應(yīng)用,有的甚至不具有碰撞檢測(cè)的功能。然而由于虛擬維修仿真的自身特點(diǎn),目前的常用碰撞檢測(cè)算法并不十分適用于虛擬維修仿真過(guò)程。要對(duì)復(fù)雜維修環(huán)境中很多物體進(jìn)行快速準(zhǔn)確的碰撞檢測(cè)還很困難,特別是對(duì)不規(guī)則物體的維修拆卸仿真,因而達(dá)不到仿真的目標(biāo)要求,嚴(yán)重制約了虛擬維修技術(shù)的發(fā)展。基于此,針對(duì)虛擬維修獨(dú)有的特點(diǎn)進(jìn)行適用于虛擬維修仿真的碰撞檢測(cè)算法研究顯得尤為必要。
技術(shù)實(shí)現(xiàn)要素:
根據(jù)本發(fā)明實(shí)施例提供的方案解決的技術(shù)問(wèn)題是虛擬維修仿真中缺乏相應(yīng)碰撞檢測(cè)方法。
根據(jù)本發(fā)明實(shí)施例提供的一種動(dòng)態(tài)碰撞檢測(cè)的方法,包括:
通過(guò)分別對(duì)維修人員各肢節(jié)及多個(gè)維修對(duì)象進(jìn)行虛擬膠囊化處理,得到多個(gè)虛擬維修人員肢節(jié)膠囊體和多個(gè)虛擬維修對(duì)象膠囊體;
通過(guò)對(duì)所述多個(gè)虛擬維修人員肢節(jié)膠囊體和多個(gè)虛擬維修對(duì)象膠囊體進(jìn)行虛擬碰撞檢測(cè),得到虛擬維修人員肢節(jié)膠囊體與虛擬維修對(duì)象膠囊體間的虛擬碰撞狀態(tài);
根據(jù)所述虛擬碰撞狀態(tài),確定所述虛擬維修人員肢節(jié)膠囊體與所述虛擬維修對(duì)象膠囊體的碰撞空間;
利用所述碰撞空間對(duì)每個(gè)虛擬維修對(duì)象膠囊體進(jìn)行切片處理,將所述碰撞空間內(nèi)的每個(gè)虛擬維修對(duì)象膠囊體的切片部分作為維修對(duì)象部分;
通過(guò)對(duì)所有的維修對(duì)象部分虛擬膠囊化處理,形成維修對(duì)象虛擬膠囊群;
將所述虛擬維修人員肢節(jié)膠囊體和維修對(duì)象虛擬膠囊群進(jìn)行虛擬碰撞檢測(cè),得到虛擬維修人員肢節(jié)膠囊體與維修對(duì)象虛擬膠囊群的動(dòng)態(tài)碰撞結(jié)果。
優(yōu)選地,所述通過(guò)對(duì)所述多個(gè)虛擬維修人員肢節(jié)膠囊體和多個(gè)虛擬維修對(duì)象膠囊體進(jìn)行虛擬碰撞檢測(cè)之前,還包括:
通過(guò)對(duì)維修人員各肢節(jié)可達(dá)空間進(jìn)行膠囊化處理,得到多個(gè)虛擬維修人員肢節(jié)可達(dá)空間膠囊體;
通過(guò)遍歷所有虛擬維修對(duì)象膠囊體,判斷是否存在全部處于或部分處于所述虛擬維修人員肢節(jié)可達(dá)空間膠囊體內(nèi)的一個(gè)或多個(gè)虛擬維修對(duì)象膠囊體,并將其作為待檢測(cè)虛擬維修對(duì)象膠囊體;
若判斷存在全部處于或部分處于所述虛擬維修人員可達(dá)空間膠囊體內(nèi)的待檢測(cè)虛擬維修對(duì)象膠囊體,則對(duì)所述虛擬維修人員肢節(jié)膠囊體和待檢測(cè)虛擬維修對(duì)象膠囊體進(jìn)行虛擬碰撞檢測(cè)。
優(yōu)選地,所述通過(guò)對(duì)所述虛擬維修人員肢節(jié)膠囊體和多個(gè)虛擬維修對(duì)象膠囊體進(jìn)行虛擬碰撞檢測(cè),得到虛擬維修人員肢節(jié)膠囊體與虛擬維修對(duì)象膠囊體間的虛擬碰撞狀態(tài)包括:
通過(guò)遍歷所有虛擬維修人員肢節(jié)膠囊體,判斷是否存在與所述待檢測(cè)虛擬維修對(duì)象膠囊體發(fā)生碰撞的一個(gè)或多個(gè)虛擬維修人員肢節(jié)膠囊體,并將其作為待檢測(cè)虛擬維修人員肢節(jié)膠囊體;
若判斷存在與所述待檢測(cè)虛擬維修對(duì)象膠囊體發(fā)生碰撞的待檢測(cè)虛擬維修人員肢節(jié)膠囊體,則獲取待檢測(cè)虛擬維修人員肢節(jié)膠囊體與待檢測(cè)虛擬維修對(duì)象膠囊體間的虛擬碰撞狀態(tài)。
優(yōu)選地,所述虛擬碰撞狀態(tài)包括所述待檢測(cè)虛擬維修人員肢節(jié)膠囊體的瞬時(shí)速度和所述待檢測(cè)虛擬維修對(duì)象膠囊體上的虛擬碰撞點(diǎn)。
優(yōu)選地,所述根據(jù)所述虛擬碰撞狀態(tài),確定所述虛擬維修人員肢節(jié)膠囊體與所述多個(gè)虛擬維修對(duì)象膠囊體的碰撞空間包括:
根據(jù)所述虛擬維修人員肢節(jié)膠囊體的瞬時(shí)速度和所述虛擬維修對(duì)象膠囊體上的虛擬碰撞點(diǎn),計(jì)算下一次虛擬碰撞時(shí)所述虛擬碰撞點(diǎn)的位移,并根據(jù)所述位移,得到虛擬碰撞點(diǎn)的虛擬位移碰撞點(diǎn);
根據(jù)所述虛擬維修人員肢節(jié)膠囊體的瞬時(shí)速度,構(gòu)建過(guò)所述虛擬碰撞點(diǎn)且垂直于所述瞬時(shí)速度方向的近法平面和過(guò)所述虛擬位移碰撞點(diǎn)且垂直于所述瞬時(shí)速度方向的遠(yuǎn)法平面;
利用所述近法平面和遠(yuǎn)發(fā)平面對(duì)所述虛擬維修人員可達(dá)空間膠囊體進(jìn)行切分,得到所述虛擬維修人員肢節(jié)膠囊體與所述多個(gè)虛擬維修對(duì)象膠囊體的碰撞空間。
優(yōu)選地,所述通過(guò)對(duì)所有的維修對(duì)象部分虛擬膠囊化處理,形成維修對(duì)象虛擬膠囊群包括:
通過(guò)對(duì)所有的維修對(duì)象部分虛擬膠囊化處理,得到虛擬維修對(duì)象部分膠囊體;
根據(jù)所得到的虛擬維修對(duì)象部分膠囊體,構(gòu)建維修對(duì)象虛擬膠囊群。
根據(jù)本發(fā)明實(shí)施例提供的一種動(dòng)態(tài)碰撞檢測(cè)的裝置,包括:
虛擬膠囊化模塊,用于通過(guò)分別對(duì)維修人員各肢節(jié)及多個(gè)維修對(duì)象進(jìn)行虛擬膠囊化處理,得到多個(gè)虛擬維修人員肢節(jié)膠囊體和多個(gè)虛擬維修對(duì)象膠囊體,以及通過(guò)對(duì)所有的維修對(duì)象部分虛擬膠囊化處理,形成維修對(duì)象虛擬膠囊群;
虛擬碰撞檢測(cè)模塊,用于通過(guò)對(duì)所述多個(gè)虛擬維修人員肢節(jié)膠囊體和多個(gè)虛擬維修對(duì)象膠囊體進(jìn)行虛擬碰撞檢測(cè),得到虛擬維修人員肢節(jié)膠囊體與虛擬維修對(duì)象膠囊體間的虛擬碰撞狀態(tài),以及將所述虛擬維修人員肢節(jié)膠囊體和維修對(duì)象虛擬膠囊群進(jìn)行虛擬碰撞檢測(cè),得到虛擬維修人員肢節(jié)膠囊體與維修對(duì)象虛擬膠囊群的動(dòng)態(tài)碰撞結(jié)果;
確定碰撞空間模塊,用于根據(jù)所述虛擬碰撞狀態(tài),確定所述虛擬維修人員肢節(jié)膠囊體與所述虛擬維修對(duì)象膠囊體的碰撞空間;
切片處理模塊,用于利用所述碰撞空間對(duì)每個(gè)虛擬維修對(duì)象膠囊體進(jìn)行切片處理,將所述碰撞空間內(nèi)的每個(gè)虛擬維修對(duì)象膠囊體的切片部分作為維修對(duì)象部分。
優(yōu)選地,所述虛擬膠囊化模塊還具體用于通過(guò)對(duì)維修人員各肢節(jié)可達(dá)空間進(jìn)行膠囊化處理,得到多個(gè)虛擬維修人員肢節(jié)可達(dá)空間膠囊體。
優(yōu)選地,所述虛擬碰撞檢測(cè)模塊還具體用于通過(guò)遍歷所有虛擬維修對(duì)象膠囊體,判斷是否存在全部處于或部分處于所述虛擬維修人員肢節(jié)可達(dá)空間膠囊體內(nèi)的一個(gè)或多個(gè)虛擬維修對(duì)象膠囊體,并將其作為待檢測(cè)虛擬維修對(duì)象膠囊體,以及當(dāng)判斷存在全部處于或部分處于所述虛擬維修人員可達(dá)空間膠囊體內(nèi)的待檢測(cè)虛擬維修對(duì)象膠囊體,則對(duì)所述虛擬維修人員肢節(jié)膠囊體和待檢測(cè)虛擬維修對(duì)象膠囊體進(jìn)行虛擬碰撞檢測(cè)。
優(yōu)選地,所述虛擬碰撞檢測(cè)模塊還具體用于通過(guò)遍歷所有虛擬維修人員肢節(jié)膠囊體,判斷是否存在與所述待檢測(cè)虛擬維修對(duì)象膠囊體發(fā)生碰撞的一個(gè)或多個(gè)虛擬維修人員肢節(jié)膠囊體,并將其作為待檢測(cè)虛擬維修人員肢節(jié)膠囊體,以及當(dāng)判斷存在與所述待檢測(cè)虛擬維修對(duì)象膠囊體發(fā)生碰撞的待檢測(cè)虛擬維修人員肢節(jié)膠囊體,則獲取待檢測(cè)虛擬維修人員肢節(jié)膠囊體與待檢測(cè)虛擬維修對(duì)象膠囊體間的虛擬碰撞狀態(tài);
其中,所述虛擬碰撞狀態(tài)包括所述待檢測(cè)虛擬維修人員肢節(jié)膠囊體的瞬時(shí)速度和所述待檢測(cè)虛擬維修對(duì)象膠囊體上的虛擬碰撞點(diǎn)。
根據(jù)本發(fā)明實(shí)施例提供的方案,具有如下的優(yōu)點(diǎn):
a)將人體簡(jiǎn)化為膠囊樹(shù)結(jié)構(gòu),一方面膠囊體對(duì)人體外形貼合性很好,另一方面,便于迅速遍歷樹(shù)上的膠囊體,把維修對(duì)象處理成膠囊體,相交測(cè)試計(jì)算簡(jiǎn)單,計(jì)算量少;
b)利用可達(dá)空間膠囊體,在每一次碰撞檢測(cè)的開(kāi)始就剔除了大部分物體,減少了計(jì)算量;
c)動(dòng)態(tài)地利用瞬時(shí)速度不斷更新切片空間和膠囊體群,極大減少了碰撞檢測(cè)的計(jì)算量;
d)利用檢測(cè)間隔時(shí)間和二級(jí)碰撞檢測(cè)迭代次數(shù)可以方便地控制碰撞檢測(cè)精度。
附圖說(shuō)明
圖1是本發(fā)明實(shí)施例提供的一種動(dòng)態(tài)碰撞檢測(cè)的方法流程圖;
圖2是本發(fā)明實(shí)施例提供的一種動(dòng)態(tài)碰撞檢測(cè)的裝置示意圖;
圖3是本發(fā)明實(shí)施例提供的基于膠囊體和瞬時(shí)速度的動(dòng)態(tài)碰撞檢測(cè)方法技術(shù)框架圖;
圖4是本發(fā)明實(shí)施例提供的人體膠囊化構(gòu)造示意圖;
圖5是本發(fā)明實(shí)施例提供的人體膠囊樹(shù)示意圖;
圖6是本發(fā)明實(shí)施例提供的搜索區(qū)域膠囊體示意圖;
圖7是本發(fā)明實(shí)施例提供的切片化處理和次級(jí)膠囊體構(gòu)造示意圖;
圖8是本發(fā)明實(shí)施例提供的碰撞檢測(cè)總體執(zhí)行框架圖;
圖9是本發(fā)明實(shí)施例提供的a類型碰撞檢測(cè)執(zhí)行過(guò)程流程圖;
圖10是本發(fā)明實(shí)施例提供的b類型碰撞檢測(cè)執(zhí)行過(guò)程流程圖。
具體實(shí)施方式
以下結(jié)合附圖對(duì)本發(fā)明的優(yōu)選實(shí)施例進(jìn)行詳細(xì)說(shuō)明,應(yīng)當(dāng)理解,以下所說(shuō)明的優(yōu)選實(shí)施例僅用于說(shuō)明和解釋本發(fā)明,并不用于限定本發(fā)明。
圖1是本發(fā)明實(shí)施例提供的一種動(dòng)態(tài)碰撞檢測(cè)的方法流程圖,如圖1所示,包括:
步驟s101:通過(guò)分別對(duì)維修人員各肢節(jié)及多個(gè)維修對(duì)象進(jìn)行虛擬膠囊化處理,得到多個(gè)虛擬維修人員肢節(jié)膠囊體和多個(gè)虛擬維修對(duì)象膠囊體;
步驟s102:通過(guò)對(duì)所述多個(gè)虛擬維修人員肢節(jié)膠囊體和多個(gè)虛擬維修對(duì)象膠囊體進(jìn)行虛擬碰撞檢測(cè),得到虛擬維修人員肢節(jié)膠囊體與虛擬維修對(duì)象膠囊體間的虛擬碰撞狀態(tài);
步驟s103:根據(jù)所述虛擬碰撞狀態(tài),確定所述虛擬維修人員肢節(jié)膠囊體與所述虛擬維修對(duì)象膠囊體的碰撞空間;
步驟s104:利用所述碰撞空間對(duì)每個(gè)虛擬維修對(duì)象膠囊體進(jìn)行切片處理,將所述碰撞空間內(nèi)的每個(gè)虛擬維修對(duì)象膠囊體的切片部分作為維修對(duì)象部分;
步驟s105:通過(guò)對(duì)所有的維修對(duì)象部分虛擬膠囊化處理,形成維修對(duì)象虛擬膠囊群;
步驟s106:將所述虛擬維修人員肢節(jié)膠囊體和維修對(duì)象虛擬膠囊群進(jìn)行虛擬碰撞檢測(cè),得到虛擬維修人員肢節(jié)膠囊體與維修對(duì)象虛擬膠囊群的動(dòng)態(tài)碰撞結(jié)果。
其中,所述通過(guò)對(duì)所述多個(gè)虛擬維修人員肢節(jié)膠囊體和多個(gè)虛擬維修對(duì)象膠囊體進(jìn)行虛擬碰撞檢測(cè)之前,還包括:通過(guò)對(duì)維修人員各肢節(jié)可達(dá)空間進(jìn)行膠囊化處理,得到多個(gè)虛擬維修人員肢節(jié)可達(dá)空間膠囊體;通過(guò)遍歷所有虛擬維修對(duì)象膠囊體,判斷是否存在全部處于或部分處于所述虛擬維修人員肢節(jié)可達(dá)空間膠囊體內(nèi)的一個(gè)或多個(gè)虛擬維修對(duì)象膠囊體,并將其作為待檢測(cè)虛擬維修對(duì)象膠囊體;若判斷存在全部處于或部分處于所述虛擬維修人員可達(dá)空間膠囊體內(nèi)的待檢測(cè)虛擬維修對(duì)象膠囊體,則對(duì)所述虛擬維修人員肢節(jié)膠囊體和待檢測(cè)虛擬維修對(duì)象膠囊體進(jìn)行虛擬碰撞檢測(cè)。
其中,所述通過(guò)對(duì)所述虛擬維修人員肢節(jié)膠囊體和多個(gè)虛擬維修對(duì)象膠囊體進(jìn)行虛擬碰撞檢測(cè),得到虛擬維修人員肢節(jié)膠囊體與虛擬維修對(duì)象膠囊體間的虛擬碰撞狀態(tài)包括:通過(guò)遍歷所有虛擬維修人員肢節(jié)膠囊體,判斷是否存在與所述待檢測(cè)虛擬維修對(duì)象膠囊體發(fā)生碰撞的一個(gè)或多個(gè)虛擬維修人員肢節(jié)膠囊體,并將其作為待檢測(cè)虛擬維修人員肢節(jié)膠囊體;若判斷存在與所述待檢測(cè)虛擬維修對(duì)象膠囊體發(fā)生碰撞的待檢測(cè)虛擬維修人員肢節(jié)膠囊體,則獲取待檢測(cè)虛擬維修人員肢節(jié)膠囊體與待檢測(cè)虛擬維修對(duì)象膠囊體間的虛擬碰撞狀態(tài)。
其中,所述虛擬碰撞狀態(tài)包括所述待檢測(cè)虛擬維修人員肢節(jié)膠囊體的瞬時(shí)速度和所述待檢測(cè)虛擬維修對(duì)象膠囊體上的虛擬碰撞點(diǎn)。
其中,所述根據(jù)所述虛擬碰撞狀態(tài),確定所述虛擬維修人員肢節(jié)膠囊體與所述多個(gè)虛擬維修對(duì)象膠囊體的碰撞空間包括:根據(jù)所述虛擬維修人員肢節(jié)膠囊體的瞬時(shí)速度和所述虛擬維修對(duì)象膠囊體上的虛擬碰撞點(diǎn),計(jì)算下一次虛擬碰撞時(shí)所述虛擬碰撞點(diǎn)的位移,并根據(jù)所述位移,得到虛擬碰撞點(diǎn)的虛擬位移碰撞點(diǎn);根據(jù)所述虛擬維修人員肢節(jié)膠囊體的瞬時(shí)速度,構(gòu)建過(guò)所述虛擬碰撞點(diǎn)且垂直于所述瞬時(shí)速度方向的近法平面和過(guò)所述虛擬位移碰撞點(diǎn)且垂直于所述瞬時(shí)速度方向的遠(yuǎn)法平面;利用所述近法平面和遠(yuǎn)發(fā)平面對(duì)所述虛擬維修人員可達(dá)空間膠囊體進(jìn)行切分,得到所述虛擬維修人員肢節(jié)膠囊體與所述多個(gè)虛擬維修對(duì)象膠囊體的碰撞空間。
其中,所述通過(guò)對(duì)所有的維修對(duì)象部分虛擬膠囊化處理,形成維修對(duì)象虛擬膠囊群包括:通過(guò)對(duì)所有的維修對(duì)象部分虛擬膠囊化處理,得到虛擬維修對(duì)象部分膠囊體;根據(jù)所得到的虛擬維修對(duì)象部分膠囊體,構(gòu)建維修對(duì)象虛擬膠囊群。
圖2是本發(fā)明實(shí)施例提供的一種動(dòng)態(tài)碰撞檢測(cè)的裝置示意圖,如圖2所示,包括:虛擬膠囊化模塊201,用于通過(guò)分別對(duì)維修人員各肢節(jié)及多個(gè)維修對(duì)象進(jìn)行虛擬膠囊化處理,得到多個(gè)虛擬維修人員肢節(jié)膠囊體和多個(gè)虛擬維修對(duì)象膠囊體,以及通過(guò)對(duì)所有的維修對(duì)象部分虛擬膠囊化處理,形成維修對(duì)象虛擬膠囊群;虛擬碰撞檢測(cè)模塊202,用于通過(guò)對(duì)所述多個(gè)虛擬維修人員肢節(jié)膠囊體和多個(gè)虛擬維修對(duì)象膠囊體進(jìn)行虛擬碰撞檢測(cè),得到虛擬維修人員肢節(jié)膠囊體與虛擬維修對(duì)象膠囊體間的虛擬碰撞狀態(tài),以及將所述虛擬維修人員肢節(jié)膠囊體和維修對(duì)象虛擬膠囊群進(jìn)行虛擬碰撞檢測(cè),得到虛擬維修人員肢節(jié)膠囊體與維修對(duì)象虛擬膠囊群的動(dòng)態(tài)碰撞結(jié)果;確定碰撞空間模塊203,用于根據(jù)所述虛擬碰撞狀態(tài),確定所述虛擬維修人員肢節(jié)膠囊體與所述虛擬維修對(duì)象膠囊體的碰撞空間;切片處理模塊204,用于利用所述碰撞空間對(duì)每個(gè)虛擬維修對(duì)象膠囊體進(jìn)行切片處理,將所述碰撞空間內(nèi)的每個(gè)虛擬維修對(duì)象膠囊體的切片部分作為維修對(duì)象部分。
其中,所述虛擬膠囊化模塊201還具體用于通過(guò)對(duì)維修人員各肢節(jié)可達(dá)空間進(jìn)行膠囊化處理,得到多個(gè)虛擬維修人員肢節(jié)可達(dá)空間膠囊體。
其中,所述虛擬碰撞檢測(cè)模塊202還具體用于通過(guò)遍歷所有虛擬維修對(duì)象膠囊體,判斷是否存在全部處于或部分處于所述虛擬維修人員肢節(jié)可達(dá)空間膠囊體內(nèi)的一個(gè)或多個(gè)虛擬維修對(duì)象膠囊體,并將其作為待檢測(cè)虛擬維修對(duì)象膠囊體,以及當(dāng)判斷存在全部處于或部分處于所述虛擬維修人員可達(dá)空間膠囊體內(nèi)的待檢測(cè)虛擬維修對(duì)象膠囊體,則對(duì)所述虛擬維修人員肢節(jié)膠囊體和待檢測(cè)虛擬維修對(duì)象膠囊體進(jìn)行虛擬碰撞檢測(cè)。
其中,所述虛擬碰撞檢測(cè)模塊202還具體用于通過(guò)遍歷所有虛擬維修人員肢節(jié)膠囊體,判斷是否存在與所述待檢測(cè)虛擬維修對(duì)象膠囊體發(fā)生碰撞的一個(gè)或多個(gè)虛擬維修人員肢節(jié)膠囊體,并將其作為待檢測(cè)虛擬維修人員肢節(jié)膠囊體,以及當(dāng)判斷存在與所述待檢測(cè)虛擬維修對(duì)象膠囊體發(fā)生碰撞的待檢測(cè)虛擬維修人員肢節(jié)膠囊體,則獲取待檢測(cè)虛擬維修人員肢節(jié)膠囊體與待檢測(cè)虛擬維修對(duì)象膠囊體間的虛擬碰撞狀態(tài);其中,虛擬碰撞狀態(tài)包括所述待檢測(cè)虛擬維修人員肢節(jié)膠囊體的瞬時(shí)速度和所述待檢測(cè)虛擬維修對(duì)象膠囊體上的虛擬碰撞點(diǎn)。
圖3是本發(fā)明實(shí)施例提供的基于膠囊體和瞬時(shí)速度的動(dòng)態(tài)碰撞檢測(cè)方法技術(shù)框架圖,如圖3所示,包括:
步驟一:碰撞檢測(cè)前虛擬維修空間中對(duì)象的膠囊化處理;
在仿真開(kāi)始之前,需要對(duì)虛擬維修空間中全部對(duì)象進(jìn)行膠囊化預(yù)處理,包括維修人員肢節(jié)的膠囊化、維修人員可達(dá)空間的膠囊化以及維修對(duì)象的膠囊化。其中,維修人員肢節(jié)膠囊化指根據(jù)維修人員主要肢體關(guān)節(jié)構(gòu)建維修人員膠囊體并形成膠囊樹(shù)結(jié)構(gòu),如圖4、圖5所示;維修人員可達(dá)空間膠囊化指構(gòu)建跟隨人體運(yùn)動(dòng)的搜索區(qū)域膠囊體空間如圖6所示;維修對(duì)象膠囊化指根據(jù)產(chǎn)品構(gòu)造和維修需求對(duì)維修對(duì)象進(jìn)行膠囊化處理。
步驟二:基于維修人員可達(dá)空間膠囊體的一級(jí)碰撞檢測(cè);
對(duì)構(gòu)建的維修對(duì)象膠囊體遍歷地與維修人員可達(dá)空間膠囊體進(jìn)行碰撞檢測(cè),判斷其是否處于或部分處于維修人員可達(dá)空間內(nèi)。若該可達(dá)空間內(nèi)存在維修對(duì)象膠囊體,則進(jìn)一步遍歷人體膠囊樹(shù),與可達(dá)空間內(nèi)維修對(duì)象膠囊體進(jìn)行碰撞檢測(cè),判斷是否有維修對(duì)象膠囊體與人體膠囊體碰撞,否則在下一次檢測(cè)時(shí)刻重復(fù)進(jìn)行步驟二。
若存在維修對(duì)象膠囊體與人體膠囊體碰撞,則立即執(zhí)行后續(xù)步驟,否則在下一次檢測(cè)時(shí)刻重復(fù)進(jìn)行步驟二。
步驟三:考慮相對(duì)瞬時(shí)速度的切片空間構(gòu)建;
對(duì)于存在碰撞的人體膠囊體,需要確定此時(shí)刻該人體膠囊體的運(yùn)動(dòng)速度v,并回推其與碰撞的維修對(duì)象膠囊體的碰撞點(diǎn)p1,利用兩次碰撞檢測(cè)的間隔時(shí)間t,在速度方向上取距離p1為t*v的點(diǎn)p2,則可以得到過(guò)p1、p2并垂直于速度方向的近法平面和遠(yuǎn)法平面,如圖7所示。
步驟四:碰撞時(shí)刻切片空間內(nèi)維修對(duì)象的膠囊體群生成;
近法平面和遠(yuǎn)法平面將可達(dá)空間膠囊體切分,形成一個(gè)很小的切片空間,對(duì)可達(dá)空間內(nèi)的維修對(duì)象本身執(zhí)行檢測(cè)操作,提取處于該切片空間內(nèi)的維修對(duì)象部分,并對(duì)這些微小的部分分別構(gòu)建新的小膠囊體,形成膠囊體群,如圖7所示。
步驟五:下一時(shí)刻切片空間內(nèi)的二級(jí)碰撞檢測(cè);
在下一檢測(cè)時(shí)刻,將人體膠囊體遍歷地和與其相對(duì)應(yīng)的膠囊體群進(jìn)行碰撞檢測(cè),如果發(fā)生碰撞,則返回碰撞結(jié)果。
步驟六:切片空間內(nèi)膠囊體群的釋放。
將構(gòu)建的所有膠囊體群的資源釋放,并重新執(zhí)行步驟二,如此循環(huán),直到仿真結(jié)束。
對(duì)于本基于膠囊體和瞬時(shí)速度的動(dòng)態(tài)碰撞檢測(cè)方法,在兩次檢測(cè)間隔時(shí)間t足夠小的情況下,可以認(rèn)為,二級(jí)碰撞檢測(cè)中人體膠囊體與維修對(duì)象膠囊體群的碰撞即是人體與維修對(duì)象本身的碰撞。如果需要更加精確的碰撞檢測(cè)效果,還可以通過(guò)迭代進(jìn)行膠囊體群構(gòu)建與二級(jí)碰撞檢測(cè);或在一級(jí)碰撞檢測(cè)完成后,直接進(jìn)行三維物體三角面片之間的碰撞檢測(cè)來(lái)獲得更加精確的碰撞結(jié)果。
實(shí)施例一:
圖8是本發(fā)明實(shí)施例提供的碰撞檢測(cè)總體執(zhí)行框架圖,如圖8所示,包括:
1)仿真準(zhǔn)備工作
虛擬維修場(chǎng)景一開(kāi)始,虛擬維修仿真系統(tǒng)將自動(dòng)對(duì)維修人員進(jìn)行膠囊化,形成由多個(gè)膠囊體c_human[a](a是人體膠囊體數(shù)量)組成的運(yùn)動(dòng)結(jié)構(gòu)。由于虛擬維修場(chǎng)景的特殊性,默認(rèn)在維修場(chǎng)景中,最先運(yùn)動(dòng)的物體是維修人員人體,因此,最先進(jìn)行的碰撞檢測(cè),應(yīng)該是針對(duì)運(yùn)動(dòng)人體進(jìn)行。
人體結(jié)構(gòu)上的膠囊體雖然都可以做多自由度運(yùn)動(dòng),但是運(yùn)動(dòng)人體由于自身的關(guān)節(jié)限制,這些膠囊體都無(wú)法脫離某一個(gè)區(qū)域。這一區(qū)域的邊界是人體上的膠囊體做運(yùn)動(dòng)時(shí)的極限位置組成的包絡(luò)面??梢岳斫猓梭w與其他物體產(chǎn)生的所有碰撞,都是發(fā)生在該包絡(luò)面以內(nèi)的,即物體必須首先跟該包絡(luò)面包圍的包絡(luò)體碰撞了,才有可能與人體產(chǎn)生碰撞。因此,針對(duì)人體與其他物體的碰撞檢測(cè),只需要遍歷該包絡(luò)體以內(nèi)的物體是否與人體碰撞。為了對(duì)該包絡(luò)體的區(qū)域進(jìn)行更清晰的界定并減少檢測(cè)包絡(luò)體時(shí)的計(jì)算量,本發(fā)明將該包絡(luò)體定義為維修人員可達(dá)空間,即一個(gè)包圍了人體所有組成膠囊體和這些膠囊體所有運(yùn)動(dòng)區(qū)域集合的大膠囊體。在人體膠囊化之后,虛擬維修仿真系統(tǒng)還需要根據(jù)人體膠囊樹(shù)構(gòu)建該可達(dá)空間膠囊體c_scope。該膠囊體隨著維修人員人體的移動(dòng)而進(jìn)行更新,之后進(jìn)行的碰撞檢測(cè),也將針對(duì)該膠囊體所包圍的區(qū)域進(jìn)行。
然后仿真系統(tǒng)通過(guò)自動(dòng)膠囊化方法,根據(jù)維修對(duì)象的結(jié)構(gòu),對(duì)維修場(chǎng)景中維修對(duì)象進(jìn)行膠囊化,產(chǎn)生c_lru[b](b是維修對(duì)象膠囊體數(shù)量)。以上準(zhǔn)備工作完成之后,虛擬維修仿真就可以開(kāi)始了。
2)碰撞檢測(cè)執(zhí)行過(guò)程循環(huán)
本碰撞檢測(cè)方法在每一次檢測(cè)之間具有后效性,這主要體現(xiàn)在虛擬維修仿真系統(tǒng)將依據(jù)枚舉類型testtype的值,確定本次碰撞檢測(cè)所進(jìn)行的類型——碰撞檢測(cè)a或者碰撞檢測(cè)b。其中碰撞檢測(cè)a負(fù)責(zé)執(zhí)行一級(jí)碰撞檢測(cè),并根據(jù)結(jié)果確定是否執(zhí)行構(gòu)建切片空間并生成切片空間內(nèi)的維修對(duì)象膠囊體群;碰撞檢測(cè)b負(fù)責(zé)執(zhí)行二級(jí)碰撞檢測(cè)和膠囊體群資源的釋放。
3)仿真結(jié)束檢測(cè)
在每一次檢測(cè)完成后,仿真系統(tǒng)都將檢測(cè)維修仿真是否結(jié)束,若結(jié)束則碰撞檢測(cè)停止,若沒(méi)結(jié)束,則繼續(xù)執(zhí)行碰撞檢測(cè)過(guò)程循環(huán),如圖8中所示。
需要注意的是,為了提高碰撞檢測(cè)的實(shí)時(shí)性和精確性,在每一次碰撞檢測(cè)b完成之后,還要繼續(xù)進(jìn)行一次碰撞檢測(cè)a,以確定下一次的碰撞檢測(cè)信息。
實(shí)施例二:
圖9是本發(fā)明實(shí)施例提供的a類型碰撞檢測(cè)執(zhí)行過(guò)程流程圖,如圖9所示,a類型的碰撞檢測(cè)實(shí)質(zhì)是第一級(jí)別的碰撞檢測(cè),主要確定在維修人員可達(dá)空間膠囊體之內(nèi)的維修對(duì)象是否與人體膠囊體結(jié)構(gòu)中的任一膠囊體存在碰撞,若沒(méi)有,則無(wú)需進(jìn)行后續(xù)碰撞檢測(cè)過(guò)程,即碰撞檢測(cè)b類型,若有,則使枚舉類型testtype=b,該值將導(dǎo)致下一次刷新檢測(cè)時(shí)進(jìn)行b類型碰撞檢測(cè)。
a類型的碰撞具體實(shí)施為:
步驟a1:將場(chǎng)景中所有維修對(duì)象膠囊體進(jìn)行遍歷,并判斷是否與可達(dá)空間膠囊體碰撞。假如都不與可達(dá)空間膠囊體碰撞,則無(wú)需進(jìn)行下一步檢測(cè),a檢測(cè)結(jié)束,且testtype依然為“a”不變;假如存在維修對(duì)象膠囊體與可達(dá)空間膠囊體碰撞,執(zhí)行步驟a2。
步驟a2:遍歷所有與可達(dá)空間膠囊體碰撞的維修對(duì)象膠囊體和人體膠囊樹(shù),判斷是否存在維修對(duì)象膠囊體與任一人體膠囊體c_human[i]()碰撞。假如不存在,則無(wú)需進(jìn)行下一步檢測(cè),a檢測(cè)結(jié)束,且testtype依然為“a”不變;假如存在碰撞,執(zhí)行步驟a3。
步驟a3:假設(shè)c_human[i]與某一維修對(duì)象膠囊體碰撞,則需要確定該碰撞在人體膠囊體上的碰撞點(diǎn)point1與其此時(shí)的速度speed,再根據(jù)碰撞檢測(cè)的刷新時(shí)間deltatime,確定下一次碰撞檢測(cè)時(shí),point1的可能到達(dá)點(diǎn)point2,通過(guò)速度方向分別確定垂直于speed并且通過(guò)point1和point2的近法平面和遠(yuǎn)法平面。執(zhí)行步驟a4。
步驟a4:遍歷所有在可達(dá)空間膠囊體內(nèi)的維修對(duì)象膠囊體,截取在兩個(gè)法平面確定的切片空間內(nèi)的部分,并根據(jù)截取的新物體構(gòu)造新的小膠囊體c_forb[n],(n為小膠囊體數(shù)量),眾多小膠囊體形成膠囊體群。執(zhí)行步驟a5。
步驟a5:將testtype置為“b”,a檢測(cè)結(jié)束。
實(shí)施例三:
圖10是本發(fā)明實(shí)施例提供的b類型碰撞檢測(cè)執(zhí)行過(guò)程流程圖,如圖10所示,b類型碰撞檢測(cè)實(shí)質(zhì)是二級(jí)碰撞檢測(cè),主要執(zhí)行人體膠囊體和與其相對(duì)應(yīng)的維修對(duì)象膠囊體群的碰撞檢測(cè)。
b類型的碰撞具體實(shí)施為:
步驟b1:遍歷人體膠囊樹(shù),根據(jù)人體膠囊體在a類型測(cè)試中儲(chǔ)存的信息,確定是否進(jìn)行二級(jí)檢測(cè)。對(duì)于具有相對(duì)應(yīng)維修對(duì)象膠囊體群的人體膠囊體,執(zhí)行步驟b2。
步驟b2:遍歷地進(jìn)行維修對(duì)象膠囊體群與對(duì)應(yīng)人體膠囊體的碰撞檢測(cè)。若某些碰撞成立,則輸出相應(yīng)碰撞信息給虛擬維修仿真系統(tǒng),系統(tǒng)將對(duì)這些信息進(jìn)行處理,以實(shí)現(xiàn)人機(jī)交互功能。對(duì)所有人體膠囊體遍歷測(cè)試完成之后,執(zhí)行步驟b3。
步驟b3:釋放膠囊體群資源,并將testtype重新置為“a”,b測(cè)試結(jié)束。
根據(jù)本發(fā)明實(shí)施例提供的方案,提高了仿真中交互的響應(yīng)速度和精度,最終提高了虛擬維修仿真擬真度,提升仿真效果。
盡管上文對(duì)本發(fā)明進(jìn)行了詳細(xì)說(shuō)明,但是本發(fā)明不限于此,本技術(shù)領(lǐng)域技術(shù)人員可以根據(jù)本發(fā)明的原理進(jìn)行各種修改。因此,凡按照本發(fā)明原理所作的修改,都應(yīng)當(dāng)理解為落入本發(fā)明的保護(hù)范圍。