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