Unity VR PCディスプレイに第三者カメラを表示
2022年1月4日

Unity VR開発で、PCディスプレイにはHMDではなく、別カメラの映像を表示したいということがよくあります。
以下の方法でPCディスプレイには別カメラ映像を表示することが可能です。
プロジェクトセットアップ
今回の環境は以下の通りです
- Windows11
- HTC Vive
- Unity 2020.3.25f
- SteamVR 2.7.3
まずはプロジェクトを作成してSteamVRプラグインを取り込みます

SteamVR PluginからCamera Rigを設定します

動きが分かりやすいように、CameraRig配下のleft、right、cameraに適当なオブジェクトを設定しておきます

最初から配置されているMain Cameraを変更していきます。
好きな位置に移動したのち、以下のプロパティを変更します

Depthのプロパティを1、具体的にはHMD側のCameraのDepthプロパティより大きい値を指定することでPCディスプレイ側にはMain Camera側(Depthが大きいほう)が優先されて表示されます。
もちろん、HMDにはHMD側のカメラの映像が表示されます。
Target EyeはNoneを指定します。
以上
ひとまずPCディスプレイにHMD以外のカメラ映像を表示する場合、上記の設定だけで実現することができます。
アバターなどを利用するゲームの場合、プレイヤーにはHMDの映像を、PCディスプレイには他カメラの映像を映すことでVRゲームを遊ぶ人、遊んでいる人を見てる人、両方とも楽しめるゲームが作れるかもしれませんね