BitmapData.perlinNoiseでフォースマップ
宝の山に見えて仕方がないwonderfl。投稿されるコードの長さが程よいので、ちょっと時間が空いたときに、気になったスキルを学ぶ事ができ、かなり手頃感がある。いつまでも貰ってばかりではなく、コードをアップしたいななんて思いつつ今日に至るわけですが、、orz
パーティクルで多くのオブジェクトを動かす場合、移動に関する計算を各々でする必要が出てきますが、その数に比例して相当な負荷がかかってきます。それを軽減するひとつのテクニックとしてフォースマップというものを勉強したのでメモ。
ドローソフトでビットマップデータをドット単位で操作するためのアルファチャネルというものがありますが、これは「設定値の集合体」のような存在で、私の場合、複雑な透過設定をしたい場合などによく使っています。
フォースマップもこのような解釈で、1つのパーティクルはその座標からフォースマップのドットを参照し、自身の振る舞いを決定します。たかが1ドットでも、カラー情報から複数ビットの情報を得られるので、多様な振る舞いが十分期待できます。また、情報抽出等もビット演算で高速化できるので、最初に話した「移動に関する計算」の負荷軽減が実現できます。
で、そのフォースマップの作り方ですが、BitmapData.perlinNoiseという便利なものがあるので、これで一発さくっと作ってしまえば、流れるような動きもできてしまいます。
あ、あとVectorクラスも高速化につながってますね。
勉強になりました。
