VR實現空間定位的7種利器(上)

雷鋒網 於 19/04/2016 發表 收藏文章
按:本文作者王鋭,VR行業資深從業者。

現有的VR體驗館的構建卻還缺少了最重要的一環,就是廉價而靈活準確的定位方案。本文將據此闡述一些已有方案的優劣。本文分上下篇。

缺失的一環

虛擬現實颳起的風暴如今已經愈演愈烈,從形形色色的頭盔和眼鏡,到各種奇思妙想的交互設備,再到內容製作和建立體驗館的嘗試。越來越多的VR相關從業者和創業者都將The Void,Zero Latency等前輩作為自己下一步趕超的目標,發出了開發VR主題公園,或者VR主題體驗解決方案的宣言。

然而,從宏觀的角度來看,整個行業也並非發展的一帆風順:VR頭盔和眼鏡的水準參差不齊,主流產品(例如OculusVR和HTC Vive)尚未完全展開消費者市場;VR對系統配置的要求很高,相關設備隨身穿戴不易,而移動端設備的渲染則多半力有不逮;而針對體驗館的交互內容如何製作,互動方式如何設計,也有諸多不甚明朗的地方。而除此之外,VR體驗館的構建卻還缺少了最重要的一環,就是廉價而靈活準確的定位方案。

這裏所説的定位,就是確定體驗館中的參與者在場館中的絕對空間位置,並反饋到所有參與遊戲的玩家和遊戲服務器上,進而執行羣體遊戲所必需的各種遊戲邏輯。
例如,當一位玩家靠近樹林的邊緣時,一頭蓄謀已久的餓狼會猛然撲出來;又比如多位玩家展開一場虛擬現實的真人CS大賽,互相射擊與開展戰術。如果玩家在遊戲場地內的位置無法得到有效識別,那麼相應的樂趣和複雜度自然也就少了很多,也許只是來一場第一人稱的定點射擊遊戲而已。而定位的精度和速度也絕對不容忽視,20cm的誤差也許就決定了射出的子彈是否能穿透虛擬敵人的胸膛,而定位本身帶來的延遲,同樣也會給虛擬現實玩家的現場感帶來巨大的影響,甚至成為3D暈動症的幫兇。


然而,縱觀現在市面上形形色色的VR空間定位方案,卻並沒有哪家能夠提供足夠成熟穩定的技術實現,亦或者用巨大的成本以及靈活度的喪失作為代價,構建並不成功的Demo作品。這樣的程度恐怕還遠遠不能稱之為解決方案,也遠遠無法滿足眾多體驗館從業者的胃口。那麼,好的定位方案應當以怎樣的標準作為自己的目標?整個行業缺失的救世主又是否已經到來呢?本文將嘗試對此略加闡述。

(一)體感攝像頭

去年底,日本新宿的繁華地段進行了一次為期只有一天的VR體驗,通過頭戴Gear VR顯示一個虛擬雪山場景,同時搭建了實體的吊橋道具,並通過風扇和冷空調來模擬寒冷的山巔環境。體驗者在吊橋上戰戰兢兢地前進,最終在場地的終點位置拿到屬於自己的獎品——來自經銷商的一杯熱飲。


(Via v7.pstatp.com

這個體驗遊戲的複雜度並不高,收效卻十分顯著。而其中不可或缺的一環就是判斷玩家在吊橋上行走的位置,然後對Gear VR中渲染的場景做出對應的處理。而在同一個宣傳視頻中,我們不難發現這樣一絲端倪:


(Via v7.pstatp.com

很顯然這是一台微軟的Kinect2體感設備,它可以通過TOF(飛行時間)計算的方法,獲取傳感器出射光線遇到物體反射後的相位差,從而得到設備與實際場景之間的距離值,也就是深度值(depth)。由此形成的深度圖像不僅可以用來判斷物體相對體感設備的位置,還可以進一步得到物體的點雲數據,甚至是角色的骨骼信息。最重要的是,Kinect2本身只是XBox One遊戲機的可選外設,因此要買到它並且用來做VR內容的簡單空間定位,絕不會花費太多的成本。


(Via edgefxkits.com

不過,物美價廉的對立面就是差強人意的性能參數,30fps的刷新頻率必然讓人能夠比較明顯地感受到定位結果的延遲(雖然這種延遲相比頭盔的延遲來説,給人的影響更小),並且Kinect的視場角只有60度左右,最大識別範圍一般來説為3-4米。在這個區域內可以識別最多6個人的位置信息,並且他們在Kinect的視場範圍內不能有太多的重疊,以免漏測(如上圖所示)。顯然,這些苛刻的限制條件讓我們很難想象出一個比爬雪山喝咖啡更復雜的遊戲了,不過至少這是一個不錯的開始。

(二)光學定位與圖像識別

有一則去年的新聞,在大多數VR從業者耳中應該不會陌生:來自澳大利亞的Zero Latency成為了全世界第一家虛擬現實遊戲體驗中心,它佔地400平方米左右,由129個PS Eye攝像頭組成,同時支持6名玩家同場進行遊戲……


沒錯,這個體驗中心相比之前的VR應用,其最大的賣點就是可以在虛擬空間中自由行走。而PS Move設備(包括PS Eye攝像頭,以及裝備了標記光球的Move手柄)則是這一技術的核心所在。


如之前的遊戲效果圖所示,不同顏色的光球在PS Eye攝像頭中可以呈現出顯著不同於背景畫面的圖像,從而方便我們通過計算機視覺(CV)算法將它提取出來。當然,僅有一個PS Eye攝像頭的話,是無法得到玩家的三維空間信息的。此時需要有不止一個攝像頭去捕捉玩家的光球在屏幕空間的位置,然後通過空中三角測量的算法,取得玩家在世界座標系當中的真實位置。


這裏自然又帶出了兩個不小的問題

引用一、如何準確而穩定地從攝像頭畫面裏判斷和區分不同的光球(標記點);

二、如何知道攝像頭本身在世界空間的位置和姿態,從而正確推算玩家的位置和姿態。

為了解決這裏所述的第一個問題,已經足夠讓無數開發者絞盡腦汁、前赴後繼了。通過顏色來區分標記點的方案當然是可行的,不過如果攝像頭裏出現了另一種類似顏色的干擾物呢?或者現場就是一片花花綠綠的環境怎麼辦?這種時候,誤識別恐怕是很難避免的。因此,一批光學動作捕捉供應商站了出來,他們選擇採用紅外攝像頭作為識別的替代方案。

這裏當然首推老牌的OptiTrack,他們採用了幀速率大於100Hz的專業攝像頭,並且採用了全局快門系統,因而有效避免了高速運動的物體在畫面上出現運動模糊的現象。在攝像頭的周圍採用紅外LED進行補光,並且採用高反射率的材質來製作玩家佩戴的標記點。因為紅外攝像頭本身已經屏蔽了大部分的可見光信息,因此標記點在畫面中就會顯得分外明顯。除非有人用另外的紅外光源來進行干擾,否則幾乎不可能出現誤判斷的情形。

根據目前已知的一些信息,包括The Void主題公園,以及諾亦騰的Project Alice,都是採用了OptiTrack的空間定位方案,這也無疑證明了這種方案的可靠性。只是與之相對的,往往是高昂的成本(如下圖,一台攝像頭的價格都是以數萬人民幣計算的,而構建一個規則空間起碼需要4台這樣的攝像頭,以及軟件系統)。


(Via www.optitrack.com

不過,既然使用了不發光的標記球替代PS Move的光球方案(這樣的另一個好處是,不用考慮怎麼給標記球供電的問題),那麼如何區分標記球的ID,進而區分遊戲中的多個玩家呢?方法也有多種,例如通過對反射率的調整,讓標記球在攝像頭畫面中顯示不同的亮度;或者採用不同的組合方式,讓一組光球在畫面中呈現出唯一的組合形態,如下圖所示:


(Via www.chingmu.com

而之前所説的第二個問題:如何知道攝像頭本身在世界空間的位置和姿態。事實上是通過預先標定(calibration)的方式來完成的。體驗館的搭建者預先將每台攝像機安裝到固定的位置,然後逐一觀察它們的畫面顯示。通過已知位置姿態的一些標記物來推算每台攝像機的位置姿態,並且保存下來。這一過程無疑是繁瑣而枯燥的,尤其當你需要動輒配置上百台攝像機的時候。而設置完成之後,如何避免攝像機被再次移動,或者因為場館結構問題而發生震動和偏移,這又是每一位開發者所不得不面對的設備維護難題。

不過,因為光學定位的方法具有相當的準確度和穩定性,通過攝像頭參數的調校也可以達到很低的延遲,並且在理論上可以擴展到無限的空間,因此它也確實成為了目前很多VR體驗館搭建者的首選。然而,通過標記點來識別多名玩家還是具有很大的侷限性,因為標記點不可能無限組合下去,兩組標記點靠得過近的話(例如背靠背作戰的兩位玩家),也很容易發生誤測或者無法識別的情形。此外,過於複雜的場館環境也會讓標記點更容易被障礙物遮擋,從而發生漏測問題,因此目前我們所見的多家採用光學定位的體驗館,都是在一個空曠的規則房間內進行遊戲的。

(三)激光雷達

激光本身具有非常精確的測距能力,其測距精度可達毫米,一般常見的是日本HOKUYO北陽電機和德國SICK西克等專業領域的大廠所產的二維激光雷達。

二維的意思也就是這樣的激光雷達所發出的光是一個扇形平面,而各種用來做測繪用途或者建築業用作三維重建的三維激光雷達,則是這樣的二維激光雷達又加了一個維度做旋轉,從而得到三維空間的結果。


激光雷達包括一個單束窄帶激光器和一個接收系統。激光器產生併發射一束光脈衝,打在物體上並反射回來,最終被接收器所接收。接收器準確地測量光脈衝從發射到被反射回的傳播時間,即TOF(Time of Flight)。因為光脈衝以光速傳播,所以接收器總會在下一個脈衝發出之前收到前一個被反射回的脈衝。鑑於光速是已知的,傳播時間即可被轉換為對距離的測量。因為是以光速為尺子來測量的,所以激光雷達的精度一般都相當的高,在室內場合下用,誤差都在毫米級別。

二維激光雷達實際上也是由一維的單束激光器在一個旋轉底座上旋轉起來所形成的扇面,一個二維激光雷達可以以自已為中心,以幾十米為半徑畫扇面進行測量,所以如果在這個區域內有人活動的話,激光雷達就可以精確的知道一個人的位置並輸出給電腦使用。當然,激光雷達通常也可以用做機器人研究的避障傳感器。

旋轉底座旋轉的快慢也是分很多規格的,因此激光雷達也會有掃描頻率的區分,正常來説,幾十赫茲的掃描頻率足夠我們在VR當中做位置探測來用了。


但是激光雷達的工作原理對元器件要求高,通常又是工作在非常嚴苛的條件下,本身就要求防水防塵和數萬小時無故障的高可靠性。因此生產成本並不便宜。而且掃描頻率越高,探測距離越遠(也就是發射功率越大)的激光雷達,價格也就越貴。所以二維激光雷達的價格就已不菲(近萬元到數萬元不等),而用作測繪的機載三維激光雷達就不是一般人能問津的了(幾十萬至百萬)。

除了價格因素,激光雷達用作定位還存在一個主要的問題是: 因為從激光器發出的是一個扇形光,所以如果有一大堆運動物體互相擁擠着在一起的時候,互相會有遮蔽,後邊的物體處在前邊物體的“陰影區”當中,導致探測不到。而且激光雷達只能測距,不能識別物體的ID,因此,就算不考慮價格因素,也比較適合單人情況下玩耍,如果想要羣體的話,還是得采用其他方案。

(四)HTC Vive:Light House

這段時間裏,HTC Vive的發售成為了整個業界的一大新聞。而它所採用的一種不同於光學的定位方式也是人們津津樂道的地方。HTC Vive包括三大部分,本身佈滿了紅外傳感器的頭盔和手柄,以及用作定位的Light House。遊戲者預先將Light House佈置到一個空屋子的兩個角落中,這兩個Light House相當於兩個固定的激光發射基站,如下圖所示。


Light House的後蓋打開後,裏面這樣的:


那片密密麻麻的LED就是用來同步的光束。兩個圓柱體則是旋轉的一字激光器。一個是X軸掃掠,另一個是Y軸掃掠。兩個激光器有固定的180度相位差,也就是説,A亮的時候B不亮,B亮的時候A不亮。

而手柄和頭盔上都有固定位置安裝的光敏傳感器:


這套系統的具體工作流程分為三步:

1、同步:LED燈板整體亮一次,手柄和頭盔的傳感器一起被照射,作為同步信號。

2、X軸掃描:橫向的一字激光器照射手柄和頭盔上的光敏傳感器。

3、Y軸掃描:豎向的一字激光器照射手柄和頭盔上的光敏傳感器。

頭顯和控制器上安裝了很多光敏傳感器。在基站的LED閃光之後就會自動同步所有設備的時間,然後激光開始掃描,此時光敏傳感器可以測量出X軸激光和Y軸激光分別到達傳感器的時間。

換句話説,激光掃掠過傳感器是有先後順序的,因此頭顯上的幾個傳感器感知信號的時間存在一個先後關係,於是各個傳感器相對於基站的X軸和Y軸角度也就已知了;而頭顯和手柄上安裝傳感器的位置已經提前標定過,位置都是固定的。這樣根據各個傳感器的位置差,就可以計算出頭顯和手柄的位置和運動軌跡了。

Light House的最大優勢在於,它需要的計算量非常少。這就不像CV視覺系統那樣需要先成像,然後通過軟件將成像中的特徵分辨出來,成像的細節越豐富,需要的圖像處理能力就越高。Light House使用的僅僅是光敏器件,無需成像,也就不涉及到大量計算和圖像處理,避免了性能損耗和不穩定的可能。

另一方面來説,計算量大往往也就意味着延遲會更高,而且無法經由嵌入式處理器來完成運算。而Light House因為運算量小,因此嵌入式系統可以自己計算和處理,再直接將位置數據傳輸到PC上,節約了大量耗費在傳輸和處理上的延時。

不過,雖然Light House是迄今為止體驗最好的VR交互定位設備,但是因為激光對人眼安全照射功率的限制等問題,它能夠覆蓋的距離比較有限,大概也就是5M* 5M 見方的一個區域,並且不能有過多的遮擋物導致接收不到信號。並且這種設備的安裝調試還是比較繁瑣的,對於一般用户來説可能還是比較困難的。

未完待續。


資料來源:雷鋒網
作者/編輯:王鋭

留言


請按此登錄後留言。未成為會員? 立即註冊
    快捷鍵:←
    快捷鍵:→