Perlin Noise (fBm 関数)をオブジェクトの動きに取り入れることによって、色々と面白い効果が生み出せます。例えば、これを位置と回転に適用するだけで、カメラの手ブレ風エフェクトなどを作り出せます。
http://keijiro.github.com/unity-perlin/
Unity で作成したサンプルです。上のバーで揺れの周波数を、下のバーで揺れの量を調節できます。 Editor 上ではもう少し詳しくパラメーターを調節できます。
バンク(Z軸回転)を入れると動きが大きくなり過ぎるため、このサンプルでは入れていません。もっと派手な効果を出したい場合には入れてもよいかもしれません。
fBm 関数は、数学的にはなんだかすごくややこしい概念を持ったものなのですが、簡単にまとめると次のような特性を持ったランダムな動きを表す関数です。
- 0 付近を行ったり来たりする。
- 大きな動きと小さな動きがまんべんなく混ざっている。
- どの時点を切り出しても、同じようなランダムな動きをする。
- 連続性がある(値が飛んだりしない)。
グラフにプロットすると、こんな感じです(Colin Green による)。
これをカメラの位置と回転にオフセットとして与えるだけで、上のサンプルのような動きになってくれます。
昔流行った「1/f ゆらぎ」のようなもので、自然の中にはこれと似た動き/かたちを持つものが多くあります。上のサンプルで見せた「カメラ揺れ」も、何かを真面目にシミュレートしているわけではないのですが、fBm の動きを取り入れることによって、なんだか自然な揺らぎのように見えてくる、というわけです。
他にも色々な例があげられます。
- 流体っぽい動き ... https://vimeo.com/29074357
- 布っぽい動き ... http://vimeo.com/25686854
- 群っぽい動き ... https://vimeo.com/14764877
- 滴る水っぽい動き ... https://vimeo.com/13489193
- パーティクルに自然な揺らぎを ... https://vimeo.com/17590814
- 地形生成 ... https://vimeo.com/4138285
Perlin Noise と fBm 関数の実装はこちらにまとめてあります。Perlin Noise の実装は、Ken Perlin 先生の実装を単純に JavaScript に直したものです。
https://github.com/keijiro/unity-perlin/blob/master/Assets/Perlin.js
コード拝見させて頂きました。
大変貴重な情報ありがとうございます。
現在、上記のコードをDCCツール(Softimage)にコンバートできないか?と模索しておるのですが、
当方Jscriptとpythonしか扱えず、Javascript特有?のコードの書き方に手詰まりしております。
そこでもし可能でしたら、コメントアウトに、
説明等を記載して頂く事はできますでしょうか?
本当に唐突且つ、ご無理をお願いして申し訳ございませんが、
何卒ご教授頂きますようよろしくお願い致します。