機械学習によるポーズ推定でモデル人形を制作する(2)

Creating Model Dolls Using Machine Learning(2)
前回で作成した、機械学習による3次元関節データを3DCGソフト「Blender」で取り込んでみましょう。

まずはBlenderをWindowsにインストールします。ここでは2.8 LTSを使用しています。

人体モデルの作成にはオープンソースプロジェクト「Makehuman」を使用します。インストールしたMakehumanを起動したら、あなた好みの体型を作ります。
関節データがないとBVHデータが反映されないので、「Pose/Animate→Skeleton」で「Game Engine」のRigを選択しておきます。
このモデルを「mhx2」形式でエクスポートします。なお、「Scale Units」を「meter」以外にすると、Blenderで巨大な人形が配置されてしまいます。
それでは先ほど作ったcsvファイルをBlenderで読み込める形式に変換します。Windowsのコマンドプロンプトを開いたら、以下のコマンドを実行して、Blenderに内蔵されているスクリプトツールで変換します。変換が完了すると、フォルダー内に「result.bvh」が生成されます。

独自のcsv_to_bvhは私のGithubプロジェクトページからダウンロードできます。
cd "C:\(csv_to_bvh.pyのあるフォルダ)" "C:\(blender.exeへのファイルパス)" --background csv_to_bvh.blend -noaudio -P csv_to_bvh.py
変換が完了すると、「result.bvh」が出力されるので、これをBlenderに取り込みましょう。

Makehumanのプラグインリストより「MHX2 (blender side)」をダウンロードします。Blenderを起動したら、メニューの「編集→プリファレンス→アドオン」を選び、「インポート」ボタンより、ダウンロードしたzipファイルをそのまま選択します。するとリストに「Makehuman:Import」が追加されるので、チェックを入れてプラグインを有効化します。
MakewalkというアーマチュアにBVHデータを適用させるプラグインを同じ要領でBlenderに導入します。

ファイルのインポートから「Makehuman(.mhx2)」を選び、保存したモデルを読み込みます。
インポートしたモデルがのっぺりしていて不気味なようなら、シェーディングを有効にしましょう。
あとはサイドメニュー(キーボードの[N]で表示)より「Makewalk→Load And Retarget」より、変換したBVHファイルを読み込み、アニメーションフレームを2以上の値にすると、ポーズが適用されているのが確認できます。
体の内側など、見えていない部分は所詮推定なので、微調整してよりきれいに整えましょう。

[追記] BVH形式データのBlenderへの適用にはBVH Retargeterというプラグインも便利です。
2020/06/11