今回作成するアニメーションです。走るモーションデータを簡易人体モデルに適用しています。
( ↓ gifファイルです。クリックすると動きます。)
Blenderは、BVHファイル形式のモーションデータを利用できます。
BVHファイルには、ポーズや動きが付けられたアーマチュアのデータが含まれています。アーマチュア(骨格)は、ボーン(骨)で構成されていて、モーションデータには、レスト位置(動きの基準となる位置)からのボーンの移動量と回転量が記録されています。なお、アーマチュア(骨格)とボーン(骨)は、グループとメンバーのような関係ですが、言葉としては同じ意味合いで使われることがあります。
Blenderで作成したモデルに、アーマチュアを関連付けさせることでモーションを取り込む方法を説明します。アーマチュアの体型やレスト位置の姿勢(足の開き方)が作成したモデルと異なる場合の対処も行っています。
*Windowsのキー操作で書いています。Macの方は以下のように変換して下さい。
Window[Mac]キー対応:alt[option]、ctrl[control]、windows [command]
目次
BVHファイルを入手する
BVHファイル(モーションキャプチャデータ)を入手します。
リストで動かしてみたいデータの番号を確認し、その番号が含まれる圧縮ファイルをダウンロードしてファイルを入手します。
- 下記のページを開いて、リストから使いたいモーションファイルの番号を確認します。
sites.google.com
今回は、『#2』の『02_03』の 『run/jog』のモーションを使います。
この番号で目的のモーションファイルを探します。
- 下記のページを開きます。
sites.google.com
- 『2010 RE-RELEASE DOWNLOAD LINKS AND CAVEATS:』の『BVH directories 01-09』をクリックします。
『BVH directories 01-09』の末尾の数字は、リストの#1~#9のモーションファイルを含んでいるという意味です。今回は『#2』を使うので、末尾が01-09のファイルを選びます。
- 『Download』をクリックします。
『cmuconvert-mb2-01-09.zip』がダウンロードされます。
- 『cmuconvert-mb2-01-09.zip』を解凍します。
『cmuconvert-mb2-01-09』フォルダの『02』の『02_03.bvh』が対象のファイルです。
ブラウザで作業
モーションを適用する人体モデルを用意する
下図のような単純なモデルを用意しました。
- 下記のページの『Download』をクリックします。
https://github.com/githubmorley/blog-files/blob/master/160330/blender.blend
『blender.blend』がダウンロードされます。
ブラウザで作業
BVHファイルのモーションデータを人体モデルに適用する
BVHファイルをインポートする
- 『blender.blend』をダブルクリックして開きます。
Blenderで作業
- 『ファイル』→『インポート』→『Motion Capture(.bvh)』をクリックします。
- 『cmuconvert-daz-01-09』の『02』フォルダの『02_03.bvh』を選択して『BVHインポート』をクリックします。
- 『home』キーを押して、オブジェクト全体を表示します。
- アーマチュア(ボーン)を選択して、『オブジェクトプロパティ』の『ビューポート表示』の『最前面』にチェックを入れます。
『3Dビュー』でアーマチュアが常に表示されるようになります。
- 『オブジェクトデータプロパティ』の『スケルトン』の『レスト位置』をクリックします。
アーマチュアがレスト位置(ポーズが付いていない状態)になります。
アーマチュアと人体モデルの姿勢を合わせる
人体モデルは足を閉じていますが、アーマチュアは足を開いています。
このままアーマチュアをモデルにを適用すると動きがおかしくなるのでズレを直します。
- 『tab』を押して編集モードにします。
- アーマチュアの左足の付け根を選択した後に『shift + s』キーを押して、『カーソル→選択物』をクリックします。
- フルキー側の『.(ピリオド)』を押して、『3Dカーソル』をクリックします。
ピボットポイント(移動、回転、拡大縮小の基準点)が『3Dカーソル』の位置になります。
- 左ドラッグで、左足全体を選択します。
- 『r』→『y』→『20』キーを押して、アーマチュアの足をモデルの足と平行にします。
- 反対側の足も同様にします。
『r』→『y』→『-20』キーで回転させます。
- 『オブジェクトデータプロパティ』の『スケルトン』の『ポーズ位置』をクリックします。
- 『ctrl + tab』を押して、『ポーズモード』をクリックします。
レスト位置を変更したため、足が交差しています。
- 下のパネルを『タイムライン』から『グラフエディター』に変更します。
- 下図のように左太腿のボーンを選択します。
- 『グラフエディター』パネルで、Z軸以外の瞳のマークをクリックして非表示にします。
- グラフが全選択された状態で『g』→『y』→『20』と入力して、グラフ全体を20度オフセットします。
足を閉じる動作は、Z軸の回転です。
『3Dビューポート』パネルのアーマチュアは下図のようになります。
- 反対側の足も同様にします。
『グラフエディター』パネルで『g』→『y』→『-20』キーで移動させます。
『3Dビューポート』パネルのアーマチュアは下図のようになります。
- 左肩と右肩も下がり気味なので同様の操作でほぼ水平にします。
『グラフエディター』パネルで、左肩:『g』→『y』→『8』キー、右肩:『g』→『y』→『-8』キーで移動させます。
『3Dビューポート』パネルのアーマチュアは下図のようになります。
- 下のパネルを『グラフエディター』から『タイムライン』に変更します。
アニメーションを確認する場合は、『space』キーで再生/停止、『shift + ←』キーで最初に戻ります。
Blenderで作業
アーマチュアと人体モデルのサイズを合わせる
『オブジェクトモード』で拡大縮小すると、アニメーションの位置情報(移動距離)も拡大縮小します。『編集モード』では位置データはそのままです。ここではアーマチュアと人体モデルの足の長さを揃えることで移動距離がそれらしく見えるようにします。
- 『オブジェクトデータプロパティ』の『スケルトン』の『レスト位置』をクリックします。
- 『ctrl + tab』キーを押して、『オブジェクトモード』にします。
- 『shift + c』キーを押して、全体を表示して3D カーソルを原点の位置にします。
- アーマチュアを選択した後に『s』キーで拡大縮小して、原点から足底までのサイズを合わせます。
- 『tab』キーを押して『編集モード』にします。
- 下半身を選択した後に『s』→『x』キーで拡大縮小して、足の幅を合わせます。
- 上半身を選択した後に『s』→『z』キーで拡大縮小して、手の高さを合わせます。
- 『s』→『x』キーで拡大縮小して、手の幅を合わせます。
- 首の付け根を選択した後に『shift + s』キーを押して、『カーソル→選択物』をクリックします。
- 首から上を選択した後に『s』→『z』キーで拡大縮小して、頭の高さを合わせます。
Blenderで作業
アーマチュアと人体モデルを関連付ける
- 『tab』を押して、『オブジェクトモード』にします。
- 『shift』キーを押しながら、モデル→アーマチュアの順にクリックして複数選択します。
- 『ctrl + p』キーを押して、『自動のウェイトで』をクリックします。
- 『オブジェクトデータプロパティ』の『スケルトン』の『ポーズ位置』をクリックします。
- 『タイムライン』パネルの『開始』を”2”、『終了』を"174"にする
- 『アウトライナー』パネルで、アーマチュアの瞳のマークをクリックして非表示にします。
- 『タイムライン』パネルの操作ボタン、または下表のショートカットでアニメーションを再生します。
再生/停止 space 1フレームずつ順送り →または↑ 1フレームずつ逆送り ←または↓ 開始フレームに移動 shift + ← 終了フレームに移動 shift + →
Blenderで作業
これで、BVHファイルの適用は終了です。
あとがき
今回の作業の注意点は下記の通りです。
- オブジェクトモードで拡大縮小すると『アニメーションの移動距離』が変わります。
- 編集モードで関節の角度を変えると、アニメーションの動きがおかしくなります。
- レスト位置のままだとアニメーションが再生されません。
モデルとアーマチュア(レスト位置)の姿勢が異なる場合の対処方法を見つけるのに苦労しました。