也許你是一位開發者,想為自己的HTC Vive游戲制作酷炫的宣傳片;或者你是游戲主播,想為觀眾帶來高質量的VR直播體驗;甚至你是一位VR的愛好者。無論如何,如果你對MixedReality(混合現實)感興趣,請繼續看下去。本文將介紹如何用HTC Vive拍攝高質量MR視頻。
什么是Mixed Reality(混合現實)影片?
Mixed Reality影片就是透過VR中的影像+人像合成的影片。相較一般方法錄制的VR影片,Mixed Reality視頻更適合用來做游戲直播和制作宣傳影片。?
如果還是不清楚,可以看看以下這支影片,就是透過Mixed Reality所制作的影片效果。?
http://v.qq.com/x/page/x0194621p8b.html?
制作Mixed Reality影片需要準備的道具
1.) 綠幕環境?
2.) 相機/攝影機(建議參數:1080p/60fps)?
3.) 4K屏幕:為了合成1080p的影片,屏幕需要能放得下多個1080p窗口(建議參數:4K/60Hz)?
4.) HDMI分配器?
5.) HTC Vive 一組?
?
6.) 第三個HTC Vive手柄(購買網站:https://www.htcvive.com/cn/accessory/controller/ )?
7.) VR Ready 電腦(建議參數:操作系統: Windows 7 SP1, Windows 8.1, or Windows 10、處理器: Intel? i5-4590 / AMD FX 8350 equivalent or greater 、內存: 4 GB RAM 、圖形: NVIDIA GeForce? GTX 970 / AMD Radeon? R9 290 equivalent or greater)?
如果你是要將畫面直接投出給現場的觀眾看,你可能還需要準備以下道具:?
? ? ?(你可此參考圖一為拍攝MR影片時的硬件配置圖)
? ?
![如何透過HTC Vive拍攝Mixed Reality (混合現實)影片 如何透過HTC Vive拍攝Mixed Reality (混合現實)影片]()
1.) 視頻采集卡:可以將相機或攝影機之影像采集至電腦,若你是采用網絡攝影機直接將影像訊號輸入至電腦,則不需要此裝置?
2.) 4K屏幕:為了合成1080p的影片,屏幕需要能放得下多個1080p窗口(建議參數:4K/60Hz)?
3.) 屏幕(攝影師觀看用):為了讓MR影片更加豐富,跟隨著體驗者的移動式取景會比固定式取景更有趣。因此需回放合成后的結果,協助攝影師取景。若采用固定式取景方式,如網絡直播,則不需此設備?
4.) 屏幕(觀眾觀看用途):透過此屏幕實時播放MR畫面,適用于公開展示等活動?
MR畫面輸出說明(請參考圖二)
?
![如何透過HTC Vive拍攝Mixed Reality (混合現實)影片 如何透過HTC Vive拍攝Mixed Reality (混合現實)影片]()
一般而言,當VR游戲執行時,屏幕窗口會顯示頭顯的視角,而在啟動MR畫面輸出時,屏幕窗口會顯示四個象限的畫面供使用者去合成,此四象限畫面分別為:
.前景(左上)?
前景畫面顯示虛擬攝影機的視角,在游戲場景中,凡是介于頭顯與虛擬攝影機之間的物體皆會顯示在此畫面中?
? ? ? .前景 alpha 屏蔽(右上)?
此畫面是前景的alpha屏蔽,主要是用于影片后制時可當作前景去背的材料?
? ? ? .背景(左下)?
背景畫面顯示虛擬攝影機的視角,在游戲場景中,凡是介于頭顯與遠方背景的物體皆會顯示在此畫面中。?
? ? ? .游戲畫面(右下)?
如何錄制MR畫面
為了啟動混合現實畫面輸出,須達到以下三個條件:
A.) 內容程序必須是由 Unity 引擎 SteamVR 插件版本 v1.0.8 (或是更新的版本) 所開發?
B.) 在內容程序執行文件目錄下放置檔案 externalcamera.cfg(純文本檔,擴展名為.cfg)?
C.) 連結第三把手柄(透過USB連接電腦)
?以下是檔案 externalcamera.cfg 的范例:
?x=0?
? ? ? ?y=0?
? ? ? ?z=0?
? ? ? ?rx=0?
? ? ? ?ry=0?
? ? ? ?rz=0?
? ? ? ?fov=60?
? ? ? ?near=0.1?
? ? ? ?far=100?
? ? ? ?sceneResolutionScale=0.5?
?當以上三個條件皆成立時,內容程序會在場景中建立一個虛擬相機,而檔案 externalcamera.cfg 即是定義了此虛擬相機的相關參數(請參考圖三):
?
![如何透過HTC Vive拍攝Mixed Reality (混合現實)影片 如何透過HTC Vive拍攝Mixed Reality (混合現實)影片]()
.x, y, z(單位:公尺):虛擬相機與第三把手柄之間的三維距離?
.rx, ry, rz(單位:度):虛擬相機相對于第三把手柄的翻轉角度?
.fov: 虛擬相機的垂直 FOV。(此 FOV 需與實體相機的 FOV 相同)?
除了定義虛擬相機的參數之外,此檔案亦定義了一些畫面參數:?
.far(單位:公尺):背景畫面顯示的最遠距離,若游戲場景很大,建議調高此參數?
.sceneResolutionScale:游戲畫面的質量,降低畫質可減少電腦資源使用?
如何校準相機參數(計算垂直FOV)
在拍攝混合現實影片時,最重要的是取得 FOV 參數值以及取得第三只手柄與實體相機的距離,才能順利地將前景與實體對象合成。此處我們采用 AR 的工具來計算相機與鏡頭的特性,并取得正確的垂直 FOV。(除非更換拍攝時的相機或鏡頭,否則此步驟執行一次即可)
1.) 下載 ARToolKit for Unity(http://artoolkit.org/dist/arunity5/5.3/ARUnity5-5.3.2-tools-win.zip )?
2.) 在 ARToolKit for Unity 中找到校準樣板 'Calibration chessboard (A4).pdf” 并且依原尺寸打印(路徑:[downloaded ARToolKit root directory]/doc/patterns)?
3.) 從命令提示字符執行程序 calib_camera.exe(路徑:[downloaded ARToolKit root directory]/bin)指令如下:?
> calib_camera.exe --vconf '-devNum=1 -flipV -showDialog”?
校準工具必須取得實體相機的畫面,若抓取到頭顯的前置鏡頭,請修改指令參數至 1 或 2?
4.) 依照在線教學步驟 (http://artoolkit.org/documentation/doku.php?id=2_Configuration:config_camera_calibration ) 產生相機的特性參數檔案 camera_para.bytes(請參考圖四)
?
![如何透過HTC Vive拍攝Mixed Reality (混合現實)影片 如何透過HTC Vive拍攝Mixed Reality (混合現實)影片]()
'若校準的結果是可采用的,則每個影像的誤差應在一個像素以內,若誤差超過兩個像素,表示此校準結果未成功,請重新校準'?
5.) 將校準后產生的檔案camera_para.bytes 復制到位移計算工具externalcamera_cfg_gen中?
$PATH\externalcamera_cfg_gen\?
? ?? ?externalcamera_cfg_gen_Data\?
? ?? ?StreamingAssets\?
? ?? ?ardata\?
將第三只手柄固定于相機上的方式
接下來,我們嘗試計算出第三只手柄與實體相機的距離。計算的難易度取決于將手柄固定于相機的方式,而且相對位置一有改變,便需要修改檔案 externalcamera.cfg,因此建議找一個固定且穩定的方式,例如將手柄固定在熱靴上,拆卸安裝快速,且相對位置容易固定(請參考圖五)
?
![如何透過HTC Vive拍攝Mixed Reality (混合現實)影片 如何透過HTC Vive拍攝Mixed Reality (混合現實)影片]()
為了讓手柄與實體相機呈現相同的水平,我們建立了一個手柄托架,透過此托架垂直立于相機上,在檔案 externalcamera.cfg 中的三軸旋轉十分接近零度。 目前可下載 3D 打印文件,并于打印后黏貼一至二個六角螺母(含1/4螺紋)(請參考圖六)
?
![如何透過HTC Vive拍攝Mixed Reality (混合現實)影片 如何透過HTC Vive拍攝Mixed Reality (混合現實)影片]()
( 3D 打印文件下載連結:https://drive.google.com/file/d/0B9XEEDfLPxmjTkc2RF85OVo4clk/view?pref=2&pli=1 )?
?
一旦順利地將第三只手柄固定于腳架、相機支架或熱靴上后,接下來便是計算出檔案 externalcamera.cfg 里需要的位移 (x, y, z) 以及旋轉 (rz, ry, rz)。我們建議以下兩種方式:?
方案 A:?
若你采用 HTC Vive手柄托架并且將其固定于相機熱靴上,此時手柄與相機鏡頭應該在同一個水平上,所有的相對旋轉 (rx, ry, rz) 接近于零,因此我們只需要計算位移即可:?
1.) 找出手柄的中心(請參考圖七):
?
![如何透過HTC Vive拍攝Mixed Reality (混合現實)影片 如何透過HTC Vive拍攝Mixed Reality (混合現實)影片]()
手柄的中心點位于圓盤追蹤器的上緣,下圖中,矩形的位置即代表著手柄的中心點。?
2.) 計算位移(x, y, z):透過卷尺等工具計算出手柄中心點與相機鏡頭成像位置的三度空間距離,上圖右下方即為x, y, z 軸與手柄的相對位置。?
方案 B:?
若你的手柄與相機不在同一個水平上,這里提供一個計算位移的工具(下載連結:https://drive.google.com/file/d/0B9XEEDfLPxmjZjhYaEZrNE9mLVE/view)?
1.) 下載 ARToolKit for Unity(http://www.artoolkit.org/dist/arunity5/5.3/ARUnity5-5.3.2-tools-win.zip )?
2.) 在 ARToolKit for Unity 中找到校準樣板 “Multi pattern 4x3 (A4).pdf” 并且依原尺寸打印。(路徑:[downloaded ARToolKit root directory]/doc/patterns)?
3.) 將校準后產生的檔案 camera_para.bytes 復制到位移計算工具 externalcamera_cfg_gen 中?
$PATH\externalcamera_cfg_gen\?
externalcamera_cfg_gen_Data\?
StreamingAssets\?
ardata\?
4.) 將相機鏈接上電腦?
5.) 執行 $PATH\externalcamera_cfg_gen\externalcamera_cfg_gen.exe
?
.請確認計算工具抓取到正確的校準參數文件名,你可以在檔案 videopara.cfg 中指定:?
videoCParamName0 = camera_para?
? ? ? .校準工具必須取得實體相機的畫面,若抓取到頭盔的前置鏡頭,請修改檔案 videopara.cfg 中的參數至 1 或 2:?
videoConfigurationWindows0 = -devNum=1 -showDialog -flipV?
? ? ?.請確認實體相機的屏幕比例為 16:9,例如:1920 x 1080?
6.) 戴上頭顯?
7.) 將兩只手柄置放于藍色虛擬手柄的位置上(請參考圖八)?
?
![如何透過HTC Vive拍攝Mixed Reality (混合現實)影片 如何透過HTC Vive拍攝Mixed Reality (混合現實)影片]()
8.) 卸下頭顯?
9.) 將校準樣板 ”Multi pattern 4x3 (A4).pdf” 至于兩只手柄的中央,方向需與虛擬場景中的一致(請參考圖九)
?
![如何透過HTC Vive拍攝Mixed Reality (混合現實)影片 如何透過HTC Vive拍攝Mixed Reality (混合現實)影片]()
10.) 將相機對準校準樣板 ”Multi pattern 4x3 (A4).pdf”。(最好透過腳架固定)(請參考圖十)
?
![如何透過HTC Vive拍攝Mixed Reality (混合現實)影片 如何透過HTC Vive拍攝Mixed Reality (混合現實)影片]()
11.) 戴上頭顯?
12.) 按下任一手柄側邊的 Grip 按鈕,將虛擬的橘色手柄切換至第三把手柄所在位置。 此時橘色手柄與虛擬相機的相對位置與實體狀況相同(請參考圖十一)?
?
![如何透過HTC Vive拍攝Mixed Reality (混合現實)影片 如何透過HTC Vive拍攝Mixed Reality (混合現實)影片]()
13.) 按下任一手柄的 Trigger 按鈕,產生檔案 externalcamera00.cfg?
14.) 重新命名檔案至 externalcamera.cfg,并且將其復制到游戲執行檔文件夾?
此工具亦提供 ”地板校正功能“,當你發現地板有些微傾斜時(手柄無法與藍色手柄吻合),可能會影響計算結果,請透過此功能先行校準地板高度。?
透過OBS Studio合成影像
接下來,我們將透過OBS Studio軟件來合成影像,在開始之前,需要先決定輸出影片的質量,而質量取決于你的對象與目的,以下是此案例的設定,必要時可做調整:
.分辨率: 1080P, 30FPS?
.影片大小: 100~200MB (三至五分鐘)?
1.) 在 OBS Studio > 設定 > 輸出 > 卷標 “錄像”(請參考圖十二):
?
![如何透過HTC Vive拍攝Mixed Reality (混合現實)影片 如何透過HTC Vive拍攝Mixed Reality (混合現實)影片]()
.輸出模式:進階?
.類型:標準?
.錄像格式:mp4?
.流量:6000?
2.) 在 OBS Studio > 設定 > 影像(請參考圖十三):?
?
![如何透過HTC Vive拍攝Mixed Reality (混合現實)影片 如何透過HTC Vive拍攝Mixed Reality (混合現實)影片]()
.來源(全畫面)分辨率:1920x1080?
.輸出(縮放)分辨率:1920x1080?
.常用 FPS:29.97?
3.) 為了取得分辨率為 1080P 的影片,必須在 4K 屏幕上以全屏幕的方式打開游戲(請參考圖十四):
?
![如何透過HTC Vive拍攝Mixed Reality (混合現實)影片 如何透過HTC Vive拍攝Mixed Reality (混合現實)影片]()
.按著 Shift 鍵,執行游戲執行檔 (.exe)?
.取消選取“Windowed”?
.屏幕分辨率:3840 x 2160?
4.) 在 OBS Studio 中,必須依照以下順序新增三個來源,分別為”前景”、”影像采集”及”背景”(請參考圖十五):?
?
![如何透過HTC Vive拍攝Mixed Reality (混合現實)影片 如何透過HTC Vive拍攝Mixed Reality (混合現實)影片]()
a.) 前景設定(請參考圖十六)
?
![如何透過HTC Vive拍攝Mixed Reality (混合現實)影片 如何透過HTC Vive拍攝Mixed Reality (混合現實)影片]()
前景畫面顯示虛擬攝影機的視角,在游戲場景中,凡是介于頭顯與虛擬攝影機之間的物體皆會顯示在此畫面中。由于前景物體需要迭在玩家上方,因此前景層需至于最上方。?
.新增一個來源“獲取窗口”?
.窗口:指定游戲的執行檔名稱?
.取消“捕捉游標”?
在前景層新增兩個特效濾鏡:?
.Crop(右:1920,下:1080)?
.Color Key (Black) 將前景層的黑色部分去背處理。?
b.)??影像采集設定 [分辨率:1920x1080](請參考圖十七)?
?
![如何透過HTC Vive拍攝Mixed Reality (混合現實)影片 如何透過HTC Vive拍攝Mixed Reality (混合現實)影片]()
此來源主要是采集來自于相機的影像,因此新增一個影像捕獲設備:?
? ? ? .裝置:選取網絡攝影機或是視頻采集卡?
? ? ? ?.分辨率/FPS 類型:自定義?
? ? ? ?.分辨率:1920 x 1080?
? ? ? ? 新增一個特效濾鏡:?
? ? ? ? .Chroma Key (Green) 將玩家背后的綠幕做去背處理,可以調整 “Similarity” 及 “Smoothness” 來取得較好的去背效果?
? ? ? ? c.) 背景設定?
? ? ? ? 背景畫面顯示虛擬攝影機的視角,在游戲場景中,凡是介于頭顯與遠方背景的物體皆會顯示在此畫面中。?
? ? ? ? 在背景層新增一個特效濾鏡:?
? ? ? ? ? Crop(右:1920,上:1080)?