Blender ウォッチング

カメラに映った自分の動きを即時にVRMへ反映できる無料モーションキャプチャーツール

マーカー不要! もちろん「Blender」で取り込んでアニメーションに利用することも

 本連載では、無料の高機能3Dモデリングツール「Blender」の使い方や関連情報を幅広くお伝えします。

フュー○ョンは無理だったのでハートマークっぽい何か

 今回は機械学習により、マーカーなどの器具なしにモーションを記録してくれる、「ThreeDPoseTracker(TDPT)」をご紹介したいと思います。記録したモーションデータは「BVH出力」により「Blender」でも利用可能です。

 アプリ単体でも好きなVRMファイルを読み込み、いわゆるVTuberとしてリアルタイムでキャラクターを制御し配信することもできます。

 本記事では「ThreeDPoseTracker Ver.0.5.1」と「Blender 3.3.1」を使用しています(ビデオカードはRTX2060 12GB)。

ダウンロードとインストール

 ダウンロードは公式サイトではなく、「Pixiv」の「Booth」ページから行います。そのため、「Pixiv」への登録が必要です。

TDPT(Windows版) - デジスタSHOP - BOOTH

 3つのボタンがありますが、どれも同じとのことなので、まずは無料で試すのがいいでしょう。もし気に入ったのであれば、後で他のボタンをクリックして支援することもできます。

ダウンロードページ

 インストール方法は、ダウンロードした「.zip」ファイルを好きな場所に展開するだけです。アンインストールも展開したフォルダーごと削除すればOKです。

起動と映像ソースの選択

 起動前に、あらかじめWebカメラ、または動画ファイルを用意しておきます。カメラは起動後に接続しても認識されないので注意してください。

  • Webカメラは「DroidCam」のようなスマートフォンアプリ+PCでも動作しますが、公式サイトの説明によると「OBS Virtual Camera」には未対応らしく、他のデバイスについても実際に確認しておくことをお勧めします。
  • 動画ファイルはMP4/MOV/WMV形式でないと読み込めません。また筆者が試したところ、MP4形式でもコーデックがHEVC(H.265)のファイルは利用できませんでした。

 準備が出来たらフォルダー内の「ThreeDPoseTracker.exe」をダブルクリックして起動します。もし「Smart Screen」で起動が中断されてしまった場合、[詳細情報]をクリックし、表示された[実行]ボタンをクリックすれば起動できます(他の信用できるかどうかわからない物の場合は実際に調べて判断してください)。

起動が中断されたら[詳細情報]をクリック後、[実行]ボタンをクリック

 デフォルトでキャラクターがバンドルされていますので、まずはこれを動かしてみましょう。

 上の方にある[Source Device]ドロップダウンリストをクリックし、使用するデバイスを選択します。

[Source Device]ドロップダウンリストから利用するデバイスを選択

 うまく動作すれば、小さな窓にソースデバイスからの映像が、背景にミラー反転した映像が表示されます。小さい方の窓の範囲外に手や足が出てしまうと、キャプチャーに失敗しますので、できるだけ全身が収まるようにしてください。

キャプチャー画面。小さな窓がソースデバイスの映像、背景は確認しやすいようミラー反転された映像になりわかりやすい。ピクセル状なのはモザイクオプションのため。

3D画面の操作

 カメラのアングルは[Alt]キーを押しながらのマウス操作で行います。左マウスボタンドラッグで「回転(画面中央を中心としたカメラ位置の移動)」、中マウスボタン(ホイール)ドラッグで「平行移動」、右マウスボタンドラッグで「回転(カメラの方向変更)」が可能です。また、ホイール回転でズームイン・アウトできます。モーションキャプチャー目的では使うことはないかもしれません。

 また、前述のソースデバイス映像の表示・非表示や、別の背景への差し替えなどは[Configuration]ボタンから可能です(後述)。

キャプチャーデバイスの解像度の変更(カメラ利用時)

 カメラ使用時は、デバイスの解像度を選択可能……らしいのですが、筆者の場合は「DroidCam」(正しくは有料版)を使用していたためか、解像度は固定でした。残念。

入力映像の解像度が変更可能(※ただし対応している場合に限る)

動画の一時停止とスキップ(動画利用時)

 一方、ソースデバイスに動画を利用した場合は、一時停止とスキップのボタンが表示され、動画の操作が可能になります。巻き戻しや逆方向へのスキップはできないようです。

[Pause]と[Skip]で一時停止と特定フレームへのスキップが可能

ハンドトラッキングについて

 デフォルトではハンドトラッキングはOFFになっていますが、画面上部の[Configuration]画面の[Upper Mode]タブにある[Use Hand Tracking (β)]をONにすれば、指の動きをトラッキングすることも可能です。

顔の横でダブルピースしてみた例。手の位置がずれているが、指自体は再現されているようだ

 他にも[Configuration]ボタンから各種設定が可能です。

 各タブの説明については、公式サイトのマニュアルを参考にしてみてください。

モーションの記録

 モーションデータを「BVHファイル」に記録し、他の3DCGツールで利用できるようにします。
 スクリーン上の[Record BVH]ボタンをクリックすると、赤い[Recording]ボタン表示になります。再度クリックすると、ファイルの保存場所を指定するダイアログが出ますので、設定すればOKです。

[Record BVH]ボタンをクリックすると、赤い[Recording]ボタンになって記録開始。もう一度押すと止まり、保存ダイアログが表示される

 他の機能同様、[Configuration]-[Record]タブに細かい設定があります。ここには「Blender」の軸方向(ZUp)に合わせる設定がありますが、これは「Unity」と「Blender」との連携時に必要になるらしく、「Blender」に持っていくだけなら、「Blender」側の「BVH importer」のデフォルト設定で変換できるので、OFFのままでもかまわないでしょう。

「Blender」での読み込み

 「Blender」では、[ファイル]-[インポート]メニューの[Motion Capture (.bvh)]からデフォルトで有効化されているインポーターを呼び出します。

[ファイル]メニュー-[インポート]-[Motion Capture (.bvh)]からインポーター呼び出し

 インポート時は右側のオプションの[前方]が「-Zが前方」に、[上]が「Yが上」になっていることを確認してください(デフォルト設定)。

インポート時は右側のオプションの[前方]が「-Zが前方」に、[上]が「Yが上」になっていることを確認

 インポートが成功すれば、自動的に「アーマチュア」が生成され、アニメーションが設定されます。実際のキーフレームを表示したい場合は、左上から[ポーズモード](①)に変更し、ボーンをクリック(②)して選択してみてください。

 また、再生の「終了」(③)を十分大きくしておかないと、途中で切れるかもしれません。

インポートが成功すれば「アーマチュア」が生成される。実際のキーフレームを表示したい場合は、左上から[ポーズモード](①)に設定し、ボーンをクリック(②)して選択する。再生の「終了」(③)を大きくするのを忘れずに

トラッキング精度について

 残念ながら、手が見えない状態(後ろ手を組むなど)や、片足を上げた時に重なっていたりするとうまくキャプチャーできません。状況によっては広さや照明、カメラの解像度を工夫すれば改善される可能性はあります。

 これはハンドトラッキングも同様で、背景をバックにする方がうまく動作するようです。

片足だけを上げたつもりが、足が重なって両足が上がってしまった例

 パンチのような高速な動きは30FPS程度ではトラッキングできないので、可能ならフレームレートを上げるか、スローモーションで動く必要があるでしょう。

 また、筆者の環境では足が常にフラフラしていましたので、インポート後の修正が必要になります。いずれにせよアニメーションとして利用するなら、後の修正を前提として利用すべきです。

 モーションによっては[Configuration]画面の[Predict]タブの設定の変更で改善できるかもしれません。

【普通のカメラだけで全身モーションキャプチャ TDPT (Windows版)】

終わりに

 最後に少し厳しいことを書いてしまいましたが、機材もほとんど必要なく、手軽にトラッキングできるのはありがたいです。

 ではまた。