亚洲狠狠干,亚洲国产福利精品一区二区,国产八区,激情文学亚洲色图

一種動態(tài)碰撞檢測的方法及裝置與流程

文檔序號:11230775閱讀:1298來源:國知局
一種動態(tài)碰撞檢測的方法及裝置與流程

本發(fā)明涉及虛擬現(xiàn)實(shí)技術(shù)輔助產(chǎn)品設(shè)計(jì)分析技術(shù)領(lǐng)域,特別涉及一種動態(tài)碰撞檢測的方法及裝置。



背景技術(shù):

虛擬維修是指運(yùn)用虛擬現(xiàn)實(shí)技術(shù)和計(jì)算機(jī)仿真技術(shù),建立一個包含裝備虛擬樣機(jī)、維修人員、維修工具、維修設(shè)備等信息的虛擬環(huán)境,并在該環(huán)境下模擬產(chǎn)品的維修過程,對設(shè)備的故障進(jìn)行分析和維修預(yù)處理,模擬拆卸過程,預(yù)估維修作業(yè)的時間,制定設(shè)備部件拆卸的順序和預(yù)估維修費(fèi)用等,對產(chǎn)品維修性方面,如維修過程中的可視性、零部件可達(dá)性以及零部件的拆裝操作性進(jìn)行分析研究,從而及早發(fā)現(xiàn)產(chǎn)品維修性設(shè)計(jì)中的缺陷并提出改進(jìn)。所以,虛擬維修技術(shù)將有關(guān)產(chǎn)品維修性方面的潛在問題在設(shè)計(jì)階段的早期就予以發(fā)現(xiàn)并輔助解決,可顯著縮短產(chǎn)品維修性設(shè)計(jì)時間,降低因維修事前決策不當(dāng)?shù)仍斐傻纳a(chǎn)中斷和費(fèi)用損失。

碰撞檢測,也稱為干涉檢測或者接觸檢測,是基于現(xiàn)實(shí)生活中一個普遍存在的事實(shí):兩個不可穿透的對象不能共享相同的空間區(qū)域,而出現(xiàn)的技術(shù)。碰撞檢測作為虛擬現(xiàn)實(shí)系統(tǒng)中的一個關(guān)鍵組成部分,主要的任務(wù)是判斷物體模型之間、模型與場景之間是否發(fā)生了碰撞以及給出碰撞位置、穿刺深度等信息。在虛擬維修仿真中,碰撞檢測處理物體之間的位置與形狀數(shù)據(jù),并反饋物體之間的干涉信息,承擔(dān)著實(shí)現(xiàn)人機(jī)交互、保證仿真擬真度的功能。甚至,碰撞深度和方向信息還可以用來分析碰撞時力的大小和方向信息,為仿真中力反饋技術(shù)提供一定的參考。隨著產(chǎn)品和維修過程的復(fù)雜化程度不斷提高,用戶對虛擬維修仿真的真實(shí)性,包括仿真的實(shí)時性和精確度,提出了更高的要求。而碰撞檢測技術(shù)作為構(gòu)建虛擬維修仿真過程的關(guān)鍵技術(shù)之一,其精確性和快速性極大地影響了虛擬維修仿真的實(shí)時性和準(zhǔn)確程度。

目前,碰撞檢測的算法研究取得了一批有意義的成果,并在游戲等領(lǐng)域獲得廣泛的應(yīng)用。但針對虛擬維修系統(tǒng)的碰撞檢測算法研究不多,目前在虛擬維修仿真系統(tǒng)中通常借鑒或修改其它的算法加以應(yīng)用,有的甚至不具有碰撞檢測的功能。然而由于虛擬維修仿真的自身特點(diǎn),目前的常用碰撞檢測算法并不十分適用于虛擬維修仿真過程。要對復(fù)雜維修環(huán)境中很多物體進(jìn)行快速準(zhǔn)確的碰撞檢測還很困難,特別是對不規(guī)則物體的維修拆卸仿真,因而達(dá)不到仿真的目標(biāo)要求,嚴(yán)重制約了虛擬維修技術(shù)的發(fā)展?;诖?,針對虛擬維修獨(dú)有的特點(diǎn)進(jìn)行適用于虛擬維修仿真的碰撞檢測算法研究顯得尤為必要。



技術(shù)實(shí)現(xiàn)要素:

根據(jù)本發(fā)明實(shí)施例提供的方案解決的技術(shù)問題是虛擬維修仿真中缺乏相應(yīng)碰撞檢測方法。

根據(jù)本發(fā)明實(shí)施例提供的一種動態(tài)碰撞檢測的方法,包括:

通過分別對維修人員各肢節(jié)及多個維修對象進(jìn)行虛擬膠囊化處理,得到多個虛擬維修人員肢節(jié)膠囊體和多個虛擬維修對象膠囊體;

通過對所述多個虛擬維修人員肢節(jié)膠囊體和多個虛擬維修對象膠囊體進(jìn)行虛擬碰撞檢測,得到虛擬維修人員肢節(jié)膠囊體與虛擬維修對象膠囊體間的虛擬碰撞狀態(tài);

根據(jù)所述虛擬碰撞狀態(tài),確定所述虛擬維修人員肢節(jié)膠囊體與所述虛擬維修對象膠囊體的碰撞空間;

利用所述碰撞空間對每個虛擬維修對象膠囊體進(jìn)行切片處理,將所述碰撞空間內(nèi)的每個虛擬維修對象膠囊體的切片部分作為維修對象部分;

通過對所有的維修對象部分虛擬膠囊化處理,形成維修對象虛擬膠囊群;

將所述虛擬維修人員肢節(jié)膠囊體和維修對象虛擬膠囊群進(jìn)行虛擬碰撞檢測,得到虛擬維修人員肢節(jié)膠囊體與維修對象虛擬膠囊群的動態(tài)碰撞結(jié)果。

優(yōu)選地,所述通過對所述多個虛擬維修人員肢節(jié)膠囊體和多個虛擬維修對象膠囊體進(jìn)行虛擬碰撞檢測之前,還包括:

通過對維修人員各肢節(jié)可達(dá)空間進(jìn)行膠囊化處理,得到多個虛擬維修人員肢節(jié)可達(dá)空間膠囊體;

通過遍歷所有虛擬維修對象膠囊體,判斷是否存在全部處于或部分處于所述虛擬維修人員肢節(jié)可達(dá)空間膠囊體內(nèi)的一個或多個虛擬維修對象膠囊體,并將其作為待檢測虛擬維修對象膠囊體;

若判斷存在全部處于或部分處于所述虛擬維修人員可達(dá)空間膠囊體內(nèi)的待檢測虛擬維修對象膠囊體,則對所述虛擬維修人員肢節(jié)膠囊體和待檢測虛擬維修對象膠囊體進(jìn)行虛擬碰撞檢測。

優(yōu)選地,所述通過對所述虛擬維修人員肢節(jié)膠囊體和多個虛擬維修對象膠囊體進(jìn)行虛擬碰撞檢測,得到虛擬維修人員肢節(jié)膠囊體與虛擬維修對象膠囊體間的虛擬碰撞狀態(tài)包括:

通過遍歷所有虛擬維修人員肢節(jié)膠囊體,判斷是否存在與所述待檢測虛擬維修對象膠囊體發(fā)生碰撞的一個或多個虛擬維修人員肢節(jié)膠囊體,并將其作為待檢測虛擬維修人員肢節(jié)膠囊體;

若判斷存在與所述待檢測虛擬維修對象膠囊體發(fā)生碰撞的待檢測虛擬維修人員肢節(jié)膠囊體,則獲取待檢測虛擬維修人員肢節(jié)膠囊體與待檢測虛擬維修對象膠囊體間的虛擬碰撞狀態(tài)。

優(yōu)選地,所述虛擬碰撞狀態(tài)包括所述待檢測虛擬維修人員肢節(jié)膠囊體的瞬時速度和所述待檢測虛擬維修對象膠囊體上的虛擬碰撞點(diǎn)。

優(yōu)選地,所述根據(jù)所述虛擬碰撞狀態(tài),確定所述虛擬維修人員肢節(jié)膠囊體與所述多個虛擬維修對象膠囊體的碰撞空間包括:

根據(jù)所述虛擬維修人員肢節(jié)膠囊體的瞬時速度和所述虛擬維修對象膠囊體上的虛擬碰撞點(diǎn),計(jì)算下一次虛擬碰撞時所述虛擬碰撞點(diǎn)的位移,并根據(jù)所述位移,得到虛擬碰撞點(diǎn)的虛擬位移碰撞點(diǎn);

根據(jù)所述虛擬維修人員肢節(jié)膠囊體的瞬時速度,構(gòu)建過所述虛擬碰撞點(diǎn)且垂直于所述瞬時速度方向的近法平面和過所述虛擬位移碰撞點(diǎn)且垂直于所述瞬時速度方向的遠(yuǎn)法平面;

利用所述近法平面和遠(yuǎn)發(fā)平面對所述虛擬維修人員可達(dá)空間膠囊體進(jìn)行切分,得到所述虛擬維修人員肢節(jié)膠囊體與所述多個虛擬維修對象膠囊體的碰撞空間。

優(yōu)選地,所述通過對所有的維修對象部分虛擬膠囊化處理,形成維修對象虛擬膠囊群包括:

通過對所有的維修對象部分虛擬膠囊化處理,得到虛擬維修對象部分膠囊體;

根據(jù)所得到的虛擬維修對象部分膠囊體,構(gòu)建維修對象虛擬膠囊群。

根據(jù)本發(fā)明實(shí)施例提供的一種動態(tài)碰撞檢測的裝置,包括:

虛擬膠囊化模塊,用于通過分別對維修人員各肢節(jié)及多個維修對象進(jìn)行虛擬膠囊化處理,得到多個虛擬維修人員肢節(jié)膠囊體和多個虛擬維修對象膠囊體,以及通過對所有的維修對象部分虛擬膠囊化處理,形成維修對象虛擬膠囊群;

虛擬碰撞檢測模塊,用于通過對所述多個虛擬維修人員肢節(jié)膠囊體和多個虛擬維修對象膠囊體進(jìn)行虛擬碰撞檢測,得到虛擬維修人員肢節(jié)膠囊體與虛擬維修對象膠囊體間的虛擬碰撞狀態(tài),以及將所述虛擬維修人員肢節(jié)膠囊體和維修對象虛擬膠囊群進(jìn)行虛擬碰撞檢測,得到虛擬維修人員肢節(jié)膠囊體與維修對象虛擬膠囊群的動態(tài)碰撞結(jié)果;

確定碰撞空間模塊,用于根據(jù)所述虛擬碰撞狀態(tài),確定所述虛擬維修人員肢節(jié)膠囊體與所述虛擬維修對象膠囊體的碰撞空間;

切片處理模塊,用于利用所述碰撞空間對每個虛擬維修對象膠囊體進(jìn)行切片處理,將所述碰撞空間內(nèi)的每個虛擬維修對象膠囊體的切片部分作為維修對象部分。

優(yōu)選地,所述虛擬膠囊化模塊還具體用于通過對維修人員各肢節(jié)可達(dá)空間進(jìn)行膠囊化處理,得到多個虛擬維修人員肢節(jié)可達(dá)空間膠囊體。

優(yōu)選地,所述虛擬碰撞檢測模塊還具體用于通過遍歷所有虛擬維修對象膠囊體,判斷是否存在全部處于或部分處于所述虛擬維修人員肢節(jié)可達(dá)空間膠囊體內(nèi)的一個或多個虛擬維修對象膠囊體,并將其作為待檢測虛擬維修對象膠囊體,以及當(dāng)判斷存在全部處于或部分處于所述虛擬維修人員可達(dá)空間膠囊體內(nèi)的待檢測虛擬維修對象膠囊體,則對所述虛擬維修人員肢節(jié)膠囊體和待檢測虛擬維修對象膠囊體進(jìn)行虛擬碰撞檢測。

優(yōu)選地,所述虛擬碰撞檢測模塊還具體用于通過遍歷所有虛擬維修人員肢節(jié)膠囊體,判斷是否存在與所述待檢測虛擬維修對象膠囊體發(fā)生碰撞的一個或多個虛擬維修人員肢節(jié)膠囊體,并將其作為待檢測虛擬維修人員肢節(jié)膠囊體,以及當(dāng)判斷存在與所述待檢測虛擬維修對象膠囊體發(fā)生碰撞的待檢測虛擬維修人員肢節(jié)膠囊體,則獲取待檢測虛擬維修人員肢節(jié)膠囊體與待檢測虛擬維修對象膠囊體間的虛擬碰撞狀態(tài);

其中,所述虛擬碰撞狀態(tài)包括所述待檢測虛擬維修人員肢節(jié)膠囊體的瞬時速度和所述待檢測虛擬維修對象膠囊體上的虛擬碰撞點(diǎn)。

根據(jù)本發(fā)明實(shí)施例提供的方案,具有如下的優(yōu)點(diǎn):

a)將人體簡化為膠囊樹結(jié)構(gòu),一方面膠囊體對人體外形貼合性很好,另一方面,便于迅速遍歷樹上的膠囊體,把維修對象處理成膠囊體,相交測試計(jì)算簡單,計(jì)算量少;

b)利用可達(dá)空間膠囊體,在每一次碰撞檢測的開始就剔除了大部分物體,減少了計(jì)算量;

c)動態(tài)地利用瞬時速度不斷更新切片空間和膠囊體群,極大減少了碰撞檢測的計(jì)算量;

d)利用檢測間隔時間和二級碰撞檢測迭代次數(shù)可以方便地控制碰撞檢測精度。

附圖說明

圖1是本發(fā)明實(shí)施例提供的一種動態(tài)碰撞檢測的方法流程圖;

圖2是本發(fā)明實(shí)施例提供的一種動態(tài)碰撞檢測的裝置示意圖;

圖3是本發(fā)明實(shí)施例提供的基于膠囊體和瞬時速度的動態(tài)碰撞檢測方法技術(shù)框架圖;

圖4是本發(fā)明實(shí)施例提供的人體膠囊化構(gòu)造示意圖;

圖5是本發(fā)明實(shí)施例提供的人體膠囊樹示意圖;

圖6是本發(fā)明實(shí)施例提供的搜索區(qū)域膠囊體示意圖;

圖7是本發(fā)明實(shí)施例提供的切片化處理和次級膠囊體構(gòu)造示意圖;

圖8是本發(fā)明實(shí)施例提供的碰撞檢測總體執(zhí)行框架圖;

圖9是本發(fā)明實(shí)施例提供的a類型碰撞檢測執(zhí)行過程流程圖;

圖10是本發(fā)明實(shí)施例提供的b類型碰撞檢測執(zhí)行過程流程圖。

具體實(shí)施方式

以下結(jié)合附圖對本發(fā)明的優(yōu)選實(shí)施例進(jìn)行詳細(xì)說明,應(yīng)當(dāng)理解,以下所說明的優(yōu)選實(shí)施例僅用于說明和解釋本發(fā)明,并不用于限定本發(fā)明。

圖1是本發(fā)明實(shí)施例提供的一種動態(tài)碰撞檢測的方法流程圖,如圖1所示,包括:

步驟s101:通過分別對維修人員各肢節(jié)及多個維修對象進(jìn)行虛擬膠囊化處理,得到多個虛擬維修人員肢節(jié)膠囊體和多個虛擬維修對象膠囊體;

步驟s102:通過對所述多個虛擬維修人員肢節(jié)膠囊體和多個虛擬維修對象膠囊體進(jìn)行虛擬碰撞檢測,得到虛擬維修人員肢節(jié)膠囊體與虛擬維修對象膠囊體間的虛擬碰撞狀態(tài);

步驟s103:根據(jù)所述虛擬碰撞狀態(tài),確定所述虛擬維修人員肢節(jié)膠囊體與所述虛擬維修對象膠囊體的碰撞空間;

步驟s104:利用所述碰撞空間對每個虛擬維修對象膠囊體進(jìn)行切片處理,將所述碰撞空間內(nèi)的每個虛擬維修對象膠囊體的切片部分作為維修對象部分;

步驟s105:通過對所有的維修對象部分虛擬膠囊化處理,形成維修對象虛擬膠囊群;

步驟s106:將所述虛擬維修人員肢節(jié)膠囊體和維修對象虛擬膠囊群進(jìn)行虛擬碰撞檢測,得到虛擬維修人員肢節(jié)膠囊體與維修對象虛擬膠囊群的動態(tài)碰撞結(jié)果。

其中,所述通過對所述多個虛擬維修人員肢節(jié)膠囊體和多個虛擬維修對象膠囊體進(jìn)行虛擬碰撞檢測之前,還包括:通過對維修人員各肢節(jié)可達(dá)空間進(jìn)行膠囊化處理,得到多個虛擬維修人員肢節(jié)可達(dá)空間膠囊體;通過遍歷所有虛擬維修對象膠囊體,判斷是否存在全部處于或部分處于所述虛擬維修人員肢節(jié)可達(dá)空間膠囊體內(nèi)的一個或多個虛擬維修對象膠囊體,并將其作為待檢測虛擬維修對象膠囊體;若判斷存在全部處于或部分處于所述虛擬維修人員可達(dá)空間膠囊體內(nèi)的待檢測虛擬維修對象膠囊體,則對所述虛擬維修人員肢節(jié)膠囊體和待檢測虛擬維修對象膠囊體進(jìn)行虛擬碰撞檢測。

其中,所述通過對所述虛擬維修人員肢節(jié)膠囊體和多個虛擬維修對象膠囊體進(jìn)行虛擬碰撞檢測,得到虛擬維修人員肢節(jié)膠囊體與虛擬維修對象膠囊體間的虛擬碰撞狀態(tài)包括:通過遍歷所有虛擬維修人員肢節(jié)膠囊體,判斷是否存在與所述待檢測虛擬維修對象膠囊體發(fā)生碰撞的一個或多個虛擬維修人員肢節(jié)膠囊體,并將其作為待檢測虛擬維修人員肢節(jié)膠囊體;若判斷存在與所述待檢測虛擬維修對象膠囊體發(fā)生碰撞的待檢測虛擬維修人員肢節(jié)膠囊體,則獲取待檢測虛擬維修人員肢節(jié)膠囊體與待檢測虛擬維修對象膠囊體間的虛擬碰撞狀態(tài)。

其中,所述虛擬碰撞狀態(tài)包括所述待檢測虛擬維修人員肢節(jié)膠囊體的瞬時速度和所述待檢測虛擬維修對象膠囊體上的虛擬碰撞點(diǎn)。

其中,所述根據(jù)所述虛擬碰撞狀態(tài),確定所述虛擬維修人員肢節(jié)膠囊體與所述多個虛擬維修對象膠囊體的碰撞空間包括:根據(jù)所述虛擬維修人員肢節(jié)膠囊體的瞬時速度和所述虛擬維修對象膠囊體上的虛擬碰撞點(diǎn),計(jì)算下一次虛擬碰撞時所述虛擬碰撞點(diǎn)的位移,并根據(jù)所述位移,得到虛擬碰撞點(diǎn)的虛擬位移碰撞點(diǎn);根據(jù)所述虛擬維修人員肢節(jié)膠囊體的瞬時速度,構(gòu)建過所述虛擬碰撞點(diǎn)且垂直于所述瞬時速度方向的近法平面和過所述虛擬位移碰撞點(diǎn)且垂直于所述瞬時速度方向的遠(yuǎn)法平面;利用所述近法平面和遠(yuǎn)發(fā)平面對所述虛擬維修人員可達(dá)空間膠囊體進(jìn)行切分,得到所述虛擬維修人員肢節(jié)膠囊體與所述多個虛擬維修對象膠囊體的碰撞空間。

其中,所述通過對所有的維修對象部分虛擬膠囊化處理,形成維修對象虛擬膠囊群包括:通過對所有的維修對象部分虛擬膠囊化處理,得到虛擬維修對象部分膠囊體;根據(jù)所得到的虛擬維修對象部分膠囊體,構(gòu)建維修對象虛擬膠囊群。

圖2是本發(fā)明實(shí)施例提供的一種動態(tài)碰撞檢測的裝置示意圖,如圖2所示,包括:虛擬膠囊化模塊201,用于通過分別對維修人員各肢節(jié)及多個維修對象進(jìn)行虛擬膠囊化處理,得到多個虛擬維修人員肢節(jié)膠囊體和多個虛擬維修對象膠囊體,以及通過對所有的維修對象部分虛擬膠囊化處理,形成維修對象虛擬膠囊群;虛擬碰撞檢測模塊202,用于通過對所述多個虛擬維修人員肢節(jié)膠囊體和多個虛擬維修對象膠囊體進(jìn)行虛擬碰撞檢測,得到虛擬維修人員肢節(jié)膠囊體與虛擬維修對象膠囊體間的虛擬碰撞狀態(tài),以及將所述虛擬維修人員肢節(jié)膠囊體和維修對象虛擬膠囊群進(jìn)行虛擬碰撞檢測,得到虛擬維修人員肢節(jié)膠囊體與維修對象虛擬膠囊群的動態(tài)碰撞結(jié)果;確定碰撞空間模塊203,用于根據(jù)所述虛擬碰撞狀態(tài),確定所述虛擬維修人員肢節(jié)膠囊體與所述虛擬維修對象膠囊體的碰撞空間;切片處理模塊204,用于利用所述碰撞空間對每個虛擬維修對象膠囊體進(jìn)行切片處理,將所述碰撞空間內(nèi)的每個虛擬維修對象膠囊體的切片部分作為維修對象部分。

其中,所述虛擬膠囊化模塊201還具體用于通過對維修人員各肢節(jié)可達(dá)空間進(jìn)行膠囊化處理,得到多個虛擬維修人員肢節(jié)可達(dá)空間膠囊體。

其中,所述虛擬碰撞檢測模塊202還具體用于通過遍歷所有虛擬維修對象膠囊體,判斷是否存在全部處于或部分處于所述虛擬維修人員肢節(jié)可達(dá)空間膠囊體內(nèi)的一個或多個虛擬維修對象膠囊體,并將其作為待檢測虛擬維修對象膠囊體,以及當(dāng)判斷存在全部處于或部分處于所述虛擬維修人員可達(dá)空間膠囊體內(nèi)的待檢測虛擬維修對象膠囊體,則對所述虛擬維修人員肢節(jié)膠囊體和待檢測虛擬維修對象膠囊體進(jìn)行虛擬碰撞檢測。

其中,所述虛擬碰撞檢測模塊202還具體用于通過遍歷所有虛擬維修人員肢節(jié)膠囊體,判斷是否存在與所述待檢測虛擬維修對象膠囊體發(fā)生碰撞的一個或多個虛擬維修人員肢節(jié)膠囊體,并將其作為待檢測虛擬維修人員肢節(jié)膠囊體,以及當(dāng)判斷存在與所述待檢測虛擬維修對象膠囊體發(fā)生碰撞的待檢測虛擬維修人員肢節(jié)膠囊體,則獲取待檢測虛擬維修人員肢節(jié)膠囊體與待檢測虛擬維修對象膠囊體間的虛擬碰撞狀態(tài);其中,虛擬碰撞狀態(tài)包括所述待檢測虛擬維修人員肢節(jié)膠囊體的瞬時速度和所述待檢測虛擬維修對象膠囊體上的虛擬碰撞點(diǎn)。

圖3是本發(fā)明實(shí)施例提供的基于膠囊體和瞬時速度的動態(tài)碰撞檢測方法技術(shù)框架圖,如圖3所示,包括:

步驟一:碰撞檢測前虛擬維修空間中對象的膠囊化處理;

在仿真開始之前,需要對虛擬維修空間中全部對象進(jìn)行膠囊化預(yù)處理,包括維修人員肢節(jié)的膠囊化、維修人員可達(dá)空間的膠囊化以及維修對象的膠囊化。其中,維修人員肢節(jié)膠囊化指根據(jù)維修人員主要肢體關(guān)節(jié)構(gòu)建維修人員膠囊體并形成膠囊樹結(jié)構(gòu),如圖4、圖5所示;維修人員可達(dá)空間膠囊化指構(gòu)建跟隨人體運(yùn)動的搜索區(qū)域膠囊體空間如圖6所示;維修對象膠囊化指根據(jù)產(chǎn)品構(gòu)造和維修需求對維修對象進(jìn)行膠囊化處理。

步驟二:基于維修人員可達(dá)空間膠囊體的一級碰撞檢測;

對構(gòu)建的維修對象膠囊體遍歷地與維修人員可達(dá)空間膠囊體進(jìn)行碰撞檢測,判斷其是否處于或部分處于維修人員可達(dá)空間內(nèi)。若該可達(dá)空間內(nèi)存在維修對象膠囊體,則進(jìn)一步遍歷人體膠囊樹,與可達(dá)空間內(nèi)維修對象膠囊體進(jìn)行碰撞檢測,判斷是否有維修對象膠囊體與人體膠囊體碰撞,否則在下一次檢測時刻重復(fù)進(jìn)行步驟二。

若存在維修對象膠囊體與人體膠囊體碰撞,則立即執(zhí)行后續(xù)步驟,否則在下一次檢測時刻重復(fù)進(jìn)行步驟二。

步驟三:考慮相對瞬時速度的切片空間構(gòu)建;

對于存在碰撞的人體膠囊體,需要確定此時刻該人體膠囊體的運(yùn)動速度v,并回推其與碰撞的維修對象膠囊體的碰撞點(diǎn)p1,利用兩次碰撞檢測的間隔時間t,在速度方向上取距離p1為t*v的點(diǎn)p2,則可以得到過p1、p2并垂直于速度方向的近法平面和遠(yuǎn)法平面,如圖7所示。

步驟四:碰撞時刻切片空間內(nèi)維修對象的膠囊體群生成;

近法平面和遠(yuǎn)法平面將可達(dá)空間膠囊體切分,形成一個很小的切片空間,對可達(dá)空間內(nèi)的維修對象本身執(zhí)行檢測操作,提取處于該切片空間內(nèi)的維修對象部分,并對這些微小的部分分別構(gòu)建新的小膠囊體,形成膠囊體群,如圖7所示。

步驟五:下一時刻切片空間內(nèi)的二級碰撞檢測;

在下一檢測時刻,將人體膠囊體遍歷地和與其相對應(yīng)的膠囊體群進(jìn)行碰撞檢測,如果發(fā)生碰撞,則返回碰撞結(jié)果。

步驟六:切片空間內(nèi)膠囊體群的釋放。

將構(gòu)建的所有膠囊體群的資源釋放,并重新執(zhí)行步驟二,如此循環(huán),直到仿真結(jié)束。

對于本基于膠囊體和瞬時速度的動態(tài)碰撞檢測方法,在兩次檢測間隔時間t足夠小的情況下,可以認(rèn)為,二級碰撞檢測中人體膠囊體與維修對象膠囊體群的碰撞即是人體與維修對象本身的碰撞。如果需要更加精確的碰撞檢測效果,還可以通過迭代進(jìn)行膠囊體群構(gòu)建與二級碰撞檢測;或在一級碰撞檢測完成后,直接進(jìn)行三維物體三角面片之間的碰撞檢測來獲得更加精確的碰撞結(jié)果。

實(shí)施例一:

圖8是本發(fā)明實(shí)施例提供的碰撞檢測總體執(zhí)行框架圖,如圖8所示,包括:

1)仿真準(zhǔn)備工作

虛擬維修場景一開始,虛擬維修仿真系統(tǒng)將自動對維修人員進(jìn)行膠囊化,形成由多個膠囊體c_human[a](a是人體膠囊體數(shù)量)組成的運(yùn)動結(jié)構(gòu)。由于虛擬維修場景的特殊性,默認(rèn)在維修場景中,最先運(yùn)動的物體是維修人員人體,因此,最先進(jìn)行的碰撞檢測,應(yīng)該是針對運(yùn)動人體進(jìn)行。

人體結(jié)構(gòu)上的膠囊體雖然都可以做多自由度運(yùn)動,但是運(yùn)動人體由于自身的關(guān)節(jié)限制,這些膠囊體都無法脫離某一個區(qū)域。這一區(qū)域的邊界是人體上的膠囊體做運(yùn)動時的極限位置組成的包絡(luò)面。可以理解,人體與其他物體產(chǎn)生的所有碰撞,都是發(fā)生在該包絡(luò)面以內(nèi)的,即物體必須首先跟該包絡(luò)面包圍的包絡(luò)體碰撞了,才有可能與人體產(chǎn)生碰撞。因此,針對人體與其他物體的碰撞檢測,只需要遍歷該包絡(luò)體以內(nèi)的物體是否與人體碰撞。為了對該包絡(luò)體的區(qū)域進(jìn)行更清晰的界定并減少檢測包絡(luò)體時的計(jì)算量,本發(fā)明將該包絡(luò)體定義為維修人員可達(dá)空間,即一個包圍了人體所有組成膠囊體和這些膠囊體所有運(yùn)動區(qū)域集合的大膠囊體。在人體膠囊化之后,虛擬維修仿真系統(tǒng)還需要根據(jù)人體膠囊樹構(gòu)建該可達(dá)空間膠囊體c_scope。該膠囊體隨著維修人員人體的移動而進(jìn)行更新,之后進(jìn)行的碰撞檢測,也將針對該膠囊體所包圍的區(qū)域進(jìn)行。

然后仿真系統(tǒng)通過自動膠囊化方法,根據(jù)維修對象的結(jié)構(gòu),對維修場景中維修對象進(jìn)行膠囊化,產(chǎn)生c_lru[b](b是維修對象膠囊體數(shù)量)。以上準(zhǔn)備工作完成之后,虛擬維修仿真就可以開始了。

2)碰撞檢測執(zhí)行過程循環(huán)

本碰撞檢測方法在每一次檢測之間具有后效性,這主要體現(xiàn)在虛擬維修仿真系統(tǒng)將依據(jù)枚舉類型testtype的值,確定本次碰撞檢測所進(jìn)行的類型——碰撞檢測a或者碰撞檢測b。其中碰撞檢測a負(fù)責(zé)執(zhí)行一級碰撞檢測,并根據(jù)結(jié)果確定是否執(zhí)行構(gòu)建切片空間并生成切片空間內(nèi)的維修對象膠囊體群;碰撞檢測b負(fù)責(zé)執(zhí)行二級碰撞檢測和膠囊體群資源的釋放。

3)仿真結(jié)束檢測

在每一次檢測完成后,仿真系統(tǒng)都將檢測維修仿真是否結(jié)束,若結(jié)束則碰撞檢測停止,若沒結(jié)束,則繼續(xù)執(zhí)行碰撞檢測過程循環(huán),如圖8中所示。

需要注意的是,為了提高碰撞檢測的實(shí)時性和精確性,在每一次碰撞檢測b完成之后,還要繼續(xù)進(jìn)行一次碰撞檢測a,以確定下一次的碰撞檢測信息。

實(shí)施例二:

圖9是本發(fā)明實(shí)施例提供的a類型碰撞檢測執(zhí)行過程流程圖,如圖9所示,a類型的碰撞檢測實(shí)質(zhì)是第一級別的碰撞檢測,主要確定在維修人員可達(dá)空間膠囊體之內(nèi)的維修對象是否與人體膠囊體結(jié)構(gòu)中的任一膠囊體存在碰撞,若沒有,則無需進(jìn)行后續(xù)碰撞檢測過程,即碰撞檢測b類型,若有,則使枚舉類型testtype=b,該值將導(dǎo)致下一次刷新檢測時進(jìn)行b類型碰撞檢測。

a類型的碰撞具體實(shí)施為:

步驟a1:將場景中所有維修對象膠囊體進(jìn)行遍歷,并判斷是否與可達(dá)空間膠囊體碰撞。假如都不與可達(dá)空間膠囊體碰撞,則無需進(jìn)行下一步檢測,a檢測結(jié)束,且testtype依然為“a”不變;假如存在維修對象膠囊體與可達(dá)空間膠囊體碰撞,執(zhí)行步驟a2。

步驟a2:遍歷所有與可達(dá)空間膠囊體碰撞的維修對象膠囊體和人體膠囊樹,判斷是否存在維修對象膠囊體與任一人體膠囊體c_human[i]()碰撞。假如不存在,則無需進(jìn)行下一步檢測,a檢測結(jié)束,且testtype依然為“a”不變;假如存在碰撞,執(zhí)行步驟a3。

步驟a3:假設(shè)c_human[i]與某一維修對象膠囊體碰撞,則需要確定該碰撞在人體膠囊體上的碰撞點(diǎn)point1與其此時的速度speed,再根據(jù)碰撞檢測的刷新時間deltatime,確定下一次碰撞檢測時,point1的可能到達(dá)點(diǎn)point2,通過速度方向分別確定垂直于speed并且通過point1和point2的近法平面和遠(yuǎn)法平面。執(zhí)行步驟a4。

步驟a4:遍歷所有在可達(dá)空間膠囊體內(nèi)的維修對象膠囊體,截取在兩個法平面確定的切片空間內(nèi)的部分,并根據(jù)截取的新物體構(gòu)造新的小膠囊體c_forb[n],(n為小膠囊體數(shù)量),眾多小膠囊體形成膠囊體群。執(zhí)行步驟a5。

步驟a5:將testtype置為“b”,a檢測結(jié)束。

實(shí)施例三:

圖10是本發(fā)明實(shí)施例提供的b類型碰撞檢測執(zhí)行過程流程圖,如圖10所示,b類型碰撞檢測實(shí)質(zhì)是二級碰撞檢測,主要執(zhí)行人體膠囊體和與其相對應(yīng)的維修對象膠囊體群的碰撞檢測。

b類型的碰撞具體實(shí)施為:

步驟b1:遍歷人體膠囊樹,根據(jù)人體膠囊體在a類型測試中儲存的信息,確定是否進(jìn)行二級檢測。對于具有相對應(yīng)維修對象膠囊體群的人體膠囊體,執(zhí)行步驟b2。

步驟b2:遍歷地進(jìn)行維修對象膠囊體群與對應(yīng)人體膠囊體的碰撞檢測。若某些碰撞成立,則輸出相應(yīng)碰撞信息給虛擬維修仿真系統(tǒng),系統(tǒng)將對這些信息進(jìn)行處理,以實(shí)現(xiàn)人機(jī)交互功能。對所有人體膠囊體遍歷測試完成之后,執(zhí)行步驟b3。

步驟b3:釋放膠囊體群資源,并將testtype重新置為“a”,b測試結(jié)束。

根據(jù)本發(fā)明實(shí)施例提供的方案,提高了仿真中交互的響應(yīng)速度和精度,最終提高了虛擬維修仿真擬真度,提升仿真效果。

盡管上文對本發(fā)明進(jìn)行了詳細(xì)說明,但是本發(fā)明不限于此,本技術(shù)領(lǐng)域技術(shù)人員可以根據(jù)本發(fā)明的原理進(jìn)行各種修改。因此,凡按照本發(fā)明原理所作的修改,都應(yīng)當(dāng)理解為落入本發(fā)明的保護(hù)范圍。

當(dāng)前第1頁1 2 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點(diǎn)贊!
1