2013年5月21日火曜日

【PlugIn】 Perlin Noise Filter でお手軽カメラ揺れ

CGでハンディカメラっぽい揺れを作るときの1つの方法として、
注視点をランダムに動かして揺れを作る方法があります。

この時ランダムに動かすっていうのが結構面倒くさいのでプログラム的なアプローチで自動で出来ないかと色々考えます。

最初に思いつくのがrandom関数などで出力された値を使ってランダムに動かすことです。
試しに作ってみると、出力される値がバラバラすぎて規則性が無いものになります。

これだと1フレで瞬間移動しているような動きになりハンディカメラっぽい揺れに適さないです。



次にnoise関数を色々調べるとPerlinNoiseというのが具合が良さそうです。
このPerlinNoiseというのは簡単に言うと、山の起伏のように連続していながらもランダムな数値を返すもののようです。

Mayaではnoise関数というのがあって、この関数自体がPerlinNoiseとして実装されています。
MotionBuilderには勿論そういう機能がないので、いつもの事ながら無いなら作ろうの精神で
PerlinNoiseを加えるFilterを作りました。


選択した範囲にあるキーフレームに対して、PerlinNoiseで出力された値を加算します。
なのでカメラのアニメーションを作るときは、ベースレイヤーには普通にアニメーションを付けて、
別レイヤーで値が0のキーフレームでResampleしてある状態にこのPerlinNoiseフィルターをかけてカメラ揺れを再現するのが調整しやすいやり方だと思います。

DownLoad
Nagao_PerlinNoise_Filter.zip
(MotionBuilder2012 64bit版)