
スマホとトラッカーでmocopiみたいにフルトラする方法
今回は安価にかつ既に持っている機材でフルトラできないか考えてみました。余ったスマホとVRトラッカー、Leapmortionを組み合わせフルトラッキングを行う方法を紹介したいと思います。
主に3Dで活動するVtuberに向けての記事となっておりVRSNSでは使えない為ご注意ください。VseeFace、Vroom、Unity、UE5などでのモーションキャプチャーを目的としています。
実際にセットアップを行うと動画のようにモーションキャプチャーを行うことができます。
注意事項
※各トラッカーの初期セットアップ、LeapMortionやWebカメラモーションキャプチャ、iFacialMocap、MeowFace初期セットアップは各自で行ってください。
※トラッカーを新たに追加する為次回VR機器で遊ぶ際に干渉する場合があります。対処方法も記載しておりますのでよく読んでセットアップしてください。
必要な機材
頭用
ARcore/ARkitに対応したスマートフォン下半身用
VRトラッカー 最低5点
(ハリトラ、Unimotion、Xinトラッカー、SlimeVR、Joycon、スマホでも代用可)腕用
LeapMortion又はWebカメラモーションキャプチャ
トラッカーの追加も可能だと思います。表情用
パーフェクトシンクもする方はもう1台スマホが必要になります
必要なソフトウェア
VseeFace 無料
https://www.vseeface.icu/iVRy Driver for SteamVR 無料https://store.steampowered.com/app/992490/iVRy_Driver_for_SteamVR/?l=japanese
SlimeVR 無料
https://github.com/SlimeVR/SlimeVR-Installer/releases/latest/download/slimevr_web_installer.exeVMC 有料 ハリトラ、Unimotion、Xinトラッカーの場合は必須 https://vmc.info/
Vroom 無料
https://booth.pm/ja/items/3949561Webカメラモーションキャプチャ 有料
https://booth.pm/ja/items/3407746
ARcore/ARkitについて
フルトラをする上で重要なのがヘッドトラッカーです。各トラッカーの位置の基準や上下左右の移動の為ヘッドトラッカー自身の位置推定が必要となります。
スマホのARcore/ARkitを使用し、カメラから取得した情報で自己位置推定を行います。
もしARcore/ARkitに対応したスマホがないよって方はiPhone6Sでも十分トラッキング出来ることを実証していますので検討されては如何でしょうか。
ARcore対応スマホ一覧
ARkit対応スマホ一覧
頭用トラッカーセットアップ方法
スマホは覗かずにおでこに固定し使います。以下のような器具があると楽に装着できます。iVRy無料版では5分後にモノクロ画面になりますがトラッキングや接続は続行されます。
①スマホにiVRyをインストールする

②iVRyの設定で6DOFを有効にする

③iVRy Driver for SteamVRをインストール
④スマホのiVRyとiVRy Driver for SteamVRを起動。スマホにSteamVRホーム画面が表示されれば接続成功。WiFi、USBどちらでも接続できます
⑤SteamVRルームセットアップを行う


これで頭のセットアップは終わりました。次に下半身トラッキングの設定を行います。
※次回オキュラスなどVR機器を使う際にiVRy Driverが干渉する場合があります。
SteamVRのスタートアップ設定のアドオンの管理からiVRyを無効にしてください
下半身用トラッカーセットアップ方法
使うトラッカーによって多少セットアップ方法が変わります。
それぞれトラッカーの初期セットアップは完了した状態を前提とします。
Unimortion、ハリトラ、Xinトラッカーなど市販品の場合はVMCを使いトラッカーの割り当て、キャリブレーションを行います。(VMCは手がないとキャリブレできない為、SlimeVRserverを使ってSteamVRに手を追加します。)
SlimeVRトラッカー、Joyconトラッカー、スマホトラッカーはSlimeVRserverでトラッカーの割り当て、キャリブレーションを行います。
Unimotionの場合
ベータ版 Uni-studioバージョン1.1.2beta5を使用してください。
①スマホでiVRyを立ち上げ装着する。次にUni-studioを起動(この時iVRy Driver for SteamVRは自動で起動する)
②Uni-studioの設定を以下のように変更する。
(UnistudioのVMCプロトコルは使いません。無効にしてください)



③IポーズSポーズキャリブレーションを行う


④VMCキャリブレの為に仮想の手トラッカーを用意する
SlimeVRをインストール、起動後設定にてsteamVRトラッカーの手を有効にする。初期状態は腰と足が有効になっているが無効にする。


⑤SteamVRの設定トラッカーの管理から追加したトラッカーの役割をハンドヘルドにして左右に割り当てる。
※ハンドヘルドを有効にするとオキュラスなどVRを行う際にコントローラーが反応しなくなる為その際はトラッカーの役割を無効にする。

⑥バーチャルモーションキャプチャーの設定。
VRMファイル読み込み後、設定のOSCでモーション送信を有効にするをチェック、VseeFaceに送信するポート番号を入力。例37900
トラッキングロスト、モデル調整は今回チェックは外しました。

⑦トラッカーの割り当てを行う。以下の通りに設定してください。

⑧キャリブレーションを行う。(Iポーズ)
モデルに対してトラッカーの丸がかなりズレますがそのまま直立で行ってください。
この時手のトラッカーを割り当てていなかったり頭ををivryに割り当てないとエラーになります。

⑨VseeFaceを起動
VseeFaceの設定でOSC/VMCプロトコル受信にチェックを入れる
ポート番号は先ほどVMCで設定した番号を入力
VseeFaceトラッキング使用は頭と首、背骨と胸、下半身はチェックを外す

⑩パーフェクトシンクを使う場合はiPhone/ARkitからトラッキングを受信にチェックを入れる。MeowFaceを使えばAndroidでもパーフェクトシンクが可能です。

⑪LeapMortionの設定。首にかけて使う場合は位置は胸ではなく、胸(動きに合わせない)を選択。

⑫お好みでVroomやUnity、UE5のモーションを送信して下さい
ハリトラの場合
①スマホでiVRyを立ち上げ装着する。iVRy Driver for SteamVRを起動後HaritoraCongiguratorでキャリブレーションを行う。設定も参照してください。
画像提供 @kanae_kawamiya






②VMCキャリブレの為に仮想の手トラッカーを用意する
SlimeVRをインストール、起動後設定にてsteamVRトラッカーの手を有効にする。初期状態は腰と足が有効になっているが無効にする。


③SteamVRの設定トラッカーの管理から追加したトラッカーの役割をハンドヘルドにして左右に割り当てる。
※ハンドヘルドを有効にするとオキュラスなどVRを行う際にコントローラーが反応しなくなる為その際はトラッカーの役割を無効にする。

④バーチャルモーションキャプチャーの設定。
VRMファイルを読み込み後設定のOSCでモーション送信を有効にするをチェック、VseeFaceに送信するポート番号を入力。例37900
トラッキングロスト、モデル調整はトラッキング状況に合わせて設定してください。

⑤トラッカーの割り当てを行う。以下の通りに設定してください。

⑥キャリブレーションを行う。(Iポーズ)
モデルに対してトラッカーの丸がかなりズレますがそのまま直立で行ってください。
この時手のトラッカーを割り当てていなかったり頭ををivryに割り当てないとエラーになります。

⑦VseeFaceを起動
VseeFaceの設定でOSC/VMCプロトコル受信にチェックを入れる
ポート番号は先ほどVMCで設定した番号を入力
VseeFaceトラッキング使用は頭と首、背骨と胸、下半身はチェックを外す

⑧パーフェクトシンクを使う場合はiPhone/ARkitからトラッキングを受信にチェックを入れる。MeowFaceを使えばAndroidでもパーフェクトシンクが可能です。

⑨LeapMortionの設定。首にかけて使う場合は位置は胸ではなく、胸(動きに合わせない)を選択。

⑩お好みでVroomやUnity、UE5のモーションを送信して下さい
SlimeVR、Joycon、スマホの場合
SlimeVR作成&セットアップ方法
Joyconトラッカーセットアップ方法
スマホトラッカーセットアップ方法
①SlimeVRをインストール
How to useのURLからダウンロード
https://github.com/SlimeVR/SlimeVR-Server
②トラッカーの電源を入れ、iVRy Driver for SteamVRとSlimeVRを起動

③SlimeVR設定から言語を変更、SteamVRのトラッカーはすべて無効にする

④VMCを有効にする。VRMモデルを読み込む。なるべくVseeFaceなどと同じモデルを使う。Ancher at hipsを無効にする。
VseeFaceに送信する為のportoutを指定する 例37900

⑤ホームに戻り、IMUトラッカーを選択割り当ての編集を押す

⑥腰、膝、足にトラッカーを割り当てる。ホームで装着したトラッカーを揺らすと反応するので割り当てを間違えないようにしてください。


⑦マウントキャリブレーションを行う




SlimeVRのセットアップは完了です。
⑧VseeFaceの設定でOSC/VMCプロトコル受信にチェックを入れる
ポート番号は先ほどSlimeVRserverで設定した番号を入力
VseeFaceトラッキング使用は頭と首、背骨と胸、下半身はチェックを外す

⑨パーフェクトシンクを使う場合はiPhone/ARkitからトラッキングを受信にチェックを入れる。MeowFaceを使えばAndroidでもパーフェクトシンクが可能です。

⑩LeapMortionの設定。首にかけて使う場合は位置は胸ではなく、胸(動きに合わせない)を選択。

⑪お好みでVroomやUnity、UE5のモーションを送信して下さい。
まとめ
設定の難易度が高いかもしれませんが、3D空間を自由に動けるのは楽しいです。比較的安価で何よりモニターを見ながらマウス、キーボードを操作できるのはありがたいです。余ったスマホでヘッドトラッキングを行い、メインのスマホでパーフェクトシンクもできるなどメリットはかなり大きいと思います。
是非今回の記事を見てフルトラやってみたよーって方いましたらツイート頂けると嬉しいです。
また、課題はありますがVRがなくてもフルトラを始めることができる為、個人的には市販トラッカーの販売促進にも繋がればいいなと考えております。
これからも霧雨なのはは3Dで活動するVtuberへの技術的な支援を行います。微力ながら界隈を盛り上げていけたらと思っておりますので応援のほどよろしくお願い致します!