はじめに
この記事はVTuber Tech #1 Advent Calendar 2018の6日目の記事です。
昨日の記事は @kaikiofkaiki さんによる記事でした。
こんにちは。クレウス(@kleus_balut )です。
VRChatユーザーで、最近はVIVEBatteryInfoというVRオーバーレイアプリケーションを開発しています。
VRオーバーレイの需要が結構ありそうなので記事化してみました。
OBSの放送プレビューに限らず、応用すれば色々と使えると思いますので是非トライしてみてください。
アドベントカレンダーの投稿は初めてですので、色々と至らない点があると思いますがよろしくお願いします。
つくるもの
私自身がVTuber的な配信をした際に「あるとよかったもの」を作りました。
こんな感じで、左腕とHMD上に放送映像のプレビューがでます。
以前、歌舞伎座.tech#15のLTでバーチャルキャスト登壇した際に作ったものを単独で動かせるようにしました。
本アドベントカレンダー2日目のあきら(@sh_akira )さんの記事 UniVRM+SteamVR+Final IKで始めるVTuber でVTuberシステムを構築された方にも有用に思います。
前提知識など
・Windows10(64bit)であること
・Unityの基本操作が行えること
・unitypackageの扱い方がわかること
・OBS Studioがインストールしてあること
使用コンポーネントとダウンロード先
下記を予めダウンロードしておいてください
・Unity 2017.4.15f1 ※Unity 2017.xタブから選択してダウンロードしてください
・SteamVR 2.0.1
・uWindowCapture 0.1.2
・EasyOpenVROverlayForUnity 0.23 ※配布PreFabに同梱しているのでダウンロード不要です。
配布
ある程度設定済のPreFabです。
https://github.com/kleusbalut/OBS_Overlay/releases
CC0ライセンスです (EasyOpenVROverlayForUnity 0.23同梱)
手順
プロジェクトの作成とコンポーネントのインポート
Unity 2017.4.15f1で新規プロジェクトを作ります。名前は「OBS_Overlay」など適当に。
SteamVR 2.0.1をAssetStoreからインポートします。
※インポート後にプロジェクト設定の変更を要求されますが、そのままAccept Allを選択して設定を適用してください。
uWindowCapture 0.1.2をインポートします。
Unity設定の変更
VRオーバーレイアプリケーション用の設定
Player Settings
メニューからFile - Build Settingsを開いてPlayer Settingsを開き、インスペクタ上のXR SettingsのVirtual Reality Supportedのチェックを外します。

※紛らわしいのですが、VRオーバーレイアプリケーションを作る際はこの設定が必要です。
このチェックを入れたままだと、VRChatなどと同様に単一のVRアプリケーションとして起動してしまいます。
Unity Preferences
メニューから Edit - Preferences...を選択してUnity Preferencesを開きます。
SteamVRタブのAutomatically Enable VRのチェックをはずします。

OBS_Overlayのインポート
OBS_Overlayをインポートします。
OBS_OverlayのPreFabをHierarchyにドラッグ&ドロップします。
オーバーレイ設定の変更
デフォルトで左腕とHMD右下に表示されるようになっています。

どちらか片方が不要な方はLeftHandOverlayかHMDOverlayのGameObject自体を無効にしてください。
ここまで設定すればUnity側の設定は完了しています。
OBSの起動と設定
お使いのOBS Studioを起動します。
※私の環境では22.0.2を使用しています
プレビュー画面を右クリックしてウィンドウ プロジェクター (プレビュー)を選択します。
放送のプレビュー画面が別ウィンドウに出てきます。
Unity上で実行する
OBSのウィンドウ プロジェクター (プレビュー)が出ている状態でPlayボタンを押します。

HMDを被り、しばらくしたら放送のプレビューが表示されていることを確認してください。
※この時、HMDやコントローラがトラッキングされていないと非アクティブと判断されて画面更新が行われない事があります。
以上でOBS向けの放送プレビューVRオーバーレイの作成は完了です。
カスタマイズ
これらのコンポーネントを使用すると、OBSに限らず、Windows上で動く様々なウィンドウを取り込んでVRオーバーレイにすることができます。
キャプチャするウィンドウを変更する
Hierarchy上のWindowCaptureのInspectorを開きます。
Uwc Window Texture (Script)のTarget Partial Window Titleを好みのウィンドウ名に変更すると、そのウィンドウをキャプチャできます。

オーバーレイの位置や大きさを変更する
Hierarchy上のLeftHandOverlayかHMDOverlayのInspectorを開きます。
Easy Open VR Overlay For Unity (Script)のTransformの値やSettingの値を好みに変更します。
DeviceTrackingの値を変更すると、オーバーレイが追従するデバイス(HMD、コントローラ、トラッカー等)を変更できます

数値での変更はわかりにくいので、Playした状態でSceneタブを開き、上記の値を変更するとVRを起動した状態でリアルタイムで変更できます。

ただし、終了すると値が元に戻ってしまうので、位置が決まったら、コンポーネントのコピー&ペーストで値を反映させてください。
コンポーネントのコピー&ペースト方法は下記記事が参考になります。
参考:【便利な基礎 for Unity】Unity コンポーネントのコピー&ペースト
おわり
以上、「OBS向け放送プレビューVRオーバーレイをつくる」でした。
明日はえむにわ(@m2wasabi)さんの「VTuberツール作成役に立ちそうな自作Unityアセット棚卸し祭り」です。
VTuber Tech Advent Calendar 2018 #1: https://qiita.com/advent-calendar/2018/vtuber
VTuber Tech Advent Calendar 2018 #2: https://qiita.com/advent-calendar/2018/vtuber2
