米丹,王琴,王春潔
(四川大學錦城學院,成都611731)
近年來,科技的飛速發(fā)展同時也使得虛擬現(xiàn)實技術不斷發(fā)展,其科技性、藝術性以及真實性引起了全球的關注,如今其應用的范圍已經(jīng)極其廣泛。在房地產(chǎn)方面,虛擬現(xiàn)實技術也是將其作用與優(yōu)勢發(fā)揮得淋漓盡致,通過虛擬現(xiàn)實技術進行樣板房的近似真實地漫游,使用戶切實地感受與體驗,并且虛擬現(xiàn)實技術模擬天氣、晝夜等特殊環(huán)境與情景,使場景更加真實。
本項目主要實現(xiàn)的有:
(1)第一人稱的漫游。在近乎真實的三維場景中,通過手柄控制進行瞬移,達到前進、轉身、后退等效果;同時頭戴式設備根據(jù)體驗者轉身等,改變視角觀看內容;
(2)人機交互設計。用戶在三維虛擬場景中通過瞬移進行漫游,當靠近交互對象,使用手柄扳機按下即可對物體進行抓取查看;提供交互界面,通過手柄射線檢測顯示選中的logo,開啟地板材質切換功能,選擇材質進行切換;為場景添加粒子系統(tǒng)與晝夜系統(tǒng),模擬現(xiàn)實世界的下雪場景,以及體驗晝夜變化。
(3)高清渲染導出。使用Lumion3D 可視化工具,將3DS Max 中的模型打包導入其中,通過使用快如閃電的GPU 渲染技術,實時編輯3D 場景,并且最終使用內置的視頻剪輯器創(chuàng)建視頻導出。
(1)沉浸式虛擬現(xiàn)實頭戴設備HTC VIVE
HTC VIVE 是由HTC 與Valve 兩家公司聯(lián)合研發(fā)出的虛擬現(xiàn)實產(chǎn)品,分為三個部分達到給用戶沉浸式的體驗:1 個頭戴顯示器,2 個激光傳感定位器,2 個手柄控制器;其中頭戴顯示器通過左右眼觀看不同顯示屏蔽達到雙目3D 疊加后的視覺效果,采用OLED 液晶屏作為頭盔顯示器的屏幕,該屏幕雙眼合并的有效分辨率高達2100×1600 像素,其清晰的分辨率有效地降低了畫面的顆粒感,即使近視400 度左右的用戶在沒有佩戴眼鏡的情況下,也可以清楚地看到畫面中的細節(jié);2 個手柄有多個功能按鈕,通過判斷是否按下的狀態(tài)信息來實現(xiàn)豐富的交互功能;2 個定位系統(tǒng)采用的是Value 公司的Lighthouse 作為產(chǎn)品的特有定位系統(tǒng)控制器,Lighthouse 由兩個基站構成,其主要原理是通過發(fā)射的激光和光敏傳感器之間的相互交互來確定物體的運動軌跡和位置,從而得到六自由度信息[1]。
(2)Unity3D 開發(fā)引擎
本項目的實現(xiàn)是基于Unity3D 平臺完成的,Unity3D 是由Unity Technologies 開發(fā)的一個讓玩家輕松創(chuàng)建諸如三維視頻游戲、建筑可視化、實時三維動畫等類型互動內容的多平臺的綜合型游戲開發(fā)工具,是一個全面整合的專業(yè)游戲引擎;其官方資源商店中的可用資源,包括插件以及粒子效果等都使開發(fā)者能夠更好地對Unity3D 項目的制作進行深刻的理解。
前期根據(jù)實際情況,確立場景的面積大小,建筑風格,交互功能設計想法以及視頻制作方法等,在收集相關樣板間資料以及學習制作模型后,創(chuàng)建島嶼以及透明落地窗式兩層小型建筑,豐富室內家具以及擺件。建模常見軟件有多種,例如3DS Max、Maya 等,每個軟件有各自的優(yōu)點和缺點,3DS Max 在建筑效果行業(yè)使用更加廣泛,操作流程相對熟練,所以在該項目中使用3DS Max 進行建模。主要按照實際大小比例進行模型創(chuàng)建,樣板間以簡潔大方風格呈現(xiàn),材質主要以淺色木材、弱反光金屬以及乳膠漆等清新材質為主。導出fbx格式文件效果如圖1 所示。
圖1 樣板間整體框架
HTC VIVE 手柄和頭戴顯示器將數(shù)據(jù)傳遞回電腦,結合HTC VIVE 基站定位技術,使游戲中的場景和物體的運動軌跡和現(xiàn)實世界保持一致[2]。下載SteamVR與VRTK 插件資源包,將資源導入Unity3D 中,在PC端上安裝Steam 平臺,連接配置軟硬件。HTC VIVE 中定位器將根據(jù)用戶設置的碰撞邊界,當用戶在現(xiàn)實世界中太靠近時,對用戶進行提示。最后,利用SteamVR與VRTK 提供的C#接口以及邏輯控制腳本即可實現(xiàn)部分基礎功能。
用戶體驗在三維虛擬場景中的移動旋轉,并且走進對象進行抓取查看。實現(xiàn)瞬移通過SteamVR 與VRTK 的集成:創(chuàng)建空物體命名為VRTK_SDKManager,用來管理任何進行設置的VRTK_SDKSetup,VRTK_SDKManager 對象下創(chuàng)建兩個子物體命名為Leftcontroller 和RightController,利用VRTK_Controller Events、VRTK_Pointer 以及VRTK_Straight Pointer Renderer 腳本對左右手柄進行配置,最后空對象PlayArea通過VRTK_Basic_Teleport 實現(xiàn)瞬移區(qū)域的設置。
對物體的抓取在瞬移的功能基礎上實現(xiàn),在Left-Controller 和RightController 對象上添加VRTK_Interact Grab、VRTK_Interact Touch 以 及VRTK_Interact Use,表示此控制器可以進行抓取、觸碰、使用。
(1)場景跳轉
該功能通過視線碰撞檢測實現(xiàn)。用戶進入碰撞范圍內,并且當視線看向凝視圖標時,開始加載進度條,若成功將進行場景的切換。代碼思路流程圖如圖2所示。
圖2 凝視功能流程圖
(2)控制電視的播放,通過手柄發(fā)出射線,碰撞檢測電視屏幕上的“開始播放”按鈕,進行視頻播放,同樣可以進行暫停以及繼續(xù)播放。利用C#腳本進行控制,腳本中包含一系列的邏輯代碼以及調用操作。
借助Unity 的shader 中的Unlit/Texture,將ogv 格式的視頻綁定到此類shader 的材質球上,通過腳本控制交互,再利用canvas 新建pannel 作為視頻的播放介質,將綁定了目標視頻的材質球綁定到image 屬性里,并且為了控制交互,再為其添加button 組件,當button按鈕被觸發(fā)時,綁定腳本中的自定義函數(shù),實現(xiàn)視頻的播放。
在自定義函數(shù)中,聲明了image 屬性的moviePanel視頻播放面板以及MovieTexture 格式的視頻,通過(MovieTexture)moviePanel.material.mianTexture 方 法,獲取材質中綁定的目的視頻,存入變量,如果視頻正在播放,則將其暫停,如果處于暫停,則恢復播放。
(3)地板材質切換,通過被選擇的按鈕進行觸發(fā),手柄發(fā)出的射線點擊按鈕,出現(xiàn)材質列表,用戶選擇材質,地板將切換到相應的材質,腳本的控制和UI 界面同時設計實現(xiàn)該功能的效果。腳本主要代碼如下:
//創(chuàng)建材質容器列表,材質按鈕原型
public FloorMatData[]MatdataList;//材質數(shù)據(jù)
private bool isOpen=false;//材質列表是否打開
public Transform matUIContainer;//材質列表容器
public GameObject matButtonPrefab;//材質按鈕原型
//初始化函數(shù):遍歷生成材質列表容器中的材質,保證八種材質都被生成且不重復;
//設置logo 的動態(tài)動畫,使用戶能夠更容易看到,提升體驗感。在設置按鈕的動畫功能中,泳道了DOTween 插件,其中Append 方法使按鈕在調用一次后產(chǎn)生補充動畫,參數(shù)t1,t2 的scale 不同,然后使用SetLoops(-1)進行無線循環(huán),這樣使得Append(t1)和Append(t2)不斷循環(huán),按鈕大小交替,產(chǎn)生動態(tài)跳動效果;
Sequence seq=DOTween.Sequence();
Tween t1=matListButton.transform.DOScale(Vector.one*1.2f,0.5f);
Tween t2=matListButton.transform.DOScale(Vector.one,0.5f);
seq.Append(t1);
seq.Append(t2);
seq.SetLoops(-1);
//當用戶點擊材質列表中的材質對地板進行材質切換時,如果用戶所選是列表中的材質并且當前地板不是該材質,那么將該材質通過獲取地板的Renderer 組件中的material 方法賦予地板;
private void onMatButtonClick(GameObject button)//材質按鈕點擊處理函數(shù)
最后為logo 按鈕綁定Onclick 事件。
(4)晝夜系統(tǒng)
晝夜系統(tǒng)使用lens flare 組件調節(jié)太陽光的顏色以及光暈,模擬現(xiàn)實世界太陽光的變化。通過太陽圍繞場景旋轉一周進行日落日出的實現(xiàn)。核心代碼如下:
(5)粒子系統(tǒng)表示三維計算機圖形學中模擬一些特定的模糊現(xiàn)象的技術,在三維空間渲染出來二維圖像,由粒子發(fā)射器、動畫器以及渲染器三個獨立部分構成。在本項目中使用粒子系統(tǒng)模擬雪景,產(chǎn)生真實而又帶有隨機性的效果。
(6)動畫視頻渲染導出
最后,利用一款Lumion 渲染軟件將Unity 中整體場景導入其中,Lumion 是ACT-3D 公司推出可視化三維軟件,可用來制作影視動畫和建筑效果圖。通過導入主流3D 制作軟件所創(chuàng)建的模型和材質后,結合軟件自帶的場景模塊,創(chuàng)建立體逼真的自然景觀。優(yōu)秀的圖像質量,高效的運算渲染速度,實時3D 場景編輯功能,短時間內就能創(chuàng)造出驚人的可視化3D 景觀效果,Lumion 現(xiàn)已成為影視后期制作的一大利器[3]。
選擇渲染風格以及放置小擺件等,對場景進行豐富,保證后期制作的美觀性。利用Lumion 導出視頻。
本次項目通過對虛擬現(xiàn)實樣板間漫游的研究和實現(xiàn),利用3DS Max 進行建模場景搭建,并在Unity3D 中結合虛擬現(xiàn)實技術實現(xiàn)樣板間的漫游以及一系列人機交互設計。構建出的交互系統(tǒng)逼真,且在日后房地產(chǎn)以及虛擬現(xiàn)實技術的發(fā)展中比較具有意義。在本次設計中,系統(tǒng)交互功能不夠完善和豐富,在今后的研究中將豐富交互邏輯以及數(shù)據(jù)庫連接實現(xiàn)動態(tài)存取等內容。
圖3 Lumion渲染效果