🦴

[Blender] BlendArMocapを使ってモーションキャプチャ―からモーションを作成したかった

2023/09/01に公開

ここまでのゲーム開発ではMixamo等の配布サイトから取得したモーションを活用してきましたが、どうせならモデルの個性が感じられるモーションを付けてあげたいという思いがあります。
そこで今回はBlenderのアドオンの一つ、「BlendArMocap」を用いてMMDを動かしてみます。
※モーションの作成までは辿り着いていません。

前準備

BlendArMocapの特徴としてWebカメラの映像、もしくは動画から姿勢推定を行うため、モーションキャプチャ―に必要な機材がPCと通信できるカメラのみ(スマホでも可)という手軽さにあります。
当該アドオンはBlender内に組み込まれているPythonスクリプトとGoogleが提供する姿勢推定ライブラリの「Mediapipe」が必要になるので、まずはそちらの導入を行っていきます。
https://www.kkaneko.jp/db/cg/bpypip.html

  1. Blenderの起動、ワークスペースを"Scripting"(スクリプト作成)に変更
  2. Windowsのコマンドプロンプトを管理者権限で実行
  3. pipの更新("3.6"の部分は使用中のBlenderのverに書き替える)
"C:\Program Files\Blender Foundation\Blender 3.6\3.6\python\bin\python.exe" -m pip install --upgrade pip

  1. Mediapipeのインストール("3.6"の部分は使用中のBlenderのverに書き替える)
"C:\Program Files\Blender Foundation\Blender 3.6\3.6\python\bin\python.exe" -m pip install mediapipe

  1. BlendArMocapのダウンロード
  2. 上記でダウンロードした"BlendArMocap-main.zip"を適用し有効化
  3. 下の画像のようにPythonコンソール上にモジュールがインストールされたら成功です。これ以降はわざわざPythonコンソールやコマンドプロンプトを開くことなく、通常のアドオンと同じように使用できます。

またMMDモデルに適用したいという人は追加でmmd_toolsmmd_uuunyaa_toolsも入れておきましょう。

使っていく

では姿勢推定を行っていきましょう。
インストールが成功すればワークスペースをレイアウトに戻し、ワークスペース上でキーボードのNを押すことでBlendARが利用できるようになっています。

  • Mediapipe: 姿勢推定ライブラリ。今回使用する。
  • Freemocap: 姿勢推定ライブラリ。今回は使用しない
  • 転送: 得られた姿勢推定データをrigに転送する。

"Mediapipe"を開くと以下の画像のようなものが出てくる。

  • タイプ: Webcamか動画のどちらかを選択できる。
  • Key Step: キーフレーム中どの程度の頻度で推定を行うか。作者曰く下のターゲットで選択した部位によって変えるらしく、Hands, Faceの場合は4、Poseの場合は8が良いらしい。(とはいえ映像のfpsによりそうだが)
  • ターゲット: Hands(手), Pose(ポーズ), Face(面), Holistic(全体)の内どの部位を推定させたいか決められる。(Holisticを選んだ場合Hands, Pose, Faceをまとめて推定します。)
  • 詳細設定(Google訳)
    • Model Complexity: 一般に、ランドマークの精度と推論レイテンシーは、モデルの複雑さに応じて増加します。
    • Min Tracking Confide: 最小追跡信頼度: 検出が成功したとみなされるための、検出モデルからの最小信頼値 ([0.0,1.0])

今回は動画からHolisticを選んでみましょう。よって以下のように設定し、Detec Clipを押します。

映像から推定を行うウインドウが出てきた後、下の画像のように各部位の検出結果を収めたコレクションが作成されます。

では姿勢データをモデルに適用していきましょう。
今回はMMDモデルに適用させるため、MMDモデルからRigを作成します。
参考元:
https://www.youtube.com/watch?v=av9rYRu0F8c&

ファイル-インポート-MMD modelを選択し、MMDモデルをインポート。

mmd-toolsのUuuNyaaオペレーターから「メタリグを追加」を選択。コレクションに「metarig」が追加されているので、metarigを選択しながらデータから「Generate Rig」を押してrigを作成。残ったmetarigは削除しておきます。

可視性レイヤーを自身が見やすいものに変更し、rigをテクスチャにした後最前面にチェックを入れます。

rigを選択しながらMMDモデルのアーマチュア部分を"Shift + 左クリック"で同時選択します。
するとUuuNyaaオペレーターのRigifyからMMD項目が選択できるようになっているので「Rigify操作性を重視して統合」を選択します。

これでRigとMMDモデルの統合が完了したので、ようやく姿勢推定データ適用することが出来ます。
では再度「BlendAR」を開き、「転送」を選択。アーマチュアにMMDモデルを指定し、ドライバーに適用させたい推定箇所を選択してから「Transfer Animation」を選択する事でMMDモデルが動くようになります。

完成

これでMMDモデルがモーションキャプチャ―で推定したように動くようになりました。
正直なところ精度としては微妙な感じで、関節が変な角度に曲がったり手の推定がいまいちだったりするのでここから編集は必須になります。
ただ導入さえしてしまえばBlender内で完結できるのでそこが一番の魅力ですね。

Discussion