WebカメラでSteamVRのフルトラッキングを行える、Mediapipe-VR-Fullbody-Trackingを使ってみた時のメモです。
VRChatでフルトラを試してみました。
ゆるふわ原理説明

内部的には、Googleが公開している機械学習ライブラリMediaPipeのPose Landmarkerが使われていると思います(たぶん)。
中身は多分こんな感じになっています(たぶん)。
- Webカメラで撮影した人の映像を、Pose Landmarkerに入力する
- Pose Landmarkerから姿勢の情報(脚の座標、腰の座標など)が出力される
- いろいろ補正して、姿勢情報をSteamVRの仮想トラッカーとして扱えるようにする
- 仮想トラッカーの出力をVRChatなどで利用
手順
リポジトリのREADME.mdにも説明が書いてありますが、要約を日本語でまとめてみます。
初回セットアップ
(ダウンロード、ドライバーインストールについては、2回目以降は必要ありません)
ダウンロードする
リポジトリのReleasesページを開き、mediapipepose-0.7-beta-windows.zip をダウンロードします。
ダウンロードが終わったら適当なディレクトリに展開します。
ドライバーをインストールする
<展開先のディレクトリ>/driver_files/install_driver.exe を起動し、ドライバーをインストールします。
Webカメラを設置
WebカメラをPCに接続し、良い感じの場所に設置します。
TIPWebカメラを準備する際の注意点です。
- つま先から頭まで含めた全身を正面から収める必要があります。
- 映像が縦向きになるようにカメラを設置すると収まりやすいです。人体は縦長なので
- 余りにも低い位置・高い位置にカメラを設置していると精度が落ちます。
- カメラ解像度と精度は基本的に関係ないため、高画質なカメラを使う必要はありません。(映像は内部的に256*256の解像度で扱われます)
TIPAndroid端末がある場合、IP WebcamをインストールすることでWebカメラを代用することができるようです。(私は使っていません…)
プログラムを起動し、初期設定する
start_mediapipepose.bat を開き、プログラムを開始します。
しばらく待つと初期設定ウィンドウが開きます。カメラの設定などをしていきます。

Camera IP or ID
USB接続の一般的なWebカメラを使っている場合、0を指定します。意図していないWebカメラが起動した場合は1, 2…を試してください。接続中のWebカメラと番号が1対1で対応しています。
IP Webcamを使っている場合はパス名(例: http://<ip_address>:8080/video)を指定します。
Camera width / Camera height
基本的にデフォルトで大丈夫です。
Backend
SteamVRを指定している前提で話を進めます。
その他
チェックが外れていることを確認してください。
Save and Continue はまだクリックしないでください。SteamVRが起動していない状態で先に進むと、アプリが停止します。
SteamVRを起動する
HMDを被って、SteamVRを起動します。直接VRCを起動しないでください。
キャリブレーション
SteamVRでデスクトップの画面を表示し、初期設定ウィンドウのSave and Continue をクリックします。キャリブレーション画面が表示されます。

カメラの正面に真っ直ぐ立ち、Recalibrateボタンをクリックします。
ゲームを起動する
SteamVRのトップ画面からゲームを起動します。今回はVRChatを起動します。
VRChat側でもキャリブレーションしましょう。
結果
おしゃしん

脚が上がる!

体を捻れる!

スクワットできる!
やりたいこと
現状だとトラッキングがカク付いてしまうのですが、どうもWebカメラ側の調子が悪いような気がします1。 なんとかしたいね。
シアンちゃんでフルトラBeatSaberの動画も撮れないかなーーと思案しているところです。シアンだけに
使用モデル


Footnotes
OBSでWebカメラの映像を映すとグリッチが発生していました ↩
