3
本文作者: 王銳 | 2016-06-01 10:17 |
雷鋒網(wǎng)按:作者王銳,VR行業(yè)資深從業(yè)者。在本文討論“如何用極客范兒打造HTC Vive虛擬演播室”之前,王銳還曾寫過一篇廣受歡迎的《如何用極客范兒做一款VR頭盔?不是插個(gè)手機(jī)的那種》,有興趣的讀者可以看看。那么,打造HTC Vive虛擬演播室的原理是什么?本文將會(huì)給你答案。
HTC Vive如期在四月份開始供貨以來,已經(jīng)有相當(dāng)一部分嘗鮮者拿到了第一批產(chǎn)品,由虛擬現(xiàn)實(shí)頭盔,手柄以及Lighthouse定位裝置組成的完整的VR互動(dòng)體驗(yàn)也著實(shí)讓從業(yè)者和玩家們感到興奮。當(dāng)然,從現(xiàn)階段來看,針對(duì)Vive的內(nèi)容還遠(yuǎn)未到位,很多游戲體驗(yàn)還處在預(yù)告或者試玩的階段;更大的一波攻勢(shì)怕是還在路上,即將到來。
而在這為數(shù)不多的初期體驗(yàn)當(dāng)中,有一則有趣的新聞吸引了筆者的注意。
對(duì)于游戲者本人而言,她所看到的內(nèi)容并沒有什么實(shí)質(zhì)的變化,只是在進(jìn)行一個(gè)VR游戲并與其中的內(nèi)容和角色進(jìn)行互動(dòng)(例如下圖中的小女孩正在嘗試用手柄“吸引”電子寵物)而已。而讓人感到嘖嘖稱奇的是,現(xiàn)場(chǎng)觀眾可以通過直播畫面看到如下的情景(圖片來自相關(guān)新聞的視頻截圖):
而實(shí)際的拍攝場(chǎng)地,則類似下圖的布置,游戲者在一片綠色幕布的包圍下開心地進(jìn)行玩耍,而手持?jǐn)z像機(jī)的工作人員則將她的現(xiàn)場(chǎng)表現(xiàn)通通記錄下來,再與第三人稱視角的VR游戲場(chǎng)景直接疊加,讓其他也許正在排隊(duì)等待的人能夠更真切地目睹游戲中的一切,以及預(yù)想自己即將在別人眼中呈現(xiàn)出來的英姿(或許是丑態(tài)也說不定)。
這無疑讓一個(gè)可能的線下VR體驗(yàn)館變得熱鬧了許多,而且對(duì)于難得參與一次VR重度游戲的孩子而言,也是一次重要的經(jīng)歷,值得用這種直觀的方式記錄下來,回去慢慢品味。
那么問題就來了,這個(gè)看起來十分炫酷的游戲方式,在現(xiàn)實(shí)中有可能實(shí)現(xiàn)嗎?還是說這只是為了宣傳而專門拍攝的畫面而已,或者只能專屬于一些領(lǐng)先的國(guó)外技術(shù)團(tuán)隊(duì)呢?
就讓我們?cè)俅闻e起極客的大旗,去努一努力好了。
首先,前文所述的種種并不是多么高深的“黑科技”,它事實(shí)上源于一個(gè)現(xiàn)實(shí)中已然到處存在的視頻制作技術(shù)——虛擬演播室(Virtual Studio System,簡(jiǎn)稱VSS)。
這一技術(shù)的本質(zhì)是將計(jì)算機(jī)制作的虛擬場(chǎng)景(通常是三維場(chǎng)景)與現(xiàn)場(chǎng)拍攝的實(shí)時(shí)活動(dòng)畫面進(jìn)行疊加,并且確保兩幅畫面的運(yùn)動(dòng)與透視關(guān)系完全一致,從而自然和迅速地得到了虛實(shí)結(jié)合的畫面效果。在這類應(yīng)用當(dāng)中,通常會(huì)采取前景和主持人為真實(shí)拍攝,而千變?nèi)f化的背景通過計(jì)算機(jī)實(shí)時(shí)演算生成的結(jié)合手段,并將疊加完成的效果傳遞到電視信號(hào)。例如:
很顯然主持人并不是真的站在這么一個(gè)抽象數(shù)字和圖形組成的空間里。要隨著我國(guó)的GDP突飛猛進(jìn)而經(jīng)常更新直播間的室內(nèi)裝潢,這也遠(yuǎn)不如在計(jì)算機(jī)上動(dòng)動(dòng)手指來得有效率。所以,實(shí)際的拍攝場(chǎng)地往往可能是這樣的布置:
或者也常使用藍(lán)色的背景:
要在這樣的場(chǎng)地條件下談笑風(fēng)生,還真是對(duì)演員和嘉賓能力的一種考驗(yàn)了。而這樣的演播過程同樣包含了對(duì)大量設(shè)備與技術(shù)的集成和應(yīng)用,僅僅掐指一算,就有虛擬場(chǎng)景設(shè)計(jì)與實(shí)現(xiàn),燈光,實(shí)時(shí)摳像,攝像機(jī)跟蹤,色鍵合成,視頻合成,實(shí)時(shí)轉(zhuǎn)播等種種門類涵蓋在其中。要想在這一篇短文里把它們都講解清楚,恐怕非筆者力所能及,也非本文所能容納的了。
不過,僅僅是針對(duì)我們?cè)谖恼麻_頭的需求,還是大有工夫可做的。那么我們就來思考第一個(gè)問題,也許也是虛擬演播室技術(shù)實(shí)現(xiàn)中最為核心的一個(gè)問題:電腦生成的背景,與氣定神閑的演員,是怎么疊加在一起的?
主持人或者演員的表演是怎么被記錄下來的,這一點(diǎn)不用多說,自然是通過攝像機(jī)進(jìn)行拍攝,然后輸出直播畫面或者錄制到文件再做處理,所以這并非我們所關(guān)注的重點(diǎn)。至于為什么演員的前后左右都要用純粹的綠色或者藍(lán)色伺候,這是我們稍后將會(huì)討論的話題。而在此之前,我們需要引入一個(gè)也許并不陌生的概念——虛擬攝像機(jī)(virtual camera)。
當(dāng)然,這里要說的絕不是VR全景攝像機(jī)的概念。我們所指的恰恰是不存在于現(xiàn)實(shí)當(dāng)中的攝像機(jī)設(shè)備,它存在于我們的游戲場(chǎng)景里,就仿佛是在游戲場(chǎng)地中架設(shè)了一臺(tái)攝像機(jī),將走過路過的主角和敵人,以及他們之間的恩怨情仇統(tǒng)統(tǒng)拍攝下來,就像是拍攝動(dòng)物世界的紀(jì)錄片那樣。
這樣很酷,不過既然是攝像機(jī),那么它自然也應(yīng)當(dāng)具備真正的攝像設(shè)備的基本參數(shù)了,例如鏡頭焦距,景深,視場(chǎng)角(FOV),最關(guān)鍵的是,這臺(tái)攝像機(jī)是放在游戲場(chǎng)地的什么位置上?又是朝著哪個(gè)方向進(jìn)行拍攝的?如果這是一臺(tái)可以運(yùn)動(dòng)的攝像機(jī)的話,那么還需要考慮它的運(yùn)動(dòng)跟蹤。當(dāng)然,用斯坦尼康之類來做運(yùn)動(dòng)拍攝時(shí)畫面的防抖處理,這樣的繁瑣需求在這里應(yīng)該是用不著了。
而對(duì)于虛擬演播室的需求來說,更重要的一條原則是:這個(gè)虛擬攝像機(jī)的光學(xué)參數(shù)與運(yùn)動(dòng)位姿,必須和拍攝演員的攝像機(jī)完全同步和一致。這樣才有可能在后面的疊加處理中做到兩幅畫面的統(tǒng)一,以及透視關(guān)系的正確性。
(Via 3dcpptutorials.sk)
聽起來很簡(jiǎn)單,但實(shí)際上這是一個(gè)不小的挑戰(zhàn)。事實(shí)上在我國(guó),長(zhǎng)期以來高端的3D虛擬演播室業(yè)務(wù)都是被Orad(傲威)等行業(yè)龍頭所占據(jù)的。為了做到上述的攝像機(jī)跟蹤的需求,他們會(huì)采用非常高精度的編碼器云臺(tái)來做角度的探測(cè),其售價(jià)通常會(huì)以20萬元起步,令人生畏。
后來也有部分高端虛擬演播室系統(tǒng)用到了計(jì)算機(jī)視覺(Computer Vision,CV)的方法來識(shí)別藍(lán)幕上的淺藍(lán)色線條,從而實(shí)現(xiàn)攝像機(jī)的運(yùn)動(dòng)和姿態(tài)探測(cè)。但是這樣做的算法并不容易,售價(jià)同樣很昂貴。
而Orad的虛擬演播室系統(tǒng)的銷售是以“信道”為單位的,之前一個(gè)信道可以賣到70萬左右的價(jià)格,而采購(gòu)是最少3個(gè)信道起價(jià)的。當(dāng)然我們也能見到售價(jià)十多萬的虛擬演播室系統(tǒng),但是其中很可能會(huì)直接無視攝像機(jī)跟蹤的需求,僅僅把實(shí)際拍攝的片子做綠幕摳像,然后導(dǎo)入到虛擬場(chǎng)景中直接疊加。合成的結(jié)果很容易讓真實(shí)的演員顯得像是早期建筑動(dòng)畫和海報(bào)里不自然的紙片人一樣。
回歸正文,如果只是確保虛擬系統(tǒng)和真實(shí)系統(tǒng)的光學(xué)參數(shù)一致的話,我們倒是可以簡(jiǎn)單地給虛擬攝像機(jī)的焦距,F(xiàn)OV等數(shù)值(盡管這樣并不準(zhǔn)確,不過多數(shù)情況下變化的幅度可以容忍)。難點(diǎn)在于攝像機(jī)的位置與姿態(tài)的跟蹤,如果用數(shù)學(xué)公式來表達(dá)的話,大致如下:
(Via slideplayer.com)
是不是有點(diǎn)似曾相識(shí)的感覺?沒錯(cuò),如果您已經(jīng)熟練地掌握了OpenVR API的使用(也就是HTC Vive的C++開發(fā)工具庫),那么想必也已經(jīng)發(fā)現(xiàn)了一個(gè)現(xiàn)成的函數(shù):
它的作用就是獲取指定Vive設(shè)備的位置和姿態(tài)矩陣,而這個(gè)設(shè)備可能是頭盔,手柄,或者是Lighthouse定位裝置。如此一來,假設(shè)我們開一個(gè)腦洞,把某個(gè)Vive設(shè)備完全綁定在真實(shí)的攝像機(jī)上的話,那么攝像機(jī)的移動(dòng)和旋轉(zhuǎn)信息就會(huì)被完整地記錄下來,并傳遞到OpenVR API以及我們自己的應(yīng)用程序里——換句話說,虛擬攝像機(jī)的位置和姿態(tài)信息也就由此被確定了。
這樣的做法事實(shí)上也并不是筆者首創(chuàng)的,國(guó)外早就有玩家把Vive的控制手柄固定在大腿上來讀取和模擬人的腿部姿態(tài)和運(yùn)動(dòng),如下面的新聞(圖片同樣來自Yivian):
當(dāng)然了,這種做法并不是沒有局限性,否則高端的虛擬演播室系統(tǒng)開發(fā)和集成廠家也都要找筆者算賬來了。因?yàn)镠TC Vive的控制器只能在Lighthouse所圈定的優(yōu)先區(qū)域內(nèi)被識(shí)別(例如5x5米),所以這種做法并不能跟隨實(shí)際的攝像機(jī)大范圍地運(yùn)動(dòng)。不過Lighthouse在理論上是可以被拼接和擴(kuò)大識(shí)別范圍的,所以不久的將來我們也許真的能夠見到基于Vive控制原理的虛擬演播室系統(tǒng)模塊也說不定。畢竟科技是飛速發(fā)展的,顛覆一些傳統(tǒng)和守舊的做法也是毫不稀奇的事情。
實(shí)現(xiàn)了虛擬攝像機(jī)與實(shí)際攝像機(jī)的同步之后,我們要面臨的第二個(gè)大問題,叫做摳像(keying)。它的基本含義是——
從拍攝的畫面中抽取某一種顏色作為透明色,即把這種顏色所對(duì)應(yīng)的像素點(diǎn)從畫面中摳掉,讓可能的背景畫面顯露出來,從而呈現(xiàn)出疊加的效果。
摳像之前的布景條件往往比較嚴(yán)格,現(xiàn)場(chǎng)會(huì)要求前景的演員和道具與背景的幕布之間區(qū)別明顯,色調(diào)也不接近,同時(shí)背景的光照要均勻布設(shè),避免有過大的陰影區(qū)域或者褶皺。而通常的摳像場(chǎng)景會(huì)選擇藍(lán)色或者綠色的幕布來作為背景,這是因?yàn)樵谌梭w上幾乎不存在這兩種顏色,因此不會(huì)出現(xiàn)錯(cuò)誤的摳掉演員本身的問題(當(dāng)然部分人的瞳孔會(huì)有綠色和藍(lán)色的色彩,此時(shí)要單獨(dú)進(jìn)行處理)。如果在場(chǎng)景中故意布置一些綠色包裹的道具,例如讓演員站在綠色的箱子上,那么摳像處理完成后就會(huì)產(chǎn)生浮空的效果,再加上計(jì)算機(jī)生成背景畫面的巧妙疊加,就會(huì)形成如今各種好萊塢大片中的特效場(chǎng)面。
這樣的話,再返回頭去看本文開頭的游戲現(xiàn)場(chǎng)布景,就不難理解他們這樣做的用意了。進(jìn)行游戲的小女孩是在綠幕構(gòu)成的環(huán)境中運(yùn)動(dòng)的,攝像機(jī)將她的一舉一動(dòng)拍攝下來,然后摳像處理將綠色的背景透明化,再與Vive游戲的畫面相疊加。因?yàn)閿z像機(jī)的位置和姿態(tài)都被傳遞到虛擬游戲場(chǎng)景當(dāng)中,因此兩幅畫面疊加的透視效果是完全一致的,再加上合適的深度遮擋判斷的話,就可以做到一種混合現(xiàn)實(shí)(Mixed Reality)一般的現(xiàn)場(chǎng)感了。
當(dāng)然,這里面有兩個(gè)重要的事實(shí)需要聲明:
一是游戲本身必須支持這種第三人稱的觀看模式,并且能夠接收來自位置跟蹤設(shè)備(例如Vive的手柄)的數(shù)據(jù)和設(shè)置自身的虛擬攝像機(jī)參數(shù)。
二是這一畫面只會(huì)呈現(xiàn)給其他的觀看者,正在進(jìn)行游戲的人看到的畫面依然是VR的第一人稱視角內(nèi)容,不會(huì)看到自己的真實(shí)形象混疊于其中。
原理既然已經(jīng)闡述完畢,下面的時(shí)間,我們就自己試做一款基于Vive的虛擬演播室系統(tǒng),當(dāng)然所有的功能都是最簡(jiǎn)的。Unity和Unreal這樣的游戲引擎在這里恐怕也起不到什么用武之地,讓C++的代碼遍地開花就好。
如何自己動(dòng)手做一款基于Vive的虛擬演播室系統(tǒng)?請(qǐng)繼續(xù)關(guān)注《如何用極客范兒打造一個(gè)HTC Vive虛擬演播室?(下)》。
雷鋒網(wǎng)注:作者王銳,本文為雷鋒網(wǎng)獨(dú)家約稿,轉(zhuǎn)載請(qǐng)聯(lián)系并保留完整信息,不得刪減、修改文章。
雷峰網(wǎng)原創(chuàng)文章,未經(jīng)授權(quán)禁止轉(zhuǎn)載。詳情見轉(zhuǎn)載須知。