2014年11月11日火曜日

【Tips】Perlin Noise Filter を使った体の揺らぎ

以前にPerlin Noise Filterを使ったカメラ揺れを紹介しましたが、今回はこのPerlin Noise Filterを使った別のTipsの紹介です。

今回はゲームモーションではなくてカットシーンでのアニメーションを想定しています。
手付けアニメーションでアクション系ではない会話系や何気ない日常の動作を作る時はかなり時間がかかります。しかもアニメーションのクオリティーの落とし所がピクサーやディズニーのようなカートゥーン系ではない、リアルスティックなモーキャプみたないの時は尚更時間がかかります。

さらに言うと何気ない日常の動作というのは意識してないけど普段よくみるアニメーションなので少しでも変だと違和感を感じたりするものです。

手付けで会話系のアニメーションがそんなに大変なら始めからモーションキャプチャーをとれば良いじゃんって話でまさにそうなんですが、予算や時間の関係でモーションキャプチャーが撮影出来なかったり、撮影出来たとしても取りこぼしがあった場合はやっぱりアニメーターやカットシーンアニメーターが作るしかないんですね。

そんな状況の場合、私はビデオカメラを使って自分で演技したものを撮影してそれをロトスコープします。ロトスコープはのやり方は撮影した動画をビューの後ろに張り付けて、ここに特別な方法はなく腰、足、胴、腕、頭に分けて根気よくキーフレームを打ってFカーブを調整するだけです。
コツとしてはフロントビューとサイドビューが同時に見えるようにするとおかしいところがすぐにわかるようになります。

ただ日常系のアニメーションの場合意外と静止しているようにみえて体が揺らいでいるものです。ロトスコープで撮影した動画では静止しているように見えても若干の体が揺らでいるのですが、動画中の人が静止しているからとCGキャラも静止させるととたんに凍りついたように見えるものです。

そこで動いてないような時でも人間の揺らぎを根気よくアニメーションを付けてあげればいいのですが時間がかかるので、ちょっとお手軽揺らぎとしてPerlin Noise Filterを使用して揺らぎを表現しましょうということです。

前置きが長くなってしまいましたが、ただ立っている人のアニメーションをPerlin Noise Filterを使って作成します。本当ならどういうシチュエーションでどんな感情で立っているかで演技が入ってきますが今回は揺らぎをフォーカスしますので割愛します。

地味なものですが、この微妙な揺らぎがあると無いとでは全く違うものになります。

IK/FKのReachは上半身は全て0%(全部FK制御の状態)にして
足と腰だけ100%にしている状態です。


この状態でIKリグのHipsEffectorにアニメーションレイヤーでresampleしたものにPerlinNoiseFilterを適用します。このときTransとRotを別々に適用しています。



そして腕のFKリグのRightArm、RightForeArm、LeftArm、LeftForeArmに同じようにアニメーションレイヤーでPerlin Noiseを適用します。

この時のポイントとしてパラメーターを変えてあげてそれぞれのFKのリグのFカーブが同じにならないようにすることです。またForeArmはZ軸のみで動いているのでX,Y軸はFカーブが0になるように調整しています。

パラメーターのサンプルとしてこんな感じでやっています。



日常系のアニメーションでモーションキャプチャーみたいな手付けアニメーションを作る時はこんな感じの体の揺らぎを入れてあげると意外としっくりくるものになります。
もちろん自分でキーを打っても揺らぎを作成しても全く問題無いですが、今回はPerlin Noise Filterで揺らぎを作成することでトライ&エラーや効率化が計れるものとなります。




2014年11月10日月曜日

MBでカットシーンを作るときのカメラデータ

MotionBuilderを使ってカットシーンを作っていざゲームエンジンにデータを組み込みましょうってなったときにゲームの仕様にもよるんですが、
僕がいままで経験した中で結構多かったのが、1つのカメラデータにまとめるということが多かった気がします。
この1つのカメラデータにまとめるというのは例えば、1カット目はCamera1で作り、2カット目はCamera2でつくり・・・・・・というように別々のカメラで各カットを作りそれをCameraSwitcherでつなげてみている状態の結果を1つのカメラとしてデータを作成するということです。
これを仮にマスターカメラという呼称にします。
マスターカメラのデータは各カットチェンジでは1フレームで切り替わるようになるデータになります。

MBのデフォルトの機能であるCameraSwitcherを右クリックPlotTo→<New Camera>で
マスターカメラのデータは作成できます。


ただこれの問題はベースレイヤーのアニメーションしかこないということです。

カメラのアニメーションを付ける時、ドリーやパンなどのベースのアニメーションはベースレイヤーにいれて手ぶれ感や微調整をする時には他のレイヤーにアニメーションを入れることが多いかと思います。
それらをプロットしてベースレイヤーに統合すればCameraSwitcherを右クリックPlotTo→<New Camera>でマスターカメラのデータは作成出来るのですが、ベースレイヤーにPlotしてしまうと後から調整するのがかなり困難になってしまいます。

わたしの経験上、ゲームエンジンに組み込んでみてから調整の作業は発生しやすいのでやっぱり作業中のレイヤー別のアニメーションはとっておきたいですね。

これまた無いなら作ろうの精神で、ベースレイヤにPlotせずともCameraSwitcherで表示されている状態のデータを出力出来るプラグインを作成しました。


単純にRelationコンストレインを使用してCameraSwitcherで表示されているカメラデータが出力されるのでマスターカメラにしたいカメラに繋ぐだけでの簡単構造のものです。

実機に組み込む時はこのマスターカメラをPlotするだけなので、各カットを作成しているカメラはPlotせずレイヤー別のアニメーションを保持出来るということです。

これで調整を含めたトライ&エラーをしやすく、作業効率が図れるものとなります。