如果你關心虛擬實境行業,肯定知道大名鼎鼎的HTC Vive,而除了遊戲領域的應用外,我們正在嘗試通過『虛擬實境頭顯+手柄+Lighthouse基站定位裝置』來創造出更有趣的行業應用,接下來星佳就結合國外大神和圈內從業者們一起折騰出的寶貴經驗和大家分享下如何低成本的打造虛擬演播室,同時利用直播軟體直接可以直播MR視頻:
什麼是MR(Mixed Reality)視頻?
Mixed Reality視頻就是VR影像+人的影像合成的視頻。相比普通錄製電腦屏幕遊戲畫面和遊戲者錄像實拍分屏顯示的假VR視頻,Mixed Reality視頻更適合用來做遊戲直播和製作虛擬實境應用宣傳視頻,比如著名的google tilt bursh繪畫程序,而由此帶來了很多新的可能,比如教育,多人互動,科普等等行業應用。
上面這個視頻截圖就是HTC Vive官方宣傳片的一個Mixed Reality視頻,畫面來源於官方贈送的一款叫做"The Lab"的射箭體驗遊戲,而遊戲者人的畫面是由一臺攝像機配合第三隻實體Vive手柄實時捕捉的。
因為人的影像擺放的位置,透視關係和玩家在虛擬場景中的位置,映射坐標都一樣,攝像機拍攝畫面中手拿手柄的位置和遊戲畫面中虛擬手柄的位置是完全一樣的,看起來就像體驗者身臨其境走進了一個虛擬世界,並用雙手藉助實體手柄直接和遊戲虛擬環境互動。
了解了理論知識,接下來星佳要幫大家解決的問題,原理和方案到底是如何實現的?
需要準備什麼?
硬體部分:
攝影棚:牆和地面鋪上綠布,大概6m*6m即可,同時為了實時摳像,需要布光,如果沒有專業經驗請專業的燈光師幫忙吧,星佳也是折騰了很久,因為預算有限沒辦法做到足夠完美。
幻想擁有的巨資打造的攝影棚
實際情況預算條件下搭建出的攝影棚
攝像機:
兩種方案:
像星佳一樣的窮人用網絡攝像頭就行,比如網吧的聊天攝像頭,五百塊左右的羅技就挺好,例如Logitech Webcam C930e
而如果你是土豪朋友可以買得起專業的攝像機和視頻採集卡,那麼無非效果會更贊,當然成本就貴了。看下圖:
斯坦尼康穩定器和單眼相機的土豪方案
窮逼星佳的支架單反方案(Gopro支架很好用)
星佳託朋友借了臺佳能70D,又買不起視頻採集卡(由於主機插槽不夠用,還得買外置巨貴的採集卡),所以情急之下,星佳把相機通過usb直接連接PC主機的USB3.0口,配合佳能官方的實時攝影調節套件直接可以在電腦端軟體實時調節相機參數捕捉拍攝畫面,真是小聰明啊,雖然可能燒了CMOS。
高性能主機+第三隻Vive手柄(USB延長線連接電腦):第三隻手柄的作用如上圖,綁定在佳能相機上,手柄作為作為遊戲裡的虛擬攝像機和物理環境的真實攝像機同步位置和焦距視野等數據,即可拍到正確位置的體驗者。
軟體部分:
目前只有Unity3D製作的虛擬實境程序支持MR模式,我們期待Value能夠早日攜手UE4放出來Unreal Engine for SteamVR的程序,當然SteamVR的版本得至少是1.0.8或以上哦。
OBS或者其他視頻合成軟體,用於實時獲取應用窗口和簡單摳圖。
乾貨來了,實際拍攝教程:
找到Steam安裝路徑下的config目錄,新建文件名:steamvr.vrsettings
代碼段如下:
{"camera" : {"enableCamera" : true, "enableCameraForCollisionBounds" : true, "enableCameraInDashboard" : true}, "collisionBounds" : {"CollisionBoundsColorGammaA" : 169, "CollisionBoundsColorGammaB" : 0, "CollisionBoundsColorGammaG" : 255, "CollisionBoundsColorGammaR" : 163, "CollisionBoundsGroundPerimeterOn" : false, "CollisionBoundsStyle" : 0}, "jsonid" : "vrsettings", "keyboard" : {"TutorialCompletions" : 1}, "notifications" : {"DoNotDisturb" : true}, "perfcheck" : {"heuristicActive" : true}, "steamvr" : {"allowReprojection" : true, "background" : "C:\\Program Files (x86)\\Steam\\steamapps\\common\\SteamVR\\resources\\backgrounds\\viveNight.png"}, "version" : "1"},{"steamvr" : { "activateMultipleDrivers" : true } }
2.解壓壓縮包裡的後綴為driver_null.dll的文件覆蓋到指定文件夾,
目錄C:\Program Files (x86)\ViveSetup\SteamVR\drivers\null\bin\win32 :
3.以上兩步工作做完後,啟動SteamVR軟體,在成功識別兩隻手柄後,通過USB延長線連接第三隻手柄和PC,成功出現如下的SteamVR畫面即代表配置文件生效:
4.生成externalcamera.cfg文件:
運行壓縮包裡的cameraAgn.exe文件,之後可以戴上頭盔拿起兩個手柄可以在虛擬世界裡看到第三隻綁在攝像機上的手柄,按照程序要求配置各項參數即可生成cfg文件,之後把cfg文件放在可執行遊戲程序的同目錄下即可生成傳說中的四分屏。
cameraAgn.exe運行後的四分屏界面
externalcamera.cfg文件內容:
x=0
y=0
z=0
rx=0
ry=0
rz=0
fov=60
near=0.1
far=100
以上參數只是默認值,最終要用什麼數和虛擬攝像機的參數及攝像機和第三隻手柄的擺放有關,需要在cameraAgn程序裡進行仔細的調節,同時注意在運行房間教程的時候頭盔和電腦畫面正面和反面的不同結果哦。
5.星佳測試成功的切西瓜遊戲的MR視頻截圖:
出現四分屏畫面後,基本就成功了一大半,目前此方式還只支持unity開發的程序,所以不能保證所有遊戲應用都可以通過此辦法來實現四分屏,視頻演示地址:http://dwz.cn/xingjia55220 (點擊閱讀原文也可以,或者微博搜索@星佳是個小人物)
備註:
通過四分屏最終實現輸出的影像由三個影像合成:
攝像機捕捉人的影像,覆蓋在背景上(合成視頻的背景,虛擬攝像機控制的畫面),合成視頻的前景覆蓋在背景上即可。
6.成功之後在OBS中添加視頻源(直播利用OSB設置推流地址即可成功):
①前景:
a.視頻來源選擇裁剪遊戲窗口,區域和四分屏的左上角畫面重合。
b.設置黑色為色鍵,扣除前景畫面(注意看透視關係,遊戲畫面前景成功的遮罩住了人)
獲取正確的前景畫面後的遮罩關係圖
②攝像機捕捉:
a.視頻來源選擇攝像機畫面輸入或者視頻採集卡
b.設置綠色為色鍵(和綠幕顏色一樣),扣出人像
③背景:
視頻來源選擇裁剪遊戲窗口,裁剪區域為虛擬攝像機第三隻手柄的控制畫面
實踐成果:
測試成功的tilt brush畫畫應用
測試成功的切西瓜應用
多說幾句:
星佳已經和HTC官方溝通過,他們也在嘗試把Lighthouse基站定位裝置的能力第一時間開放給開發者,查看API文檔可以獲悉SteamVR最多可以獲取八隻實體手柄在Lighthouse範圍內的位置,由此帶來了更大的想像空間給開發者,尤其是傳統行業的影視,CG,廣告片,遊戲直播等,而配合全身動作捕捉設備到底可以革新哪些行業,各位可以大開腦洞哦。
除此之外,在實際探索過程中還有一些細節問題還需要解決,比如單反的焦距和算法裡的焦距可能存在差距,導致透視關係和比例顯示有時會存在小問題,而高品質的視頻輸出還需要4K屏幕,為了屏幕可以放得下多個1080P窗口等等問題還需要和各位行內人探討。
到了這裡,初級版的低成本教程就結束了,希望藉助可能是國內第一個揭秘MR視頻拍攝的教程,星佳可以連接到更多的開發者,和那些助推虛擬實境行業普及的從業者們,當然如果你在MR視頻的研究中也有寶貴的經驗,歡迎聯繫星佳哦。
最後放上來國外的同行們一些工作成果,希望國內的行內人士多多探索交流。
我們正在考慮建設一個高標準的虛擬實境實驗室,包括演播室,硬摳設備,工作站,VR,AR內容研發,MR視頻製作,硬體設備體驗等,所以如果你的公司有這方面的案例和技術研發團隊,硬體供應商和設備整體解決方案提供商,歡迎聯繫星佳哦,郵箱:13709570071@qq.com
微信:xingjia10086
微博:@星佳是個小人物
文中部分圖片來源於網絡,如轉載請獲取星佳允許,謝謝。
如有問題,請關注公眾號或者直接文章下方『寫留言』哦..