デスクトップの隅に自分の分身の3Dアバターを表示させる

プログラミング,ポエムOculus Quest

旧ブログ (読む必要なし)の続き。

概要

デスクトップの端っこに自分の分身を表示させたい。自分の体を動かすのに合わせて、画面の中の女の子も動いて欲しい。

とりあえず以下のような環境を目指してみる。Oculus Quest 2 1 2からPC側のVirtualCastを起動し、キャプチャした映像をOBS Studioで左右反転させてデスクトップの隅に出力する。Virtual Castでは仮想空間内にディスプレイを置くことができるので、ゴーグルを装着しながら他の作業ができる3

目指す構成

VirtualCast

最終的にはVR空間にPC側のディスプレイを映したいので、Oculus QuestではなくPC側のVirtualCastを使用する。PC側のVRアプリを起動できるように、事前にVirtualDesktopをインストールしておく4

VirtualCastを起動したら、「アイテム -> 追従カメラ」を選択し、追従カメラを有効化する。また、「アイテム -> ディスプレイ」からPCのディスプレイをVR空間でも見られるようにする。カメラの視線が気になる場合、カメラをディスプレイの裏に隠すのがおすすめ。

追従カメラが正しく有効化できていれば、PCのVirtualCastのウィンドウに追従カメラの映像が表示される。

OBS Studio

VirtualCastのウィンドウをそのまま眺めるだけでも楽しめるが、OBS Studioを通して左右反転させると、自分が美少女になった感覚が味わえるのでよきである。

OBS Studioを開き、「ソース -> ゲームキャプチャ」からVirtualCastのウィンドウを選択する。映像が取り込めたら、OBS Studioのメニューバーの「水平 -> 変換 -> 水平反転」から映像を左右反転させることができる。

次に、出力する映像のサイズを変更する。映像を出力していない状態で、「ファイル -> 設定 -> 映像」から出力サイズを変更できる。デフォルトでは出力サイズは横長に設定されているが、大きさを調整してアバターの上半身がうまく映るサイズにする。

最後に、キャプチャ画面を右クリックして「ウィンドウ プロジェクター(プレビュー)」を選択すると、自分の分身が映ったウィンドウが作れる5Borderless Gamingなどのソフトを用いてタイトルバーを消すとより良い感じになる。

改良

上述の方法には1つだけ致命的な問題点がある。

VirtualCast上では、PCのデスクトップがとても見づらい。画面に目線を近づければ文字を読むことはできるが、遠くから見ると字が潰れていてかなりしんどい。GPUや通信環境のグレードを上げれば解決するのかもしれないが、なにか他に方法はないかと探した。

解決方法はシンプルで、VirtualCastから抜ければよい。最終的には以下の構成に落ち着いた。VirtualCastアプリから抜けても、顔のトラッキングやアバターの描画などは裏で動き続けてくれる6。また、Virtual Desktopアプリで表示されるPC画面は、文字の描画がきれいで快適に作業できる。VirtualCast上のように自由にディスプレイを配置することはできないものの、この環境なら実用に耐えらそう。

VR空間では以下のような見た目で作業できる。

スマホへミラーリングした際の画像のため画質が悪くなっているが、実際には右下の時刻までくっきりと判別できる。

Zoom会議

蛇足。

OBSを通すとVirtual Cameraにアバター映像を出せるので、アバター姿でZoom会議に参加できる。

FaceRigの犬のアバターで社のMTGに参加しているおじさんを見たことあるし、美少女アバターで参加しても何も言われなさそう。

notes

  1. 意外と使いみちが少なくて持て余している
  2. 発売前に垢Banに関して色々とゴタゴタがあったが、発売日に作った僕のFacebook垢は未だにBanされていない
  3. 恐らくVRChatでも同様のことはできるが、VRChatで独自のアバターを利用するにはUser Rankを上げる必要があり断念した。仮想空間で知らない人とフレンドになるのはハードルが高すぎる。
  4. 僕の環境では何回やってもOculus Linkが使えなかったので、VirtualDesktopを使用している。PCとの間は無線接続になるが、今のところはけっこう快適に使用できている。
  5. 本当は、背景をクロマキーにしてアバター部分だけを表示させたかった。背景を変えるところまでは簡単にできるが、デスクトップにアバターだけを表示する手段が意外に少ない。試したがダメだった手段を列挙してみる。

    • CamDeskはOBSのVirtual Cameraを認識してくれなかった
    • mewcamはVirtual Cameraを選択するとフリーズして使えなかった
    • Bandicamは動画の録画中は理想の状態に近いが、録画していないときにカメラ映像を表示する方法が見つからなかった

  6. 手のトラッキングは止まったり止まらなかったりする