Pose Estimation / VRChat
単眼の映像から全身の動きを推定して、VRChat のアバター(Kipfel)に乗せられるかを試すパイプライン。
流れ
最終的には単眼カメラで VRChat のフルトラッキングをしたい。その前段階として、既存の動画でオフラインで確かめている。
動画 ─▶ RTMPose-x (Halpe26, 2D) ─▶ MotionBERT (2D→3D) ─▶ 2D整合補正 ─▶ Blender でリターゲット ─▶ 比較動画
- 人物は YOLOX-x で見つけて、RTMPose-x で 2D の関節を取る
- MotionBERT で 3D にする。3D の投影が 2D と大きく食い違う手足の骨だけ、2D に合わせて直す
- アバターには関節の「位置」ではなく骨の「向き」を合わせる。体型が違っても使える
- 腕は頭・胸・腰とぶつからないように押し出す。めり込みが 5mm を超えるフレームは 72% → 0.4% になった
- 書き出しは
.fbxと.blend。FBX は Unity に Humanoid で読み込める
VRChat につなぐ
- HMD なしで VR モードを動かすために、SteamVR のドライバを自作した(仮想 HMD・コントローラー2本・トラッカー)
- 推定した姿勢を 90Hz で送り、SteamVR 側で頭・両手・腰・両足が動くところまで確認した