mikangadget
← Works

Pose Estimation / VRChat

単眼の映像から全身の動きを推定して、VRChat のアバター(Kipfel)に乗せられるかを試すパイプライン。

  • 2026
  • Python
  • RTMPose
  • MotionBERT
  • Blender
  • OpenVR
リポジトリは非公開

流れ

最終的には単眼カメラで 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 側で頭・両手・腰・両足が動くところまで確認した
2D 骨格とアバターの比較左が推定した 2D 骨格、右が Kipfel に反映したもの
次の作品 →HTML で動画を作る