韓桂明
(桂林電子科技大學信息科技學院,廣西桂林,541004)
虛擬現實技術今年來在計算機領域引起廣泛關注,采用現代化的計算機技術生成逼真的視、聽、觸覺等多重感應的虛擬環境。隨著社會的發展,虛擬現實技術在軍事、信息技術等各個領域應用越來越廣泛。
Unity3d 平臺作為一種三維虛擬現實游戲平臺,可以充分、實時的處理大量的三維模型。本文旨在Unity3d 平臺上,對門關鍵技術碰撞檢測展開研究及實現,包括碰撞區域觸發和射線觸發碰撞兩種開門關門方式,還有自動開門和按鍵觸發兩種操作方式。
在Unity3d 平臺中對房間模型進行操作之前,首先在3DMax三維軟件中建立教室房間的模型,包括房間的墻壁、窗戶、門、地板和玻璃等模型,并賦予相應的材質,使房間模型呈現更加逼真。房間的模型如圖1 所示:

圖1 3DMax 房間模型
本文討論的三維房間模型是利用三維軟件3DMax 完成建模和貼圖后,導出為FBX 文件導入到Unity3d 平臺中。在導出FBX文件之前,需要將3DMax 中的單位設置為m,并且Y 軸方向向上。
通過在Unity 平臺中建立C#腳本,并附到相應物體對象門上,可以實現開門關門和自動開啟按鍵觸發開啟等功能。
碰撞區域觸發可以實現自動開啟和關閉門,也可以實現鍵盤觸發開啟和關閉門,這里選擇碰撞區域觸發自動開啟和關閉門對象,射線觸發碰撞按鍵觸發開啟和關閉門對象。
所謂“碰撞區域觸發”是指以門對象為中心,建立一個立方體碰撞區域,如圖2 所示:

圖2 場景中的碰撞區域
2.1.1 碰撞區域算法
碰撞區域的立方體區域有三維圖形坐標,因此三維坐標變量分別設為,碰撞區域觸發函數設為

F(X,Y,Z)=1 表示進入碰撞區域
F(X,Y,Z)=0,表示離開碰撞區域。
2.1.2 碰撞區域觸發門對象程序流程

圖3 碰撞區域觸發門對象程序流程圖
當第一人稱的中心三維坐標在碰撞區域的范圍之內,則表示進入觸發區域,相應門對象會自動開啟或者關閉。
2.1.2 碰撞區域觸發C#腳本


所謂“射線觸發碰撞”是指獲取鼠標的坐標,從Main Camera 到鼠標的坐標處發出一條射線,并用hit.collider.gameObject
.tag 判斷是否掃描對象是Door,如果是,則執行相應的動作。
2.2.1 射線觸發碰撞程序流程

圖4 射線觸發碰撞程序流程圖
2.2.2 射線觸發碰撞C#腳本


當掃描對象是門時,此時判斷鍵盤P 是否按下,如果按下P,則門會開啟或關閉。通過判斷掃描對象、鍵盤按鍵P 以及門的狀態,實現相應的開門關門功能。
通過對門對象的碰撞檢測關鍵技術研究,討論并實現了虛擬現實在室內漫游和室內設計系統中的關鍵應用技術。實現了在Unity3d 中,通過鍵盤控制、檢測門的狀態,且給出了可行、高效的碰撞檢測算法及其實現。
通過使用以上關鍵技術的室內設計和漫游系統,設計簡單方便,可以進一步突出場景的真實感和實時性,功能更加完善,人機界面更加友好、互動性更強。另外本文討論研究的關鍵技術可以應用于其它包括電子、科技、安全、醫學成像等相關的虛擬現實和仿真。
[1] 卞峰,江漫清,桑永英,等.虛擬現實及其應用進展 [J]. 計算機仿真,2007(6):1-4.
[2] 倪樂波,戚鵬,遇麗娜,等.Unity3d 虛擬展示技術的研究與應用 [J].數字技術與應用,2010(12):54-55.
[3] 干建松.基于Unity3d 的室內漫游的關鍵技術研究 [J].鹽城工學院學報,2011(4):56-59.