CGBoxの一部の記事にはアフィリエイト広告が含まれております。
【Blender 3.3】モーションデータ(BVH)を使ってアニメーションを作ってみよう!
こんにちは!
コチラの記事では、フリーの3DCGソフト「Blender」を使う上でのヒントになる情報を発信しています。
今回は、3DCGのモーションデータを保存するファイル形式「BVHファイル(.bvh)」のBlenderでの使い方を紹介します!
BVHのモーションデータをBlenderにインポート・エクスポートする方法、およびモデルのリグにモーションを適用(リターゲット)してアニメーションを作る方法をまとめてみました。
BVHを使うことで、モデルに実在の人間のような動きをさせることができるので、そのやり方を紹介していきます。
BVHファイルとは?
BVHファイルは、正式名称を「Biovision Hierarchy」といって、かつて存在した「Biovision社」という会社が開発したモーションキャプチャー用のファイルフォーマットです。
骨格(スケルトン)とモーションを記述したモーションデータから構成されており、Blenderに読み込んでタイムラインを再生すると、コチラのようにリグが動きます。
BVH(Biovision Hierarchy)ファイルについて、詳しくはWikipediaの記事を参照してください。
リグとモーションを保存できるファイル形式にFBXがありますが、FBXはメッシュやマテリアルなど3DCG関連のデータ全般を保存できるのに対して、BVHはモーションデータに特化したファイル形式です。
FBXと比べて余分なデータがない分容量が軽いので、大量のモーションデータを保存するのに最適なファイル形式です。
3DCGデータをBlenderからFBX形式でエクスポート・インポートする方法については、コチラの記事を参考にしてみてください。
BVHのインポート設定
まず、BlenderにBVHファイルをインポートするための設定項目を紹介します。
「ファイル」→「インポート」→「Motion Capture(.bvh)」からBVHファイルをインポートできます。
BVHファイルのインポートメニューが表示されない場合は、「編集」→「プリファレンス」→「アドオン」で「Inport-Export: BioVision Motion Capture(BVH)format」にチェックを有効にしてください。
「Motion Capture(.bvh)」を選択すると、コチラのような設定画面が立ち上がります。
設定項目の内容はこんな感じです(詳細は「Blenderリファレンスマニュアル」を参照してください)。
- ターゲット:モーションデータの場合はデフォルトの「アーマチュア」でOKです。
- アーマチュア:BVHファイルがモーションキャプチャのようなアニメーションリグの場合に選択します。
- オブジェクト:BVHファイルがメッシュオブジェクトの場合に選択します。
- トランスフォーム:
- スケール:読み込むBVHファイルのサイズを調節します。
- 回転:BVHファイル内で設定された回転の順序を設定します(例えば「オイラーXYZ」ならばX→Y→Zの順)。
X,Y,Z軸のうち複数の軸回りの回転を組み合わせる際に、回転がカクついてしまう「ジンバルロック」という現象が発生することがあります。
基本的にデフォルトの「オイラー(ネイティブ)」のままで問題ありませんが、回転運動でカクつく場合は設定をいじってみてください。 - 前方/上:読み込むファイルの前方・上方の軸を設定すると、Blender座標系(Y前方、Z上方)に変換します。
モーションデータは-Z前方、Y上方になっているのが一般的なので、デフォルトの読み込み設定では「-Zが前方」「Yが上」に設定されています。
読み込んだモーションデータが横倒しになったりする場合は修正してみてください。
- アニメーション:
- 開始フレーム:Blender上でアニメーションを開始するフレームを設定します。
- ループ:アニメーションの再生を繰り返します。
- シーンFPSを更新:BVHファイルにフレームレート(アニメーションの一秒あたりのフレーム数)が設定してある場合、BlenderのフレームレートをBVHにあわせて更新します。
- シーン期間を更新:BVHのフレーム数がBlenderの開始~終了フレームより多い場合、Blenderの終了フレームをBVHにあわせて更新します(BVHのフレーム数の方が少ない場合は更新しません)。
BVHのエクスポート設定
つぎに、BlenderからBVHファイルをエクスポートする際の設定を紹介します。
「ファイル」→「インポート」→「Motion Capture(.bvh)」からBVHファイルをエクスポートできます。
BVHファイルのインポートメニューが表示されない場合は、「編集」→「プリファレンス」→「アドオン」で「Inport-Export: BioVision Motion Capture(BVH)format」にチェックを有効にしてください。
ボーン(アーマチュア・リグ)を選択した状態で、「ファイル」→「エクスポート」→「Motion Capture(.bvh)」を選択すると、コチラのような設定画面が立ち上がります。
設定項目の内容はこんな感じです(詳細は「Blenderリファレンスマニュアル」を参照してください)。
- トランスフォーム:
- スケール:現在のスケール(サイズ)に対して、出力するBVHのスケールを拡大・縮小します。
- 回転:BVHファイル内で設定された回転の順序を設定します(詳しくはインポート設定を参照ください)。
- ルートの移動のみ:ルートボーンの移動のみを出力します。
- アニメーション:
- 開始フレーム/終了:BVHに出力するフレーム期間を設定します。
BVHをリグにリターゲット(適用)してみよう!
有料アドオン「Auto Rig Pro」を使って、BVHファイルのモーションデータをモデルにリターゲット(適用)し、アニメーションを出力するまでの流れを紹介します!
BVHファイルの入手先
まずはBVHファイルを無料で入手できるサイトを紹介します。
コチラの記事で、BVHファイルの入手先を紹介していますので参考にしてみてください。
その中で、今回はアメリカの「カーネギーメロン大学」が作成した、人間の様々な動きのモーションデータをダウンロードできる”cgspeed”というサイトのBVHファイルを使用します。
コチラのリンク先から、「Daz-friendly version」を選択して「DOWNLOAD LINKS AND RELATED FILES:」のリンク先からダウンロードします。
cgspeedからダウンロード出来るBVHファイルは「Daz-friendly version」「3dsMax-friendly version」「MotionBuilder-friendly version」の3種類ありますが、使用するモデルとレストポーズが同じものを選ぶのがオススメです(今回はTポーズのDax-friendlyを選択)。
アドオン「Auto Rig Pro」の入手方法
つぎに、今回BVHモーションデータをリグにリターゲットするのに使う「Auto Rig Pro」の入手方法を紹介します。
Auto Rig Proはコチラの「Blender Market」のサイトから購入できます。
40ドルのフル機能版と、19.5ドルのLite版がありますが、リマップをする場合は、フル機能版を入手してください。
有料ですが、リギングが非常に楽になって便利な上に、一度購入すれば無料で最新バージョンに更新できるので、購入しておいて損はないかと思います。
「Auto Rig Pro」のインストール方法については、コチラの記事を参考にしてみてください。
Auto Rig Proを使ったリグ作成・アニメーション作成の基本的な流れについても上の記事で解説しているので、あわせて参考にしてみてください。
Auto Rig Proを使ったリマップ(リターゲット)のやり方
Auto Rig Proを使って、リターゲット(Auto Rig Proのメニューでは「Remap」なので、以降の手順ではリマップと呼びます。)
今回は、「Vroid Studio」から出力した、リグ付きのVRMモデルにBVHファイルから読み込んだモーションデータをリマップします。
「Vroid Studio」で作成したVRMモデルをBlenderにインポートする方法は、コチラの記事で貝瀬クしているので、参考にしてみてください。
「アニメーション」→「シーン期間を更新」にチェックをいれて、他はデフォルトのままとしました。
「Source Armature」(読み込み元)をBVHから読み込んだリグ、「Target Armature」(適用先)をVRMモデルのリグに設定します。
「Auto Scale」を選択するとBVHから読み込んだリグのスケールが適用先のモデルにあわせて調節されます。
ただし、コチラの例のようにほぼすべて「None」(定義されていない)になってしまうことが多いので、手動で定義する必要があります。
コチラのように、二つのリグを複数選択した状態でポーズモードにし、ひとつひとつボーンをクリックしながら対応関係を定義していきます。
腰のボーン(BVHリグの「hip」、VRMモデルリグの「J_Bip_C_Hips」)は「Set as root」にチェックを入れておきます。
最終的に、コチラのようにボーン同士の対応関係を設定しました。
設定したボーンリストは「Mapping Presets」→「エクスポート」から、「~.bmap」というファイルにエクスポートして保存しておきましょう!
同じ形式のモーションデータをリマップする際に、ボーンリストをインポートできます。
タイムラインを再生すると、モデルがBVHリグと同じ動きをします。
ちなみに、Adobe社が提供している「Mixamo」のモーションデータ(FBX形式)については、Auto Rig Proのプリセットを使ってAuto Rig Proで作ったリグモデルに簡単にリマップすることができます。
詳しいやり方についてはコチラの記事を参考にしてみてください。
リマップの注意点
レストポーズが異なるBVHからリマップすると、こんな風に腕や足がおかしな方向に向いてしまいます。
レストポーズが同じモーションデータを使うのがオススメですが、もしない場合は以下の方法でVRMモデルリグのレストポーズをBVHに合わせることで修正できます。
複製したリグモディファイアーを適用します。
レストポーズを変更した状態で「Re-Target」を実行すると、コチラのようにBVHと同じモーションになりました。
レストポーズの修正方法については、コチラのTwitter投稿を参考にさせていただきました。
合わせて参考にしてみてください。
また、Auto Rig Proで作ったリグモデルは、コンストレイントがかかっていたり、レイヤー分けされていたりと結構複雑な構造をしているため、今回紹介した手動リマップを直接行うのは難しいです。
Auto rig proで作ったリグにBVHのモーションデータを適用する場合は、以下の方法を試してみてください。
- まずは先ほど紹介した方法で、BVHリグ→MixamoからエクスポートしたFBXリグへ手動でリマップする。
- 次に、「『Auto Rig Pro』で人物モデルをリギングしてみよう!〔機能紹介編〕 」の記事で紹介した方法で、MixamoリグからAuto rig proリグに自動でリマップする。
Mixamoのリグを間に挟むことで、コチラのようにBVHのモーションデータをAuto Rig Proのリグにリマップすることができました。
アニメーションの出力方法
最後に、アニメーションをMP4形式で出力する方法を簡単に紹介します。
コチラのように、カメラ・ライト・背景を配置します。
「出力プロパティ」から解像度、フレームレートなどを設定します。
「ファイルフォーマット」をFFmpeg動画、「エンコーディング→コンテナ」をMPEG-4に設定します。
「レンダー→アニメーションレンダリング」(またはショートカットキー「Ctrl+F12」)でアニメーションが出力されます。
アニメーションレンダリングする方法については、コチラの記事で紹介されているので、あわせて参考にしてみてください。
まとめ
BVHモーションデータをBlenderにインポート・エクスポートする方法、リグモデルにリターゲット(リマップ)する方法を紹介してみましたが、いかがだったでしょうか?
手動リターゲットはボーンリストを作るのが面倒ですが、一度作っておけば色んなモーションデータをリターゲットして、複雑なアニメーションを作ることができるようになります。
Auto Rig Proを使ったリターゲットについて、もしコチラの記事を読んでもうまく行かない場合は、ぜひ相談に乗りますので、コメント欄で教えてください!