[XR Kaigi登壇資料] VR用アバターとしてのVRMとバーチャルモーションキャプチャー (Pixiv Fanbox)
Content
https://xrkaigi.com/session/s75.html
2019年12月4日(水) に行われたXR Kaigiのコミュニティオーガナイズドセッション VRM 勉強会で登壇した際の資料です
それぞれのスライドの下に当日使った台本を適当に入れておきます
バーチャルモーションキャプチャーの紹介をします。よろしくお願いします
自己紹介です。あきらです。本名です。現在は合同会社DMM.comのVR研究室に所属しています。
元々組み込みエンジニアで趣味でバーチャルモーションキャプチャー作ってたら気が付いたらVRエンジニアとかいう肩書になってました。
バーチャルモーションキャプチャーはいつでも自分のアバターでいることが出来るアプリです
そもそもバーチャルモーションキャプチャーってなんぞやという話ですが、いわゆるVtuberみたいになれるアプリで、VR機器でVRMモデルを操作するものです。大きな特徴として、VRゲームと同時起動が出来るというのがあります。
頭や手のトラッキングにHMDやコントローラではなくトラッカーを指定したり、コントローラーでも外部入力でも表情切り替え出来たり等の高いカスタマイズ性を持っています。バーチャルモーションキャプチャー略してばもきゃです。
オープンソースなので全てのソースコードは公開されています。
実際どんな感じかというと。
まずは現在のバーチャルモーションキャプチャーの使用用途で一番多いのがこのMR合成モードです。
多分今日ここに来ているほとんどの方が1度はこんな動画をみたことあるんじゃないでしょうか。
このゲームは今回のXR kaigiでもこの後登壇されるBeatSaberです。
MR合成というと本来はグリーンバックでプレイしている人間の姿をカメラで取って、ゲーム内と合成するためのものですが、バーチャルモーションキャプチャーはその実際の人間の代わりにアバターをグリーンバック等で表示して仮想カメラとして映像を入れることでアバターがプレイしているような映像を実現しています。
SteamVRのexternalcameraに対応したゲームか、LIVに対応したゲームならばもきゃと組み合わせてこんな感じの映像を撮ることができます。
twitter post: 1192438762862567428
次に最近できるようになったOSCでモーションデータの送受信機能を使った動画です。
後で詳しく紹介しますが、ばもきゃの動きを外部に送信出来るようになっていて、それをUnityで受け取るプラグインがあるのでUnity空間内で好きなように動き回れるようになっています。
つまり、どんなゲームでも自分の動きをアバターで伝えられるし、自分の部屋を作って配信することもできる。
なのでいつでも自分のアバターで居ることが出来るようになります。
そもそも何故バーチャルモーションキャプチャーが生まれたかを少しお話すると、
去年の7月ごろにねこますさんが、VtuberさんがVRゲーム実況を撮るときにVR機器付けて動きが取れているのに、体のモーションは別のモーションキャプチャーの機材を付けて撮るのは大変。せっかくVR機器着けてるんだからそれで同時にモーション撮れないのかな?みたいなことを言っていたのを見て、OVRdropというVRゲームと同時起動してオーバーレイでデスクトップのキャプチャを表示するツールがあるのですが、それがゲームと同時起動してコントローラーの操作も取れるんだし出来るでしょと思い至って作ってみたのが始まりです。
なのでもともとVRゲーム実況をしてもらうために作ったアプリです。
というわけで仕組みについて
そもそもばもきゃはどういう仕組みで動いているのかですが、
基本は良くあるSteamVRとFinal IKでHumanoidのアバターを動かす物がベースです。
バーチャルモーションキャプチャーの場合は、
SteamVR Pluginに依存せずに直接OpenVRのAPIを叩いていて、
OpenVRの初期化を自分で書くことでVRゲームとの同時起動を実現しています。
また、キャリブレーションの処理をこだわることで合成してもずれない手の位置などを実現しています。
Final IKのコードには一切手を入れずにアセットストアからインポートしたままです。
それでキャリブレーションについてなんですが、こちらは以前登壇した歌舞伎座.tech15のLT資料に詳細は乗ってるので詳しく知りたい方は別途ご覧ください。URLは後ろにつけておきます。
簡単に何をやってるのか説明すると、VRIKに設定しなきゃ行けないターゲットの位置は手首で、コントローラーの位置は先端なので正しくオフセットをしたうえで、モデルと同じようにTポーズをとってもらい、手首の幅でスケールを変えたり高さで微調整したり、高さのオフセットを少ししたりみたいな色々な細かい調整が入ります。
他のアプリと違うのは、MR合成した時に手の位置がずれないようなキャリブレーションを行っているところです。絶対に手の位置を合わせるようにしているので小さいモデルを入れても手の幅に合わせてモデルが大きくなったように見えます
完全に何をやってるのか見たい人はソースコード見てください。全部公開してます。
VRゲームと同時起動はどうやってるのかをちょっと紹介します。
OpenVRの初期化をするときのInit関数の引数で、初期化モードが選べるようになっています。
いくつかモードがあるのですが、SteamVRを初期化するかどうかと、複数起動できるかという違いがあります。
普通にVRゲーム作る場合はシーンを選びますが、バーチャルモーションキャプチャーの場合は同時起動が必要で、SteamVRも必要なのでOverlayを選択してます。
ただし、Sceneモード以外だと通常の方法ではHMDに3Dモデルを表示できません。
コントローラーのメニューボタン押して出てくるSteamVRダッシュボードのように2Dのパネルをオーバーレイ表示になります。
つまりバーチャルモーションキャプチャーとは、
なるべく正確に自分の位置をキャリブレーションして、その通りに動かす だけ のアプリケーションです。
今までずっと物を持てるようになりたいとかHMDで空間に入りたいとか、背景画像が設定できるようにしてほしいとか
とにかく色々要望をもらっては来たのですがバーチャルモーションキャプチャーのメイン画面はとにかくアバターが背景透過できるように表示されているだけでそれ以外のモノは表示しません。
そういうのは外部アプリケーションの役目だろうということで。
EasyVirtualMotionCaptureForUnityが生まれました。
最近バーチャルモーションキャプチャーからモデルのボーン情報とかBlendShape等全ての情報を外部に送受信できるようになりました。
それを利用して、VR機器の事やキャリブレーションみたいな難しいことを全てバーチャルモーションキャプチャーにおまかせして、
何も考えずにUnityのシーン内で自分のモデルを動かせてしまうプラグインが、
EasyVirtualMotionCaptureForUnity、EVMC4Uです。
EVMC4Uとは分かりやすく言うと簡単にばもきゃとUnityをつなぐやつです。
バーチャルモーションキャプチャーが色々難しいことをやって出てきた結果だけ全て送受信できるようになっていて、
例えばコントローラーとかMIDIとかのKeyDownやKeyUpイベント、
モデルのRootポジションや全てのボーンのTransform。
全てのBlendShapeの値
後はHMDやトラッカーなどの全てのトラッキングデバイスの位置情報なんかも送受信できるので、
面倒な部分はばもきゃに任せて、欲しいデータだけ貰って好きにアプリ作れるようになってます。
使い方はとにかく簡単で、必要なプラグインとモデルをインポートしたら設定済みのシーンを開いて、モデルを登録するだけです。
後はバーチャルモーションキャプチャーでモーション送信を有効にしたら勝手にUnityシーン内のモデルも動くようになってます。
もっと応用した使い方や、サンプルやプロトコル使用等も全てWikiに乗っています。
HMDに表示したりコントローラーで移動したり物を持ったりなんかの欲しいサンプルが大体公開されています。
そんな感じでかなり簡単なので、まだ公開して1か月ちょっとしか経ってないのですが沢山利用したサンプルが出てきました。
EVMC4Uで生まれたものをいくつか紹介します
twitter post: 1190790002340327424
まずはこのオレンジさんが作っているシネスイッチャーです。UnityのCinemachineのカメラを切り替えるスクリプトで、キーボードやゲームパッドでの切り替えだけでなくなんとYouTubeLiveのコメントでの切り替えにも対応してます。
ワンオペなVtuberでもカッコいいカメラワークで撮影のクオリティを上げよう!というコンセプトのプラグインです。
最近ばもきゃを使って自分の部屋配信をする方増えましたがカメラ切り替えは大体このプラグインが使われているみたいです。
カメラが動くだけでかなりそれっぽくなるのでとてもお勧めです。
次はこのVirtualStreamer360です。AIきりたんさんが作っているYouTubeに360度配信するための環境です。360度ぐりぐり回せる配信ができます。これは後日ソースコード等公開予定みたいなので色々面白い作品出てくるのに期待です。
twitter post: 1188736154322948096
これはクレウスさんが作ったばもきゃARです。ARKit使ってスマホの画面越しにばもきゃで動かしたモデルをAR表示することができます。
ばもきゃのモーションはネットワーク越しに送れるので、別の場所で動いている人をスマホで目の前に表示させられてとても楽しいです。
これも来年のどこかで公開出来たらしたいって言っていました。
twitter post: 1198120266309652481
そしてnmちゃんが作っているFace2VMCです。iPhoneの顔認識データをばもきゃに送信できるアプリです。
(当日の顔認識に使っているのもこのアプリです。お世話になってます。)
そんなわけで、
VRMモデルを一つ用意するだけで、あらゆるVRゲームを遊んでる様子を簡単に伝えられるようにしたばもきゃ。
VRの普及に繋がったら嬉しいなと思っています。
実際、僕のTwitterを見てる方ならご存知だと思うのですが、最初にお見せしたBeatSaberの動画みたいにプレイ動画を上げてくれる方が沢山いて、それを見てVR機器買いました!とか同じようにプレイ動画撮ってみました!という方が沢山いて少しはVRの普及できてるかなと思っています。
普段1日中エゴサして全てのばもきゃ関連のツイートを収集しているのですが、私が観測した範囲内で1年間に8500本以上の動画が投稿されました。
毎日色んな方が配信しているしばもきゃと名前を出さずに使っているユーザーさんも沢山知っているので、本当にたくさんの方に使っていただいていてとても嬉しいなと思っています。
そしてユーザーが毎回悩むSteamVRやFinal IK等の 本当にやりたいこと ではないことをばもきゃが代わりにやってくれることで、
ユーザーはコンテンツ作りに注力できるようになって、どんどん楽しい動画や配信、それをサポートするツールが生まれています。
私自身は作品を作るツールを作ることは出来ても、作品自体を作ることは出来ません。
なので表現したいことはあるのに関係ないことで止まってしまっている人の手助けが出来ればと思って開発をし続けています。
ということで、これからいよいよ自分のVRMモデル一つで色んなアプリでもVRゲームでも自分のアバターとして使える世界が来ると思っています。
そんなわけで生まれたのが・・・
twitter post: 1192413556349685760
BOW MANです。
BOW MANは私が所属しているDMM VRlabで開発した、VRMに標準で対応したVRゲームです。
SteamとOculusストアで配信しているので良かったら遊んでください。
デフォルトで三人称視点の配信向けの画面になっているのが特徴で、
VRMモデルを読み込むだけで自分のアバターでプレイしてる様子を撮ることができます。
もちろん腰と足にトラッカーつけてフルトラのキャリブレーションも出来ます。
この動画はプレイしてただ画面を録画しただけのものです。
この機能を実装したことで、結果として沢山の方にプレイ動画を投稿してもらい多くのUGCが生まれました。
BOW MANは一切広告費をかけていないですが、1か月ちょっとで大体合計1500万インプレッションを達成しています。
というわけでまとめです。
VRMアバターを利用した動画や配信が簡単に出来るようにすることで、UGCが生まれるのでとてもいいです。
なので今後は最初からVRMアバターに対応したゲームをもっと作ってほしいです。
もしアバター機能入れられなくてもMR合成対応してあればバーチャルモーションキャプチャーでアバター合成することも出来るので、是非対応してほしいです。
そして、バーチャルモーションキャプチャーはVRM開いてキャリブレーション押すだけですぐにアバターが動きます。
モーション送信してハイレベルな動画が撮りたければ先行公開版があるpixivFANBOX入って300円以上払う必要があるけど・・・
バーチャルモーションキャプチャーは無料!
ということで締めたいと思います。
twitter post: 1044235838870118400
最後に僕のお気に入りのばもきゃ動画を流して終わります。
ありがとうございました。
fanbox post: creator/10267568/post/168685
https://github.com/gpsnmeajp/EasyVirtualMotionCaptureForUnity/wiki