VIVE討論
瀏覽 : 23511
分享

[教程] 如何透過HTC Vive拍攝Mixed Reality (混合實境)影片(更新)

Bart2016-7-20 12:35

也許你是一位開發者,想為自己的HTC Vive遊戲製作酷炫的宣傳片;或者你是遊戲主播,想為觀眾帶來高品質的VR直播體驗;甚至你是一位VR的愛好者。無論如何,如果你對Mixed Reality(混合實境)感興趣,請繼續看下去。本文將介紹如何用HTC Vive拍攝高品質MR視頻。

========================================================
什麼是Mixed Reality(混合實境)影片? 最後更新 2017/06/16
========================================================

Mixed Reality影片就是透過VR中的影像+人像合成的影片。相較一般方法錄製的VR影片,Mixed Reality視頻更適合用來做遊戲直播和製作宣傳影片。
如果還是不清楚,可以看看以下這支影片,就是透過Mixed Reality所製作的影片效果。
https://www.youtube.com/watch?v=qYfNzhLXYGc

========================================================
製作Mixed Reality影片需要準備的道具
========================================================

器材清單
下表列出拍攝混合實境時需要的器材清單,並非所有項目皆須採購,請考量成本預算、是否有能力操作該器材以及拍攝的對象與目的,再決定刪減部分器材或者採用替代品。重點不在於越昂貴的器材越好,而是如何透過創意及巧思去呈現體驗者在虛擬實境中的互動。

1.JPG
*以上列出之型號並非推薦產品,亦無品牌偏好,請依個人喜好與需求購買。


--------------------------------------------------------------------------------------------

硬體配置圖
下圖是在拍攝混合實境時的器材架設圖,如討論器材清單所說明,並非所有器材皆需要,主要還是依拍攝目的為主,依本案為例:

•      即時合成虛實影像,並錄製或直播影片
•      將合成之影像投射給現場觀眾觀看
•      移動式鏡頭,跟隨體驗者移動(因此需要回放合成影像給攝影師來取景)

為達到此目的,在架設時有以下考量:

1.   影像擷取卡
           影像擷取卡的目的是將相機或攝影機之影像擷取至電腦,透過影像擷取盒也能達到此目的。若你是採用網路攝影機直接將影像訊號輸入至電腦,則不需要此裝置。

2.   4K螢幕
           由於在錄製混合實境影片時,我們只能擷取四分之一的螢幕畫面(稍後解釋),因此為了取得1080P影片,建議採用4K螢幕(解析度:3840 x 2160)。若採用FHD螢幕,僅能錄製 960 x 540的影片或是必須犧牲畫質將540P拉高至720P解析度。

3.   螢幕(攝影師觀看用途)
           為了讓混合實境影片更加豐富,跟隨著體驗者的移動式取景會比固定式取景更有趣。因此需要回放合成後的結果,協助攝影師取景。若採用固定式取景,如網路直播,則不需此設備。

4.   螢幕(觀眾觀看用途)
           透過此螢幕即時播放混合實境畫面能讓觀眾更有參與感,適用於公開展示等活動。

2.JPG



========================================================
混合實境畫面輸出
========================================================

一般而言,當VR遊戲執行時,螢幕視窗會顯示頭盔顯示器的視角,而在啟動混合實境畫面輸出時,螢幕視窗會顯示四個象限的畫面供使用者去合成,此四象限畫面分別為:

•      前景(左上)
前景畫面顯示虛擬攝影機的視角,在遊戲場景中,凡是介於頭盔顯示器與虛擬攝影機之間的物體皆會顯示在此畫面中。

•      前景 alpha 遮罩(右上)
此畫面是前景的alpha遮罩,主要是用於影片後製時可當作前景去背的材料。

•      背景(左下)
背景畫面顯示虛擬攝影機的視角,在遊戲場景中,凡是介於頭盔顯示器與遠方背景的物體皆會顯示在此畫面中。

•      遊戲畫面(右下)
此畫面呈現頭盔顯示器的視角,為一般的VR遊戲畫面。

3.JPG




========================================================
啟動混合實境畫面輸出
========================================================

若使用三支控制器啟動混合實境畫面輸出,須達到以下三個條件:
A.      內容程式必須是由Unity 引擎 SteamVR 插件版本 v1.0.8 (或是更新的版本) 所開發。
B.      在內容程式執行檔目錄下放置檔案 externalcamera.cfg(純文字檔,副檔名為.cfg)。
C.      連結第三把手柄控制器。

當使用Vive Tracker作為混合實境的輸出,則以下條件需要滿足:
A.     內容程式必須是由 Unity 引擎 SteamVR 插件版本 v1.2.0 (或是更新的版本) 所開發。
B.     在內容程式執行檔目錄下放置檔案 externalcamera.cfg(純文字檔,副檔名為.cfg)。
C.     連結兩把手柄控制器和Vive Tracker。


以下是檔案 externalcamera.cfg 的範例:
4.JPG


當以上三個條件皆成立時,內容程式會在場景中建立一個虛擬相機,而檔案 externalcamera.cfg 即是定義了此虛擬相機的相關參數:

•      x, y, z(單位:公尺):虛擬相機與第三把手柄控制器之間的三維距離。
•      rx, ry, rz(單位:度):虛擬相機相對於第三把手柄控制器的翻轉角度。
•      fov: 虛擬相機的垂直 FOV。(此 FOV 需與實體相機的 FOV 相同)

除了定義虛擬相機的參數之外,此檔案亦定義了一些畫面參數:

•      far(單位:公尺):背景畫面顯示的最遠距離,若遊戲場景很大,建議調高此參數。
•      sceneResolutionScale:遊戲畫面的品質,降低畫質可減少電腦資源使用。

5.JPG


若無法使用Vive Tracker啟動混合實境畫面輸出,但可以使用第三把控制器操作,你可以下載並使用Vive Tracker Role Changer  (https://goo.gl/DHY7YI)將Vive Tracker的角色變成控制器,使SteamVR辨識器材為控制器。


請依以下步驟使用Vive Tracker Role Changer

•      拔除HTCVive和電腦的連接
•      利用USB線將Vive Tracker和電腦連接
•      執行工具並按步驟操作
•      工具將會報告現在角色和即將變化的角色
•      完成後將ViveTracker從電腦上卸除、重新連接器材與SteamVR

6.JPG



========================================================
將第三隻手柄控制器固定於相機上的方式
========================================================

接下來,我們嘗試計算出第三隻手柄控制器與實體相機的距離。計算的難易度取決於將手柄控制器固定於相機的方式,而且相對位置一有改變,便需要修改檔案 externalcamera.cfg,因此建議找一個固定且穩定的方式,例如將手柄控制器固定在熱靴上,拆卸安裝快速,且相對位置容易固定。

7.JPG

為了讓控制器與實體相機呈現相同的水平,我們建立了一個控制器托架,透過此托架垂直立於相機上,在檔案 externalcamera.cfg 中的三軸旋轉十分接  近零度。 目前可下載 3D 列印檔案(下載連結:HTC Vive Bracket v0.7 https://goo.gl/N0LSnI),並於列印後黏貼一至二個六角螺母(含1/4螺孔)。


8.JPG

9.JPG

將Vive Tracker固定於相機上的方式
當固定Vive Tracker 時,你可以輕易的另用標準的相機螺絲,將Vive Tracker固定於相機上。

10.JPG
11.JPG


【校正Vive Tracker/第三把控制器與相機的位置與角度】
一旦順利地將第三隻控制器固定於腳架、相機支架或熱靴上後,接下來便是計算出檔案 externalcamera.cfg 裡需要的位移(x, y, z) 以及旋轉(rz, ry, rz)。我們建議以下兩種方式:


方案A (僅適用於控制器):
若你採用HTC Vive 控制器托架並且將其固定於相機熱靴上,此時控制器與相機鏡頭應該在同一個水平上,所有的相對旋轉 (rx, ry, rz) 接近於零,因此我們只需要將精力放在計算位移即可:



1.     找出控制器的中心
12.JPG
控制器的中心點位於圓盤追蹤器的上緣,下圖中,矩形的位置即代表著控制器的中心點。


2.     計算位移 (x, y, z)
    透過捲尺等工具計算出控制器中心點相機鏡頭成像位置的三度空間距離,上圖右下方即為x, y, z 軸與控制器的相對位置。



方案 B
若你的第三把控制器/ViveTracker沒有辦法藉由方案A達到完美的矯正結果。我們仔此提供一個校正工具。(下載連結:MRCameraConfigTool_V0.56, https://goo.gl/Kbk25X)

1.     安裝
在開啟SteamVR後,將MRCameraConfigTool_v0.56資料夾解壓縮,並點選MR_Config.exe。開啟前,確認三把控制器(兩把控制器和Tracker)皆順利連接至電腦,在SteamVR的視窗上,三個器材皆顯示恆綠的訊號。若有任一裝置未連線,你會在畫面上看到預設畫面。

2.     設定MR_Config.exe
l   按下Alt + Enter兩次,使視窗和導入畫面呈現正常比例。.
l  按下F2並選擇你所使用的影像擷取裝置,並選擇相對應的解析度。

13.JPG

3.     熱鍵介紹


14.JPG

使用以下熱鍵,可以協助校正動作。
l  Zero Position: 重設 (x, y, z) to0
l  Zero Rotation: 重設 (Rx, Ry,Rz) to 0
l  方向鍵: 設定(x,y)
l  PageUp/Page Down: 設定 (z)
l  W/S key: 設定 (Rx)
l  A/D key: 設定 (Ry)
l  Q/E key: 設定 (Rz)
l  +/- key: 設定 FOV
l  F5: 清理所有標記
l  M: 使用 HMD進行大角度旋轉

其他熱鍵功能:
l  F1: 虛擬相機設定
l  F2: 影像擷取設定
l  F3: 色度鍵設定(若在綠幕使用時)


4.     從設定(Rx, Ry, Rz)開始
為了做更好的混合實境合成,虛擬相機和真實相機必須完全相同,包括位置、旋轉、FOV等參數。在最初將位置和旋轉等參數都設為零進行設定時,虛擬相機會在第三支控制器/ViveTracker的位置上,並正面對Z軸。

15.JPG

若使用第三把控制器,並安裝如同第七頁圖上所示,可以將(Rx, Ry, Rz)從 (0,0,0)開始設定;若使用Vive Tracker,則建議將Vive Tracker的指示燈和鏡頭呈現垂直方向,由(0,90,90)的參數開始校正(Rx, Ry, Rz)。

16.JPG

設定完以上步驟後,將攝像機對準有兩個控制器的場景。當相機的畫面和虛擬畫面疊合,會出現類似下面的畫面,兩個虛擬控制器和兩個真實的控制器。

17.JPG

若在畫面中沒有找到虛擬控制器,你可以按下M鍵並轉動Vive頭戴顯示器,直到虛擬控制器出現道畫面為止。其後再按照下面步驟調整(X, Y, Z)和(Rx, Ry, Rz)。


5. 校正相機中心 (X, Y, Z)


首先將控制器的USB 孔放置於鏡頭的正中央,使USB 孔正對電腦畫面中間的十字。在按下控制器上的板機鍵,在VR 中標記紅色的點。隨後再利用方向鍵和Page up / Page down 調整上下左右,直到將紅色的標記和十字記號位置一致。完成後按下F5 清除所有標記。


18.JPG


6. 校正旋轉 (Rx, Ry, Rz) 和FOV
調整完中心點後,以下提供兩個方式,協助校正其餘變數的校正,包括Rx、Ry、Rz 和FOV。


方式一:

將控制器放置於畫面十字中心點上,並距離實體相機至少1.5 尺處。藉由QWEASD 按鍵調整中心軸。其後,將兩支控制器放置在畫面的兩端,以調整FOV 和旋轉。

19.JPG

可以藉由拿取控制器做以下動作,方便校正相關參數。

20.JPG

方法二:

控制器在四個選定的實際點上進行標記。標記時,控制器的USB 孔放置於實際點上。標記後調整相關參數,直到相疊合為止。


21.JPG

22.JPG
23.JPG


7. 完成後點選「Save settings」儲存參數。
8. 離開工具程式,將資料夾內的 「externalcamera.cfg」複製到VR 內容檔案夾內。





========================================================
透過 OBS Studio 合成影像
========================================================


接下來,我們將透過 OBS Studio軟體來合成影像,在開始之前,需要先決定輸出影片的品質,而品質取決於你的對象與目的,以下是此案例的設定,必要時可做調整:

•   解析度:1080P, 30FPS
•   影片大小:100~200MB (三至五分鐘)


在OBS Studio > 設定> 輸出 >標籤“錄影”:

•   輸出模式:進階
•   類型:標準
•   錄影格式:mp4

24.JPG



•    流量:6000

125801wumys61udrfu6l3y.png

在 OBSStudio > 設定 > 影像:

•   來源(全畫面)解析度:1920x1080
•   輸出(縮放)解析度:1920x1080
•   常用 FPS:29.97


25.JPG



為了取得解析度為 1080P的影片,必須在 4K螢幕上以全螢幕的方式打開遊戲:


•    按著 Shift 鍵,執行遊戲執行檔 (.exe)。
•    取消選取“Windowed”。
•    螢幕解析度:3840x 2160

26.JPG


在 OBS Studio 中,必須依照以下順序新增三個來源,分別為前景影像擷取以及背景

  
27.jpg



•  前景
前景畫面顯示虛擬攝影機的視角,在遊戲場景中,凡是介於頭盔顯示器與虛擬攝影機之間的物體皆會顯示在此畫面中。由於前景物體需要疊在玩家上方,因此前景層需至於最上方。

•    新增一個來源“視窗擷取”。
•    視窗:指定遊戲的執行檔名稱。
•    取消“捕捉游標”。

28.JPG



在前景層新增兩個特效濾鏡:
•      Crop(右:1920,下:1080)
•      ColorKey (Black) 將前景層的黑色部分去背處理。
•    影像擷取[解析度:1920x1080]
此來源主要是擷取來自於相機的影像,因此新增一個影像擷取裝置:


•     裝置:選取網路攝影機或是影像擷取卡。
•     解析度/FPS 類型:自訂
•     解析度:1920 x 1080

29.JPG


新增一個特效濾鏡:
•      ChromaKey (Green) 將玩家背後的綠幕做去背處理,可以調整 “Similarity” 及 “Smoothness” 來取得較好的去背效果。


•   背景
背景畫面顯示虛擬攝影機的視角,在遊戲場景中,凡是介於頭盔顯示器與遠方背景的物體皆會顯示在此畫面中。

在背景層新增一個特效濾鏡:
•      Crop(右:1920,上:1080)




----------------------------------------------------------------------------------------------------------------------
現在就開始製作自己的HTC Vive Mixed Reality (混合實境)影片吧!!





檢舉 回應

一般用戶

等級4

模範鄉民

Redhair2016-7-24 12:09

這個真的蠻實用的,推實用教學,感謝大大分享

安靜~閃到一邊去,看我表演
檢舉 回應

一般用戶

等級1

路過旅人

查無原作者2016-8-22 13:37

這篇文章不錯,解決了我的一些疑惑,在我的實踐操作中存在一些問題,前景視頻影像進行color key(色值)進行去除黑色,遊戲中的前景模型會存在大量的黑邊,而HTC VIVE的官方宣傳視頻中並不會有這種情況,請問該現象要怎麼去進行解決?

檢舉 回應

一般用戶

等級1

路過旅人

Hanson Lu2016-8-22 22:16

OnlionLam 發表於 2016-8-22 13:37
這篇文章不錯,解決了我的一些疑惑,在我的實踐操作中存在一些問題,前景視頻影像進行color key(色值)進 ...

請問有試著調整黑色 Color key 的相似度 (Similarity) 嗎?

檢舉 回應

一般用戶

等級1

路過旅人

查無原作者2016-8-23 09:21

Hanson 發表於 2016-8-22 22:16
請問有試著調整黑色 Color key 的相似度 (Similarity) 嗎?

是的,有調整過,但會導致接近黑色的物體模型也會被去除,或者是不完整。HTC VIVE的官方視頻是很完美的。還有請問alpha通道是拿來幹什麼用的,裡面具備了alpha通道透明信息,可以通過OBS直接透明,不需要去進行color key 去除黑色。

檢舉 回應

一般用戶

等級1

路過旅人

Hanson Lu2016-8-25 16:25

OnlionLam 發表於 2016-8-23 09:21
是的,有調整過,但會導致接近黑色的物體模型也會被去除,或者是不完整。HTC VIVE的官方視頻是很完美的。 ...


Alpha mask是後製時可以使用的素材,當成遮罩去背用的,會比較乾淨。但因為OBS沒有提供遮罩的filter,所以不能透過alpha mask去背。如果遊戲是自己開發的,可以考慮修改 Unity 專案目錄的 Assets\SteamVR\Resources\SteamVR_ColorOut.shader:

// return float4(color.rgb, 1);
return float4(color.rgb, color.a);

再透過 OBS "Game Capture" 裡的 allow transparency,就能達到較好的即時去背效果。 本文章最後由( Hanson )於 2016-8-25 16:47 編輯

檢舉 回應

一般用戶

等級1

路過旅人

查無原作者2016-8-26 09:49

Hanson 發表於 2016-8-25 16:25
Alpha mask是後製時可以使用的素材,當成遮罩去背用的,會比較乾淨。但因為OBS沒有提供遮罩的filter,所 ...

非常感謝,我自己開發的unity3D 應用已經實現,最近換了個4K顯示屏 為了錄製1920x1080的視頻,debug 和 運行VR緩慢,目前配置是 i7 4790 16G RAM  GTX1060 ,請問有什麼推薦的開發配置?

檢舉 回應

一般用戶

等級1

路過旅人

查無原作者2016-9-25 13:53

13.) 按下任一控制器的 Trigger 按鈕,產生檔案 externalcamera00.cfg  為什麼我沒有反應,檔案在哪裡位置


此工具亦提供 ”地板校正功能“,當你發現地板有些微傾斜時(控制器無法與藍色控制器吻合),可能會影響計算結果,請透過此功能先行校準地板高度。

請問怎麼校正

檢舉 回應

一般用戶

等級1

路過旅人

查無原作者2016-10-14 16:19

請問控制器托架的3D列印檔案還能夠授予存取權嗎?

檢舉 回應

一般用戶

等級1

路過旅人

查無原作者2017-2-19 15:34

位移计算工具是啥?我没有找到相关路径文件夹

檢舉 回應

分享