王莉莉 宋燕燕 童氿一
摘要:隨著計算機技術和網(wǎng)絡技術的高速發(fā)展,虛擬現(xiàn)實技術逐漸走進人們的日常生活。建筑虛擬漫游作為虛擬現(xiàn)實技術的一個重要分支,被廣泛應用于場館展示項目中。本文以綜合體育館為虛擬漫游場景,使用3D Max軟件制作三維模型,Unity3D引擎為開發(fā)工具,實現(xiàn)了綜合體育場館第一人稱虛擬漫游。
關鍵詞:虛擬漫游;體育館;Unity3D;第一人稱漫游
中圖分類號:S126 文獻標識碼:A 文章編號:1007-9416(2018)05-0089-03
1 引言
虛擬現(xiàn)實技術是一種利用計算機模擬產(chǎn)生場景,并能實現(xiàn)虛擬現(xiàn)實環(huán)境的計算機仿真技術。利用最新的計算機虛擬現(xiàn)實技術創(chuàng)作的三維虛擬環(huán)境較二維照片和視頻更直觀形象,更逼真,臨場感更強。傳統(tǒng)體育場館在宣傳上,僅僅只能通過網(wǎng)站圖片的形式,缺乏現(xiàn)實空間感受。場景虛擬漫游技術的實現(xiàn),可以讓使用者產(chǎn)生身臨其境的感覺,還可以在場景中通過交互,實現(xiàn)場館預定、查看詳細功能等。本項目的研究具有較高的實際應用價值。
2 虛擬漫游系統(tǒng)及Unity3D引擎
虛擬漫游系統(tǒng)是一種能夠集視覺、聽覺、觸覺為一體的虛擬環(huán)境,能夠實時仿真虛擬空間,可從任意角度對虛擬對象進行瀏覽觀察,可與其中的對象進行交互的新技術。具有沉浸感、交互性、構想性等特點。在建筑設計、城鄉(xiāng)規(guī)劃、家具裝潢、場景展示等領域,游戲設計與娛樂行業(yè)應用廣泛。
Unity3D是由Unity Technologies開發(fā)的一款跨平臺綜合游戲引擎,能夠運行在Windows和Mac OS X操作系統(tǒng)下,可以發(fā)布游戲到Windows,Mac,Wii,iPhone,WebGL(需要HTML5)和Android等多種平臺。腳本語言簡單,支持各種插件,開發(fā)速度快,跨平臺性好,可以讓用戶輕松創(chuàng)建3D游戲、建筑可視化、三維動畫等類型的交互式內(nèi)容。
3 綜合體育館系統(tǒng)設計
本文所實現(xiàn)的綜合體育館漫游系統(tǒng)主要利用三維建模軟件3DS Max完成場景和模型的建模,利用Unity3D引擎來完成系統(tǒng)的漫游和交互。
3.1 系統(tǒng)總體設計目標
綜合體育館漫游系統(tǒng)主要包含乒乓球場、羽毛球場和籃球場所、觀眾席看臺四部分。使用者可通過鍵盤W、A、S、D鍵來控制位移,通過鼠標控制視角,可瀏覽場館任何區(qū)域。可查看場館預定信息、進行預定操作、查看操作說明和退出系統(tǒng)等。
3.2 系統(tǒng)功能模塊設計
本系統(tǒng)主要包括建模模塊、漫游模塊和交互模塊,功能結構圖如圖1所示。建模模塊主要實現(xiàn)綜合體育館整體建模和三個運動場區(qū)的建模;漫游模塊主要實現(xiàn)第一人稱視角位移和視角控制,碰撞檢測;交互模塊主要實現(xiàn)查看預定信息、預定場館、查看操作說明及退出系統(tǒng)功能。
4 綜合體育館漫游系統(tǒng)實現(xiàn)
4.1 建模模塊實現(xiàn)
本系統(tǒng)建模主要通過3DS Max軟件建模、貼圖、渲染、烘焙完成。主要包括體育館整體建模和三個運動場區(qū)的建模。在將模型導入Unity3D引擎前對模型面數(shù)進行了優(yōu)化,將多個次要對象通過布爾運算合成一個對象,減少Unity3D的渲染負擔,檢查場景中的孤立點和面,適當刪除,調整貼圖模式,減少燈數(shù)。通過此類優(yōu)化措施,提高系統(tǒng)運行效率。
(1)體育館整體場館建模。場館外觀為灰色,整體類正方形,有層次感,側面為透明玻璃。如圖2所示為導入Unity3D后的整體場館外觀圖。館內(nèi)墻壁采用灰色吸音材料,可以隔絕噪音,保證比賽不受雜音影響。制作時,新建一個長20,寬5,高5的長方體,然后復制粘貼出多個同樣的長方體,再進行堆疊,將體育館模型構建出來。如圖3所示為導入Unity3D后的場館室內(nèi)效果圖
(2)乒乓球場臺建模。乒乓球球臺按照國際標準設計,乒乓球球桌臺面尺寸為2740×1525mm,臺高為760mm,網(wǎng)寬1.83米,網(wǎng)高0.1525米。本系統(tǒng)中采用綠色桌面。如圖4所示為乒乓球球臺模型圖。
(3)羽毛球場建模。羽毛球球場按照國際標準尺寸設計,球場為長方形場地,長度為13.40m,場地寬為5.18m設計為單打場地。球場上各條線寬均為4cm,球場界限用白色畫出。羽毛球球網(wǎng)長6.10m、寬760mm,網(wǎng)孔大小在15-20mm之間,網(wǎng)的上沿有75mm寬的雙層白布。網(wǎng)柱高1.55m,兩根網(wǎng)柱分別立在雙打場地邊線的中點上。球網(wǎng)中部上沿離地面為1.524m,球網(wǎng)兩端高為1.55m。如圖5所示為羽毛球場模型圖。
(4)籃球場建模?;@球球場按照國際標準尺寸設計,整個籃球場地長28m,寬15m?;@圈下沿距地面3.05m。線條:寬度為5cm. 球場界線距觀眾席2m。中線向兩側邊線外各延長15cm。罰球線與端線平行,它的外沿距離端線內(nèi)沿5.80m;這條線長為3.60m。罰球區(qū)是以罰球線中點為圓心,以1.80m為半徑,向限制區(qū)外畫出一個半圓區(qū)域,限制區(qū)內(nèi)的半圓畫成虛線。罰球區(qū)中第一條線距離端線內(nèi)沿1.75m,第一位置區(qū)的寬度為0.85m,并且與中立區(qū)域的始端相接。中立區(qū)域的寬度為0.40m,第二位置區(qū)與中立區(qū)域相鄰,寬度為0.85m,第三位置區(qū)與第二位置區(qū)相鄰,寬度也是0.85m。所有區(qū)域線條長度為0.10m,并垂直于罰球區(qū)邊線的外側。中圈畫在球場的中央,半徑為1.80m。三分投籃區(qū)距邊線1.25m,從端線引出兩條平行線,半徑為6.25m(量至圓弧外沿)的圓?。ò雸A)與兩平行線相交圓心距端線內(nèi)沿中點的距離為1.575m。如圖6所示為籃球場模型圖。
(5)觀眾席看臺建模。觀眾席以NBA聯(lián)賽中球館的觀眾席為模板進行設計,分為三層。第一層為觀眾椅,椅子高度為410mm,椅子座位寬度為200mm,共三排。第二層和第三層都是階梯型座位,每級階梯的座位間由隔板隔開,每級階梯高為400mm,共14級階梯。如圖7所示為觀眾席看臺模型圖。
4.2 漫游模塊實現(xiàn)
首先,在Unity3D中新建一個工程文件,自帶一個主攝像機和一個自然光。然后,將制作好的模型導入Unity 3D,將制作的場景拖入制作窗口。
(1)第一人稱漫游位移控制功能實現(xiàn)。首先,在場景中添加一個圓柱體,代表用戶。將主攝像機設定為跟隨圓柱體移動,通過控制場景中圓柱體的位移和攝像機的轉到,來實現(xiàn)用戶的位移和視角。通過代碼設置了向前行走、向后行走、橫向移動和跑動的速度,并對跳躍的高度進行了設置??刂频谝蝗朔Q向前位移和向左位移的關鍵代碼如下:
if (Input.GetKey(KeyCode.W)) //設置鍵盤上的“W”鍵控制第一人稱視角向前移動
{ float x = Mathf.Sin(transform.eulerAngles.y * Mathf.Deg2Rad) * distance;
float z = Mathf.Cos(transform.eulerAngles.y * Mathf.Deg2Rad) * distance;
transform.Translate(new Vector3(x,0,z), Space.World); return true; }
if (Input.GetKey(KeyCode.A)) //設置鍵盤上的“A”鍵控制第一人稱視角向左移動
{transform.Translate(new Vector3(-distance, 0, 0)); return true;}
(2)第一人稱漫游視角控制功能實現(xiàn)。第一人稱漫游視角控制,主要通過攝像機的視角轉動設定為跟隨鼠標的移動而移動。如圖8所示為第一人稱視角漫游場景圖。視角控制的部分關鍵代碼如下:
public Camera cam;// 定義相機
public MovementSettings movementSettings = new MovementSettings();//定義相機視角移動
public MouseLook mouseLook = new MouseLook();// 跟隨鼠標移動而移動
public AdvancedSettings advancedSettings = new AdvancedSettings();
(3)碰撞檢測功能實現(xiàn)。碰撞檢測是虛擬漫游系統(tǒng)的重要功能,其作用是用來確保兩個不可穿透的對象互相不能共享相同的空間。首先,為圓柱體添加剛體,再通過為所有模型添加碰撞檢測Mesh Collider屬性來實現(xiàn)。
4.3 交互模塊實現(xiàn)
(1)查看預定功能實現(xiàn)。首先,新建一個button,將其命名為 “chakan”,將按鈕的文本名稱改為 “查看預定”。然后在按鈕上方新建一個Text文本框“yuding”。新建一個c#文件“mingdan”,通過代碼設置文本框初始不可見,編寫代碼,設置點擊按鈕后,如果文本框是顯示狀態(tài)則將其隱藏,如果文本框是隱藏狀態(tài)則將其顯示,然后將腳本拖到“chakan”的屬性欄中的Button(Script)中,再將拖到Button(Script)中的腳本文件拖到OnClick中,并設置點擊按鈕后執(zhí)行mingdan.sendMessageUpwards。如圖9所示為查看場館預定功能圖。部分代碼如下:
void Start()
{ga=GameObject.Find(ganame);
ga.active=false; //設置開始可見性}
void OnClick() //控制顯示和隱藏的方法
{if (ga.active==true)//文本此時顯示
{ga.SetActive(false);//點擊后隱藏}
else if(ga.active==false)//文本此時隱藏
{ga.SetActive(true);//點擊后顯示}}}
(2)預定場館功能實現(xiàn)。首先,添加一個button和一個Input Filed。分別改名為“yuyue”和“yudingxinxi”,button控件的文本名稱改為“場地預定”。新建一個c#文件“xinxishuru”,編寫代碼使在Input Filed中輸入的內(nèi)容能在查詢預定的文本框內(nèi)顯示,將腳本拖到Input Filed屬性欄中的On Value Changed(String)中,設置對應的Text.text。
(3)操作說明功能實現(xiàn)。首先,先新建一個button,命名為“caozuo”,按鈕文本名稱改為“操作說明”。然后在button上方新建一個Text文本框“kongzhi”。通過代碼設置文本框初始不可見,新建一個c#腳本“shuoming”,編寫代碼,設置點擊按鈕后,如果文本框是顯示狀態(tài)則將其隱藏,如果文本框是隱藏狀態(tài)則將其顯示,然后將腳本拖到“caozuo”的屬性欄中的Button(Script)中,再將拖到Button(Script)中的腳本文件拖到OnClick中,并設置點擊按鈕后執(zhí)行shuoming.sendMessageUpwards。
(4)退出系統(tǒng)功能實現(xiàn)。首先,先新建一個button控件,改名為“guanbi”,文本名稱改為“退出”。然后新建一個c#腳本,編寫好代碼后保存,將腳本拖到Button(Script)中,再拖到OnClick中,并設置執(zhí)行tuichu.OnClick。退出漫游部分代碼如下:
public void ontuichu()
{Application.Quit ();// 退出漫游}
5 結語
虛擬現(xiàn)實漫游技術是一項應用廣泛的計算機綜合性技術,它利用計算機生成逼真的虛擬環(huán)境,通過漫游和交互讓用戶產(chǎn)生臨場感。本文使用3DS Max和Unity3D工具實現(xiàn)了綜合體育館虛擬漫游系統(tǒng),系統(tǒng)包括建模、漫游、交互三個重要組成部分,采用碰撞檢測技術保證了系統(tǒng)的真實效果。系統(tǒng)設計效果良好,場景逼真。
參考文獻
[1]范國華,等.基于Unity的虛擬校園漫游系統(tǒng)的設計與實現(xiàn)[J].安徽農(nóng)業(yè)科學,2016,44(1):325-327.
[2]曲寶,等.基于Virtools的虛擬家居漫游系統(tǒng)的設計與實現(xiàn)[J].計算機工程與科學,2009.12:130-133.