技術をかじる猫

適当に気になった技術や言語、思ったこと考えた事など。

VRゲームに自分の姿を好きなキャラモデルで表示して撮影する

目標

この記事で目指すところ

youtu.be

事前準備

以上です。

ざっくり流れ

  1. VRゲームと LIV を入れる
  2. VRM モデルを用意する
  3. VirtualMotionCapture を突っ込む
  4. LIV に VirtualMotionCapture 映像を設定
  5. OBS で録画する

1. VRゲームと LIV を入れる

基本的に Steam 対応の VR ならそれなりにいけるっぽい。
ということで BeatSaber

store.steampowered.com

加えて、LIV (無料)を入れる

store.steampowered.com

ちょっと説明すると、LIV というツールは以下の機能がある。

  1. VR ゲーム中にカメラを配置してゲーム内の映像を表示できる
  2. 現実のWebカメラの映像を取り込む
  3. 上記二つの映像をクロマキーで合成する

起動順序は LIV が先で、「LIV コンポジターをスタートする」(コンポジッターとは、合成機って意味)

f:id:white-azalea:20200829122241p:plain

起動するとこんな感じ

f:id:white-azalea:20200829123006p:plain

「シンクロとスタート」を押すと、ゲームが起動します。
この時真っ黒の画面に映像が映ります。
これが LIV のVR中カメラ映像ですね。

f:id:white-azalea:20200829124913p:plain

ここでカメラ調整とかしたくないので、ゲームだけ修了します。
実写映像を合成するならこのままできますが…まぁ放置で。

2, VRM モデルを用意する

手段はいくつかありますが

  • VroidStudio とかで自作する
    https://vroid.com/studio/
  • Unity の Humanoid モデルを変換する
    VRM モデルをガチで作りたい人は コレ 見て頑張ってください。
    俺はあきらめたよ…
  • VroidHub から適当なフリー VRM を拾ってくる。
    https://hub.vroid.com/
  • BoothVRM のモデルを買う
    因みに、VroidStudio で使えるテクスチャとか有償無償含めて転がってるので、見てみるといい
  • ニコニコ立体 からライセンスを確認しつつ使う
    ライセンスに関しては慎重に。私はサイトは紹介しますが、利用は自己責任で。

因みに私は Booth から素材を集めつつ、VroiStudio で自作しました。
VroidStudio で一旦エクスポートした VRM モデルは編集できないので、服装とか変える場合はその度にエクスポートしましょう。

3. VirtualMotionCapture を突っ込む

sh-akira.github.io

このソフトは VRM モデルをVR機器に合わせて動かすソフトといえます。
インストールして、起動するとこんな感じ

f:id:white-azalea:20200829130917p:plain

VRM読込」でまずはモデルを読み込む。

f:id:white-azalea:20200829131816p:plain

「カメラ」を選択して、適当に画面配置を変更します。
「フリー」で操作するときは癖があります。元の位置に戻すような操作はないので、にっちもさっちもいかなくなったら VirtualMotionCapture をフォルダごと消して再度入れるしかなくなります。

いずれの操作も自分がカメラを覗いている前提で、カメラの位置を操作します。

  • マウス右クリック移動: カメラの向きを変更
  • マウスホイール: カメラの前後
  • Altキー + マウス左クリック移動: モデルの位置を中心にカメラを回転移動
  • マウスホイールクリック: カメラの上下左右移動

因みに、BeatSaber だとこんな感じ。
下半身を少し隠すのは、下半身までモーションキャプチャーできてないから(下半身分のセンサー持ってないから)。
頭と両手だけでキャプチャすると久が曲がって映ったりとかいろいろする。

f:id:white-azalea:20200829133400p:plain

ここまで来たら、「設定 > 詳細設定」のダイアログを開き

  1. 「仮想Webカメラ設定 > インストール」を実行。
    (これで LIV に「キャラクターを撮影しているウェブカメラがある」と認識させる)
    f:id:white-azalea:20200829134358p:plain
  2. 「externalcamera.cfg(フリーカメラ座標を設定)」項目から
    2.1. コントローラ番号: 「トラッカー(LIV Virtual Camera(Tracker))」を選択 2.2. 「externalcamera.cfg の書き出し」をクリック。(因みにファイルはわかりやすいところに。名前の変更はしてはいけない)
  3. 解像度設定を「1920x1080」とかにして「適用」
  4. 「仮想Webカメラを有効にする」にチェックを入れる

この時点でキャラクターモデルを撮影しているWebカメラがあるように見せかけることができる
一応、コントロールパネルの「背景色」を「GB」に設定しておく

f:id:white-azalea:20200829135743p:plain

4. LIV に VirtualMotionCapture 映像を設定

LIV でこの映像を読み込みます。

  1. カメラを追加します。
    f:id:white-azalea:20200829135926p:plain
  2. タイプを「ビデオカメラ」デバイスは「VMC_Camera」で、解像度を「1920x1080 60fps」とします。
    ここまでで、画面上にキャラクターがそのまま映ったはず
    f:id:white-azalea:20200829140239p:plain
  3. キャリブレーション」から「しょうさい」(なんで平仮名…)にチェックを入れて「インポート」を選択。
    ファイルは先ほど出力した 「externalcamera.cfg」ファイル f:id:white-azalea:20200829140552p:plain
  4. セーブしたら「シンクロとスタート」をしてみましょう。
    f:id:white-azalea:20200829140921p:plain

画面とキャラクターがずれる場合は、 「カメラ」「エディット」から、externalcamera.cfg を再度読み込みましょう。 f:id:white-azalea:20200829141056p:plain

VirtualMotionCapture に戻って、「キャリブレーション」を行います。 f:id:white-azalea:20200829141324p:plain

「MR合成モード」のどちらかを選択しましょう。
キャラが浮くようなら下の選択肢を使用します。

f:id:white-azalea:20200829141526p:plain

そしたら VR ヘッドセットと両手のデバイスを持って、モデルと同じポーズでキャリブレーションします。
この時点で、LIV の映像には自分のキャラクターの映像が表示されているはずです。

5. OBS で撮影する

obsproject.com

OBS とはこのソフト。
要するにデスクトップの映像や音を保存してくれるソフトといえばいいですかね(名前の通り配信もできます)。

起動直後はこんな感じ。

f:id:white-azalea:20200829143648p:plain

設定から音声を開き、VR のヘッドセットを指定します。

f:id:white-azalea:20200829143814p:plain

保存先も指定しておきましょう

f:id:white-azalea:20200829144232p:plain

次はウィンドウのキャプチャを作成して

f:id:white-azalea:20200829143953p:plain

LIV の合成画面を指定します。
で、映像が表示されたら「録画開始」ー「録画終了」で映像を保存できます。

f:id:white-azalea:20200829144123p:plain

GoodLuck!