- 要件
- 前提
- はじめに
- 使用したもの
- モーションを記録する概要
- 前準備
- モーション記録方法
- モーションのアニメーションデータ化
- mocopiとMetaQuest2を併用する メリットデメリット
- おわりに
- 参考
要件
・mocopi アプリバージョン 2.0.0
・Unity 2021.3.18f1
・VirtualMotionCapture(通称ばもきゃ) 0.57r1
・EasyVirtualMotionCaptureForUnity(略してEVMC4U) v4_0a
・EasyMotionRecorder v1.1.6
前提
・Windows PCであること
・UnityでHumanoid形式の3Dモデルを扱ったことがあること
はじめに
3Dモデルに適用するモーションはmixamoやアセットストアで入手できますが
理想とするモーションがなかったりします。
モーションがない場合自作を考えるわけですが、
専用のアセットを使用しても作成はなかなか大変な状況です。
そこで今回、mocopiとMetaQuest2を使用し
自分の動きをモーション化していきました。
mocopi単体でもモーション取得は可能ですが
mocopiに下半身集中モードというモードがあったため
MetaQuest2と併用してのモーション取得に挑戦してみた記事になります。
なかなかつまづきポイントが多かったため備忘録として残しておきます。
使用したもの
PC以外で物理的に使用したものは次の3つです。
・mocopi(ソニーが提供するモバイルモーションキャプチャー)
・MetaQuest2
・PCとMetaQuest2をつなぐケーブル
純正品は高いためこちらを購入(今のところ問題なく使えています。)
USB-A 3.0 & Type C ケーブル【PR】
モーションを記録する概要
複数のガジェットとアプリケーションを使用するため
先に全体の流れを書きます。
1.mocopiとMetaQuest2のモーション情報を
VirtualMotionCapture(以下、ばもきゃ)で合成する
2.ばもきゃからモーション情報をUnityへ送る
3.Unityでモーション情報を受け取り記録する
前準備
モーション記録を実現するために下記において前準備が必要です。
・mocopi
・MetaQuest2
・ばもきゃ
・Unity
mocopiの前準備
VR向け下半身優先モードを使用するための設定をします。
詳細はこちらです。
www.sony.net
「高度な機能の有効化」の項目は
mocopiアプリを起動した直後の右上のボタンから設定できます。
センサーのキャリブレーション後には項目が出てこないため注意です。
まだ設定が残っていますがこのタイミングでは一旦終了です。
MetaQuest2の前準備
MetaQuest2はPCと連携し
MetaQuest2からSteamVRを起動することで
トラッキング情報をばもきゃに送ることができます。
これらを実現するために次の内容が必要です。
1.Oculusアプリの取得
2.MetaQuest2とPCをUSBケーブルで接続しQuest Linkする
3.Oculusアプリの設定変更
4.SteamVRをインストールする
1.Oculusアプリの取得
公式サイトで「ソフトウェアをダウンロード」からアプリケーションを取得します。
https://www.meta.com/jp/ja/quest/setup/
2.MetaQuest2とPCをUSBケーブルで接続しQuest Linkする
ダウンロードしたアプリケーションを起動し
MetaQuest2とPCをUSBケーブルで接続します。
3.Oculusアプリの設定変更
MetaQuest2からSteamVRを起動するための設定を行います。
Settings→一般→提供元不明にチェックをいれます。
4.SteamVRをインストールする
SteamVRをインストールします。(Steamのアカウントが必要です。)
store.steampowered.com
ばもきゃの前準備
VirtualMotionCapture(通称ばもきゃ)のモーション送信機能は
PIXIV FANBOXでの支援者がダウンロードできるバージョンになります。
支援者となりモーション送信機能が付いたバージョンを入手しましょう。
(最低300円です。開発者様に感謝)
akira.fanbox.cc
Unityの前準備
Untiyでの前準備は次の3つです。
1.unitypackageのダウンロード/Unityへのインポート
2.VRMファイルのインポート
3.Untiyでの設定
1.unitypackageのダウンロード/Unityへのインポート
Unityで3Dプロジェクトを新規作成し次の2つのunitypackageをインポートします。
・EasyMotionRecorder
受信したモーションを保存するもの
・EasyVirtualMotionCaptureForUnity
ばもきゃとUnityをつなぐもの
入手先1
github.com
入手先2
booth.pm
EasyVirtualMotionCaptureForUnityをインポートすることで
UnityでVRMファイルを扱えるUniVRMも一緒にインポートされます。
2.VRMファイルのインポート
ニコニ立体やVRoid Studio、VRoid Hub等で入手した
動かしたいVRMファイルをUnityに入れます。
VRMのモデルデータにはVRM0とVRM1.0のバージョンがありますが
今回インポートに対応しているのはVRM0のみになります。
3.Untiyでの設定
以下をヒエラルキー上にセットしてください
・インポートしたVRMモデル
・EVMC4U>ExternalRecieverのプレハブ
・EasyMotionRecorder>Prefabs>EasyMotionRecorderのプレハブ
ヒエラルキー上にセットした2つのオブジェクトの設定を行います。
ExternalRecieverのインスペクター
「VRMモデルのGameObject」欄に
VRMオブジェクトを割り当てます。
EasyMotionRecorderのインスペクター
「アニメーター」欄にVRMオブジェクトを割り当てます。
以上で前準備完了です。
モーション記録方法
モーション記録の一連の流れは以下となります。
1.前準備で設定したUnityのプロジェクトを開いておく
2.mocopiを下半身モードでキャリブレーションする
3.MetaQuest2を起動しQuest Linkを有効化する
4.Quest上でSteamVRを起動する
5.ばもきゃを起動する
6.mocopiとばもきゃの設定をする
7.Unityで実行する
8.モーションを録画する
1.前準備で設定したUnityのプロジェクトを開いておく
2.mocopiを下半身優先モードでキャリブレーションする
3.MetaQuest2を起動しQuest Linkを有効化する
設定→システム→Quest Link→「Quest Linkを起動」のスイッチをON
4.Quest上でSteamVRを起動する
Questメニューの「ディスプレイ」をでPCの画面を表示
→SteamVRを起動
SteamVRを起動できれば良いので起動方法は他の方法でも問題ありません。
5.ばもきゃを起動する
Quest上もしくはPCからばもきゃを起動する
6.mocopiとばもきゃの設定をする
下記の内容で設定します。
また、ばもきゃ側でOSCでモーション送信を有効にするにチェックをいれます。
7.Unityで実行する
Unityのヒエラルキー上に設置されている
ExternalReceiverのインスペクターの「ポート」が
ばもきゃ側と同じ数字になっているか確認する
ExternalReceiverのインスペクター
ばもきゃ
この状態で実行することで自分の動きがUnityのモデルに伝わります。
8.モーションを録画する
あとは録画するだけです。
ゲームビューが選択されている状態で
「R」キーを押すことで録画開始、
「X」キーを押すことで録画終了となります。
Xキーを押してもUnityの実行状態が終了するわけではないため注意してください。
また、Xキーを押して録画を終了しないと録画が完了しない点も注意です。
モーションのアニメーションデータ化
録画したモーションデータは
Unity上のAssets→Resourcesフォルダ内に入っています。
モーションデータのインスペクター右上のボタンを押し
「Export as Humanoid animation clips」を押してアニメーションのデータにします。
あとは編集が必要がであれば適宜アニメーション編集を実施してください。
mocopiとMetaQuest2を併用する メリットデメリット
mocopiとMetaQuest2を併用して感じたメリットデメリットは以下です。
メリット
・腕が上に真っ直ぐ上がるようになる
mocopi単体では腕をまっすぐ上に上げても
肘は曲がったままで手を上に上げた形になってしまいましたが
腕が上に真っ直ぐ上がるようになりました。
・膝の曲げ伸ばしがより自然になる
腕に付けていたmocopiのセンサーを膝上に移動するため精度が上がります。
デメリット
・遅延が発生した場合、動きを連動させるのが難しい
mocopiはスマホorタブレットから送信するためか1秒程度遅れて反映されます。
一方、MetaQuest2が担う頭、腕の動きは遅延は感じません。
そのため、腕と下半身が連動する動きをすると下半身だけ遅れてしまいます。
(接続の環境によると思います。)
おわりに
SteamVRを起動せずともトラッカーが反応してほしいところですね。
よくわからず進めたところもあるのでもっと簡単な方法がありましたら教えてください。