バーチャルモーションキャプチャー×EVMC4U×Looking Glassでリアルタイムモーキャプ立体映像を構築する

初めましての方は初めまして、お久しぶりの方はお久しぶりです。でぃぐらてぃーむです。

さて、早速ですが僕は最近、このような動画をTwitterに投稿しました。

すぐにこの動画はバーチャルモーションキャプチャーの作者であるあきらさんの目に留まることになり、「ばもきゃ、ルキグラ デビュー」というコメント付きで紹介されました。

そして何と今日(2019年10月30日)、なんとLooking Glassの公式Twitterにあきらさんの紹介ツイートがリツイートされていたのです!
今回はその記念として、この動画を作るにあたって使用した機材やソフトを紹介すると同時に、作り方を解説しておこうと思います。

バーチャルモーションキャプチャーとは?

公式サイトはこちら

あきらさんが開発する、VRM形式の3DモデルをVR機器で制御するツールです。
主にLIVを通じて合成することでアバターを使ったBeat Saberのプレイ動画を撮影する際に使われており、その他非VRゲームの実況の際にアバターを動かす場合など、様々な用途に利用されているツールです。

【お詫び 2019年10月30日 10:09】初出時、作者の名前を誤って表記していました。大変申し訳ありませんでした。

難しい作業を行うことなく、簡単に複数トラッカーを用いた全身トラッキング(フルトラ)の設定を行えることや、キーアサインを変更することによりVRChatと変わらない操作感でアバターを制御することも可能になるのが大きな特徴です。
また、VR機器さえあればオフラインでも動作可能であり、ソースコードがMITライセンスで提供されているため、安心して利用できるというのも特徴です。

バーチャルモーションキャプチャーには、BOOTHで公開されているバージョンとは別に、pixiv FANBOX支援者限定の先行リリース版が存在します。
この記事では、OSCプロトコルによるモーションの外部送信が可能になった先行リリース版のv0.36以降を利用しています。
2019年10月30日現在、BOOTH公開版(v0.32)にはモーション外部送信機能がなく再現できないので、ご注意ください。

今回は合成に関する機能は全く使用せず、後述するEasyVirtualMotionCaptureForUnityに対しモーションの情報を送るために利用します。

EasyVirtualMotionCaptureForUnityとは?

公式サイト(GitHubリポジトリ)はこちら

gpsnmeajpさんが開発している、バーチャルモーションキャプチャーから送信されてきたモーションなどを受信し、Unity上に反映させるためのスクリプト群です。こちらもMITライセンスです。

バーチャルモーションキャプチャー側からの情報を、スクリプトへのオブジェクトのアタッチのみでUnity上のアバターやカメラなどに反映することが可能です。
アバター制御の処理をバーチャルモーションキャプチャー側に任せることで、自前でアバターの制御・表示プログラムを書くことに比べ、アバター制御に関するコストを大きく削減している事が一番の特徴です。

他パッケージやスクリプトと組み合わせることで応用できる範囲が広く、VTuberの収録環境からモーションの記録まで、モデルを動かすことが重要な場面で非常に役に立つスクリプト群です。
例えば応用例の一つとして、EasyMotionRecorderと併用することで、Humanoidのアニメーションを収録することが可能です。

今回はこのEasyVirtualMotionCaptureForUnityと後述するLooking GlassのSDKであるHoloPlay SDKを使うことにより、リアルタイムモーションキャプチャーによる立体映像を実現します。

Looking Glassとは?

裸眼で立体的に3Dモデルを見ることができる「ホログラフィックディスプレイ」です。
おそらく言葉で説明するより、公式PVを見てもらうほうが一番早いでしょう。

今年の始めに国内向けのサポートやマニュアルが付属したバージョンのクラウドファンディングが行われ、自分はそこで入手しました。
今後Gugenkaさんの「HoloModels」が今秋に対応予定であるように、キャラクター表示のプラットフォームとしてもなかなか興味深いデバイスです。

作り方

事前にLooking Glassのセットアップと設定、Unity 2018.4.10f以降とバーチャルモーションキャプチャー(v0.36以降)のインストール、使用するVRMモデルの用意を済ませているものとします。

使用した機材

  • Windows 10 Pro Version 1903
  • Memory 16GB
  • AMD Ryzen 5 2400G with Radeon Vega Graphics
  • NVIDIA Geforce GTX 1070(Looking GlassはDisplayPortをHDMIに変換して接続)
  • HTC Vive CE + Vive Tracker(腰用)
  • Looking Glass Standard

TL;DR(端的に言えば)

セットアップ済みのExternalRecieverシーンの中にHoloplay Captureを放り込んでいい感じにすれば完成です。

バーチャルモーションキャプチャーにVRMモデルを読み込む

ここの手段については割愛します。バーチャルモーションキャプチャー公式サイトの「操作説明」を参照してください。

バーチャルモーションキャプチャーの外部出力機能を有効にする

バーチャルモーションキャプチャーのコントロールパネルから「詳細設定」を選び、「OSCでモーション送信を有効にする」のチェックボックスを有効にしておきます。
このチェックが有効になっていないと、EasyVirtualMotionCaptureForUnityはモデルの制御に必要なデータを取得できません。

ここで一旦バーチャルモーションキャプチャーは最小化してタスクバーにしまっておきます。

UnityにExternalRecieverPackをインポートする

このリンクの「安定版」または「最新版」からダウンロードできるunitypackageをインポートし、展開されたアセットの中にある「ExternalReceiver.unity」というシーンを開きます。
公式より説明動画が出ているので、こちらもどうぞ。

UnityにVRMモデルを読み込む

Assetsにバーチャルモーションキャプチャーで読み込んだものと同一のVRMファイルをインポートし、処理されたVRMモデルのプレハブを先ほど開いたシーンの中に追加します。

読み込みが完了したら、シーンに最初から存在する「ExternalReciever」のModel欄に先ほど配置したVRMモデルをアタッチします。

UnityにHoloPlay SDKをインポートする

Looking Glass開発者向けサイトからダウンロードできるUnity向けのHoloPlay SDKをインポートし、Holoplay Captureのプレハブをシーンの中に追加し、モデルが見やすいよう調整します。
動画のプロジェクトでは、このように設定しています。

ここまでで立体表示用のプログラムの構築は既に完了しています。ヒエラルキーが以下のようになっていれば大丈夫です。

ここで先程最小化していたバーチャルモーションキャプチャーをタスクバーから呼び戻します。

バーチャルモーションキャプチャーをキャリブレーションする

バーチャルモーションキャプチャー側でキャリブレーションを行います。手段については割愛します。

頭の上に乗せるようにVRゴーグルを装着した状態でキャリブレーションすれば、Looking Glassに映るアバターの自分を見やすいでしょう。

UnityのシーンをPlayする

準備ができたら、Unityの画面上部のPlayボタンをクリックします。
するとそこには、自分の動きに合わせてリアルタイムに動くアバターの姿が立体的に映し出されていると思います。

おわりに

このように、バーチャルモーションキャプチャーとEasyVirtualMotionCaptureForUnityとHoloPlay SDKを使うことで、簡単にリアルタイムモーションキャプチャーを用いた立体映像を作ることができました。
他のスクリプトと組み合わせることで、例えばキャプチャしたダンスを眺めるホログラフィックプレーヤーやホログラフィックMVなど、様々な用途に応用できるでしょう。

今回のこの記事をきっかけに、皆さんがLooking Glassやバーチャルモーションキャプチャー、EasyVirtualMotionCaptureForUnityに興味を持ってくだされば幸いです。


この作品はアルマジロンさん作の「メディカルセンタースタッフさん」を独自に改変したものを使用しています。
また、Unity Technologies Japan様の「ダレデモユニティチャンニナール」をアクセサリーとして使用しています。
「ダレデモユニティチャンニナール」© Unity Technologies Japan/UCL

手倉テイム
手倉テイム

1997年6月20日、熊本県生まれ。2017年3月~福岡県在住。現在はフードデリバリーの配達を主たる業務とした個人事業主。
両親曰く「手倉は物事の考え方が(世間より)3年早い」。

記事本文: 88