BVHファイルについて
BVHファイルとは、BioVision Hierarchyの略で、実際の動作をモーションキャプチャしたデータを納めるフォーマットの一つです。Poserで利用できるファイルフォーマットで、数多くのファイルがインターネットで提供されています。有料のものがほとんどですが、無料のファイルも数多く出回っています。
BVHファイルを利用すると、非常にリアルな感じの動きをキャラクタに与えることが出来ます。元が実際の人間の動作ですから、当たり前と言えばそれまでです。しかしキャプチャされた時の役者の演技力がつたないと、結局不自然な動作になるので、何でもかんでもBVHがリアルな動作であるとも言い切れないので注意して使いましょう。
BVHファイルの入手
今回例題として使うBVHファイルは、animazooでフリー素材として公開しているものを使いました。
BVHのフリー素材は、この他にも色々な所から入手することが可能です。
この他にも、探せば色々と見つかるはずです。上記リストのうちCMU Graphics Lab Motion Capture Databaseは、非常に多くのファイルを公開していますが、ファイルのダウンロード先はsharecgからになります。具体的なsharecgのページは下記になります。
BVHファイルの読み込み
BVHファイルを読み込んで適用するのは、とても簡単です。Poserの「ファイル」メニューから「読み込み」の「BVHモーション」を選択し、表示されるダイアログからBVHファイルを選択するだけです。このとき、Poser上で選択されているフィギュアに対して、読み込まれたモーションが適用されます。
読み込み時に、読み込みオプションを選択するためのダイアログが表示されますが、このオプションは大抵の場合、デフォルト値のままで良いはずです。OKボタンを押して進んでしまいましょう。もし読み込んだ結果が、あまりに人間的ではない動きになってしまうような時には、オプションを変更して改めて読み込ませます。
大きなBVHファイルを読み込ませると、Poserが反応しなくなることがあります。そのような時は、慌てて強制終了などせずに、お茶でも飲んでしばらく様子を見てください。お茶している間に、読み込みが終わることでしょう。もし30分以上経過しても読み込みが完了しないような時には、本当に問題が発生している可能性があります。その時はあきらめて強制終了してしまいましょう。
強制終了すると、それまでの設定が水の泡になります。まめに保存し、BVHなどの外部ファイルを読み込ませるような時には、読み込み前に戻れるようにファイルのバックアップをすることをお勧めします。
また読み込み時に多くのBVHファイルで、警告が表示されれます。この警告は時として重要ですが、ほとんどの場合、無視しても問題ありません。あまり気にしなくても良いと思います。
右図は、animazooでフリー素材のWalk and Stopをジェシーに対して読み込んだ時に表示された警告です。この警告の場合、読み込んだBVHの階層がPoserと同じ構造であれば、動作は問題なく適用されます。もし動作が上手く適用されないような場合には、BVHのノード名をPoserのものに合わせなければなりませんが、大抵の場合には警告を無視して読み込んで上手く行くはずです。
もし読み込んだデータが思うような動作とはならない場合、BVHファイルの階層構造をPoserに合わせなければなりません。慣れればテキストエディタで編集も可能ですが、それは至難の業です。あきらめて別のファイルを探した方が速いと思います。
ROOT hip └ abdomen ├ chest │├ neck ││└ head ││ ├ leftEye ││ ├ rightEye ││ └ JessiFollicleSurface ││ └ Hair │├ rCollar ││└ rShldr ││ └ rForeArm ││ └ rHand ││ ├ rThumb1 ││ │└ rThumb2 ││ │ └ rThumb3 ││ ├ rIndex1 ││ │└ rIndex2 ││ │ └ rIndex3 ││ ├ rMid1 ││ │└ rMid2 ││ │ └ rMid3 ││ ├ rMid1 ││ │└ rMid2 ││ │ └ rMid3 ││ ├ rRing1 ││ │└ rRing2 ││ │ └ rRing3 ││ └rPinky1 ││ └ rPinky2 ││ └ rPinky3 │└ lCollar │ └ lShldr │ └ lForeArm │ └ lHand │ ├ lThumb1 │ │└ lThumb2 │ │ └ lThumb3 │ ├ lIndex1 │ │└ lIndex2 │ │ └ rIndex3 │ ├ lMid1 │ │└ lMid2 │ │ └ lMid3 │ ├ lMid1 │ │└ lMid2 │ │ └ lMid3 │ ├ lRing1 │ │└ lRing2 │ │ └ lRing3 │ └ lPinky1 │ └ lPinky2 │ └ lPinky3 ├ rThigh │ └ rShin │ └ rFoot │ └ rToe │ ├ rBigToe1 │ │└ rBigToe3 │ │ └ rBigToe3 │ ├ rIndexToe1 │ │└ rIndexToe2 │ │ └ rIndexToe3 │ ├ rMidToe1 │ │└ rMidToe2 │ │ └ rMidToe3 │ ├ rRingToe1 │ │└ rRingToe2 │ │ └ rRingToe3 │ └ rPinkyToe1 │ └ rPinkyToe2 │ └ rPinkyToe3 └ rThigh └ rShin └ rFoot └ rToe ├ rBigToe1 │└ rBigToe3 │ └ rBigToe3 ├ rIndexToe1 │└ rIndexToe2 │ └ rIndexToe3 ├ rMidToe1 │└ rMidToe2 │ └ rMidToe3 ├ rRingToe1 │└ rRingToe2 │ └ rRingToe3 └ rPinkyToe1 └ rPinkyToe2 └ rPinkyToe3
左の階層構造図は、ジェシーのBVH階層を表したものです。
この図を見るとジェシーのBVH構造は、hipノード中にすべてのノードが収まっており、hipの子ノードとしてabdomen(腹部)が、さらにabdomenの子ノードとしてchest(胸部)がといった具合に、体の構造にそってBVH構造が形成されていることが分かると思います。
このように体の構造を元にBVHファイルは構造化されているので、人間のキャプチャーデータであれば、そんなに構造が変わらないはずです。そのため対応するノード名称が異なっていても、同じ構造であれば同じように動かせるはずなのです。ですから、先ほどの警告を無視しても動作するはずなのです。
もし読み込んで、例えばジェシーに適用した結果、ジェシーの動きが人とは思えないのであれば、おそらくこの基本的な構造に差があるので、ノードの名称云々の話ではないと言うことになります。そのファイルをPoserに合わせるのは、難しいことかもしれないのです。そこまで構造が違っていても、どうしても利用したいということであれば、BVHファイルはテキストデータですので、手持ちのテキストエディタで開いて構造を手で合わせてい行くという作業になります。
BVHファイルの編集は、解説したいところですが、今回は割愛させていただきます。
モーションキャプチャによる動作
まずはBVHをそのまま読み込んで、動作をジェシーさんに再現してもらいましょう。その動作がアニメーションとして、どのように見えるか実際に見てください。
Poserには歩行をシミュレートする機能があるので、歩かせるだけならBVHファイルを使う必要は無いのですが、自然な感じを出したい時にはモーションキャプチャされたデータを使った方が説得力があります。実際、こうして読み込んだデータをアニメーションで見ると、納得できます。しかし読み込んだだけで、完成という訳にはいきません。
歩きはじめたジェシーの手は、腕の振りによって腰にめりこんでしまっています。それに完全に地面に着地していないようで、歩き終った後で空中に立っているのがはっきりと分かります。このままではせっかくのリアルな動作が台無しなので、微調整は必要です。
作例
動作の微調整を行い、最終的な作品として仕上げてみました。再生時には音が出ますので注意してください。
演出として効果音を入れてあります。効果音はフリー素材としてインターネットで公開されているものを使いました。今回使用したフリー素材には、利用規約として作品中に表示するように指示されているものがありましたので、テロップを挿入してあります。フリー素材の効果音ですから、映像にぴったりとはいかないまでも、音があるだけで臨場感が増すから不思議なものです。
この作例で使用しましたフリー素材は次の通りです。
- 3Dモデル
- BVHデータ
- 効果音
ジェシーが歩くだけでもなかなか迫力ありますが、足下にパトカーとジェイムスを配置して右往左往してもらいました。ちなみにジェイムスの動作は、BVHではなくPoserの歩行シミュレーションの機能を使っています。よく見ると調整しきれていないところもありますが、足下のジェイムスのお陰で目立たなくなってます。他のキャラクターなどを使う場合、動きの細かい所に目がいく傾向にあるので、演出でごまかすのも有効だと思います。