VR Room


Implementation of Interactive and Realistic Application on Virtual Reality System

Find Out More

計畫動機


       空間共享是人與人互動最自然的情境,帶來面對面交流的真實感。然而,現今透過網路的互動方式,因為受限於設備而無法達成,所以我們決定利用VR技術,突破時空限制,使分隔兩地的人,也能在空間共享的情境下互動。
       因此,我們希望在虛擬的空間中,融入生活中的互動,並且將人物模型貼近使用者的模樣,讓大家能透過VR Room,在虛擬的空間中也能實現聊天、娛樂等多元的互動;搭配投影機、黑板等功能,我們也希望能開發全新的線上會議模式,讓使用者能在VR內自由地討論,改善現今用文字、語音線上開會效率不佳的問題。

軟硬體設備


Build Model

        我們首先使用iPad搭載Occipital’s Sensor掃描頭部以建立真人頭部模型, 接著使用Make Human建立人體模型, 再將頭部模型以及人體模型一併匯進Blender進行裁切與編輯。

Develop

        我們使用Unity3D進行開發,連線的部分使用Photon Unity Networking

VR

        我們使用的VR設備是HTC Vive,是目前最高規格的VR,Vive使用兩個光屋來偵測使用者的移動,能夠在虛擬世界中,利用肢體動作與他人進行互動。



系統概觀


       進入VR Room後,首先會進入選單畫面,使用者可以在這裡選擇自己的性別,同時系統會自動偵測使用者的身高,以套用於角色模型上。 確認角色模型後會與遠端server連線,接著進入主要場景。在場景中有許多可互動的道具,道具類別大致分成會議以及娛樂功能,使用者可以透過道具與他人進行互動。

會議功能


       會議功能藉由圖像和文字的輔助增進語意的表達,讓彼此更自由地交流想法。我們的會議功能有投影片以及黑板兩個子項目, 投影片需預先以圖片的格式放在指定目錄下,以供系統讀取,讀取成功的圖片將在投影幕上顯示。當使用者拿起簡報筆後,可藉由按鍵控制投影片播放,簡報筆亦備有雷射功能可使用。 黑板透過拿起和移動粉筆在黑板上畫畫寫字,有白、黃、粉紅三種顏色的粉筆可以選擇,可使用板擦擦拭筆跡。



娛樂功能


       撲克牌:桌上有一個撲克牌盒,可透過它進行發牌與收牌,發完牌後可以自由拿起和移動撲克牌來進行遊戲。右手一次只能拿取一張牌,而左手可以一次拿取多張撲克牌,撲克牌會呈現扇形並自動排序。當右手碰觸到扇形中的任一張牌時,該牌會顯示黃色邊框以方便檢視,右手可以隨意拿取左手牌堆中的任一張牌,也可以將任一撲克牌放入左手的牌堆中。
       敲敲樂:敲敲樂遊戲規則為拿起槌子敲擊圓柱體,目的是在不讓其他圓柱體倒下為前提,成功將目標圓柱體打擊出去。操作方式十分直覺,拿起鎚子敲擊圓柱體即可。
       保齡球:房間內有一開放式的保齡球道,可自由遊玩。擊倒球瓶後,球瓶與球會自動重置。





連線架構


       我們使用Photon Unity Networking (PUN)實作連線功能。PUN提供免費的雲端伺服器,最多能同時20人連線。在角色位置連線上(包含頭戴顯示器和手把位置的連線),我們採用串流傳輸方法 (OnPhotonSerializeView),此方法只限擁有物件控制權的一方傳輸資料,並在數值更改時才傳,所以能避免過多的傳輸量。 但是對於所有人都可控制的物件,例如撲克牌、粉筆等等,為了讓資料傳輸可以雙向進行,則是利用 Remote Procedure Calls (RPCs)與其他玩家互通資訊,達成同步。 而為避免多人同時控制同一物件造成衝突,唯有當下的拿取方才具有控制權,但便造成物件間的碰撞無法同步。我們的解決辦法是指定Master Client具有碰撞的主導權,並不斷偵測任何未被拿取物件的速度是否為零,若不為零則表示有碰撞發生,便由Master Client傳送此速度給所有人,達到碰撞的同步。

擬真技術


       我們在人體模型上使用反向運動學(Inverse Kinematics,IK),利用手腕的位置,帶動手臂的移動,也能透過頭戴式裝置判斷頭的旋轉。 較無法克服的是雙腳的位置,因為無法從任何感應器得知使用者雙腳移動情形,目前的解決方法是在前進和後退時套用相對應的腳部動畫。

Demo!

Let's Get In Touch!