劉紅 王艷艷 北方工業(yè)大學 電子信息工程學院通信工程系
信息時代促進了Android移動終端技術與虛擬現實技術的發(fā)展與融合。這兩種技術的迅速發(fā)展,為人們提供了更人性化的便捷服務?;贏ndroid的虛擬現實系統(tǒng),用戶直接使用制作好的虛擬搖桿UI,不需要復雜的輸入設備就能實現對系統(tǒng)的操作,及時的在便于攜帶的Android移動終端實時查看場景變化,不受網絡,時間,地點的限制。
本系統(tǒng)的開發(fā),第一部分的主要工作是利用3ds Max建模工具創(chuàng)建毛澤東故居的3D模型,然后在Phtooshop軟件制作故居周圍環(huán)境的紋理貼圖,將制作好的紋理貼圖賦予給模型,并導出模型為FBX格式,完成模型的導出工作;第二部分的主要工作是將模型導入到Unity工程中,渲染場景,設置場景參數,給模型添加AudioSouse腳本,導入EasyTouch5.0.12資源包,制作虛擬搖桿UI,并編寫互動腳本。完成基于Android虛擬現實系統(tǒng)操作,系統(tǒng)開發(fā)流程如圖1所示:
圖1 系統(tǒng)開發(fā)流程
2.2.1 攝像機運動
攝像機是一個非常重要的用于顯示虛擬場景的組件,在Unity3D的攝像機用來將虛擬場景呈現到屏幕上。攝像機可以用Perspective(透視)或Orthographic(正交)方式投影渲染對象。本系統(tǒng)采用攝像機的正交投影,運用“Up”、“Down”、“Left”、“Right”鍵控制攝影機向左、向右、向前、向后運動。設置攝像機渲染路徑,利用鼠標、搖桿等輸入設備控制虛擬場景漫游的觀察角度,實現第一人稱場景漫游。
2.2.2 碰撞檢測
碰撞檢測是兩個物體相互接近利用碰撞器來檢測對象是否發(fā)生碰撞,通過PlayerSlideDoor對象進行控制碰撞器被觸發(fā),PlayerSlideDoor對象綁定TriggerOnTag腳本處理碰撞。碰撞器是Unity3D開發(fā)平臺中的組件,它包含諸如BoxCollider,CapsuleCollider,SphereCollider,MeshCollider,WheelCollider,TerrianCollider等類,這些碰撞器應用的場合不同,本系統(tǒng)選擇BoxCollider,首先為碰撞檢測的對象添加BoxCollider,開啟觸發(fā)器功能,再修改其size屬性,確??梢酝耆鼑龣z測對象,最后設置BoxCollider的IsTrigger屬性為ture。完成以上步驟之后,通過TriggerOnTag腳本處理碰撞事件,編寫互動腳本,并將其指定于待檢測對象。
2.2.3 3D拾取
在虛擬環(huán)境漫游過程中,用戶需要通過觸擊2D屏幕瀏覽3D物品,或利用鼠標選取環(huán)境中的物體進行操作,這個過程需要3D拾取技術。3D拾取是將2D信息轉化成3D信息,所以必須對信息進行相應處理,通過計算得出正確的結果。
3D拾取技術之所以復雜,是因為該技術跨越了流水線的多個階段。從攝像機投射空間到viewport的變換中,攝像空間中的一個頂點v經過線性插值變換將投影平面上的2D投影點變換到齊次裁剪空間CVV中,通過CVV裁剪,并且頂點進行透視除法,將從4D齊次形式變回成3D齊次形式,再經過Viewport Transformation最終將點變換到viewport中。將點的位置信息進行處理后,再通過逆處理將頂點從viewport中變換到投影平面。因此用戶在手機屏幕上點擊一個位置,即點擊事件的觸發(fā),實際上得到的是viewport中的點擊位置,標記為p0(XP0,YP0),通過線性插值公式如公式(1),把P0變換到CVV中得到P1(XP1,YP1),緊接著將P1通過線性插值的逆運算變換到plane of projection中,得到P2(XP2,YP2),X方向的線性插值逆運算變換公式如公式(2)所示:Y方向變換公式同理計算。P2就是點擊的位置處于投影面的2D點,拾取一個3D對象,需要將2D信息拓展到3D中,需要進行線性模型中的射線ray方式,在屏幕上點擊位置確定一條射線,射線射向3D模型,從攝像機到屏幕空間的觸摸點發(fā)出一條射線,這條射線第一個撞到的3D物體默認是被選中的物體。
三維虛擬毛澤東故居構建需要注意場景尺寸、單位長度、模型塌陷、命名、坐標、貼圖格式、材質等。制作流程如圖2所示:
圖2 3D模型制作流程
從3ds Max導入到Unity3D的Assets文件中,需要注意3ds Max和Unity3D兩個軟件中默認的單位長度,為了最大程度地簡化3ds Max導出及Unity3D導入FBX文件的工作,3d Max系統(tǒng)單位設置為“厘米”,Unity3D系統(tǒng)單位設置為“米”。三維虛擬毛澤東故居場景構建設計如圖3所示:
圖3 場景構建設計
資源的使用會影響性能,所以完成場景構建后需要場景優(yōu)化。為了優(yōu)化場景,則需減少模型數量,所以可以將相同材質的模型合并在一起;減少材質貼圖數量,可以將多張貼圖合并,模型共享一張貼圖,并且盡可能壓縮貼圖,減少位數。
在安卓端的產品使用方法比較簡單,如圖4所示,首先把虛擬毛澤東故居app拷貝到安卓手機中,或者通過掃描生成的二維碼,然后安裝,打開app運行,這樣就可以體檢虛擬毛澤東故居3D漫游。手機界面效果如圖5所示。
圖4 毛澤東故居app安裝流程
圖5 手機界面效果
本文以3ds Max為工具完成建模,利
用unity3d引擎,采用C#編寫腳本,使用攝像機運動,碰撞檢測等關鍵技術設計虛擬毛澤東故居系統(tǒng),系統(tǒng)通過虛擬搖桿控制移動操作實現環(huán)境漫游及場景切換,展示室外構造及周圍環(huán)境的功能。系統(tǒng)設計簡單方便,開發(fā)成本低,場景的真實感和交互性在Android移動終端完全能夠滿足用戶需求。
基于Android虛擬現實系統(tǒng)設計,探索了通過可游、可視、可互動、可聽的有趣虛擬展示方式讓用戶感受良好的情境體驗,更有助于用戶的信息感知。同時也是對毛澤東故居歷史文化傳播方式的新探索。虛擬現實技術時代的出現,將給各個領域帶來全新的體驗和變化,推動了新時代的經濟發(fā)展,并且給人們帶來生活方式的改善和社會的進步。
[1]金璽曾.Unity 3D手機游戲開發(fā)[M].北京:清華大學出版社,2013.
[2]黃濤. 基于Unity3D的虛擬校園漫游系統(tǒng)的研究和實現[D].桂林:廣西師范大學,2014.
[3]王星捷,李春花.基于Unity3D平臺的三維虛擬城市研究與應用[J].計算機技術與發(fā)展,2013,23(4),241-244.
[4]胡傳志,程顯毅,曹小峰.網絡敏感信息自適應多重過濾模型研究[J].計算機科學,2015,42(1):272-275,307.
[5]張瑞昕,卜方玲.一種適用于多數據鏈網絡的信息過濾轉發(fā)策略 [J].計算機工程與應用,2015 (8):89-91,112.