機械学習によるポーズ推定でモデル人形を制作する(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