perlinNoise (1)
2008/02/01 21:06 - AS3.0
今更にもほどがありますが、ビットマップ操作系のクラスやメソッドをいろいろ触ってみようと思い立ちました。
Flash 8 が出た時点でもう世界各国のコーダーの皆々様が検証しまくったことですよ、1世代前ですよ、周回遅れどころの騒ぎじゃありません。なので、ご覧の方々にとって、このシリーズのエントリーは何一つ新しい知見が得られない記事となるかもしれません。しかもエントリー順序も内容も体系立ったものにはならず、書き散らしのようなシリーズになること請け合い。
でもまぁ、個人の勉強のためのメモという位置づけゆえ、ご寛恕いただきたく候。
まずはビットマップ操作系で個人的に一番萌えなメソッド perlinNoise から始めてみたいと思います。
上のサンプルでは下に示した perlinNoise の9個の引数のうち、randomSeed と offsets を除いた7個の値を各コンポーネントで変更することができます。
perlinNoise が適用される BitmapData のサイズは幅、高さ、ともに200ピクセルです。
perlinNoise( baseX : Number , baseY : Number , octaves : uint , randomSeed : int , stitch : Boolean , fractal : Boolean, channels : uint = 7 , gray : Boolean = false , offsets : Array = null ):void
ところで、こんだけの数の変数がそれぞれ何を意味して、どのような値にするとどのような表示をされるかなんて、いちいち覚えてらんないし、その都度マニュアルに当たるのも面倒といえば面倒。
私の場合、引数が多いビルトインメソッドの引数については、最大公約数的な抽象化をおこない、特定値で固定して、プリセット的に扱う場合が多いです。
perlinNoise については、以下の引数は、こんなプリセットで扱えば、自分的には充分足りるかなぁ、といった感じ。
baseX と baseY は LiveDocs の解説に則って、それぞれ BitmapData の width と height と同じ値。
ですが、使用効果によってはそれらより小さい値を使う必要があるでしょう。width や height より大きい値を使う場合はほとんどないんじゃあないかと。
octaves は最大で7、最小で1。
stitch は false。
fractal は true の方が好き。
ですが、LiveDocs の解説にあるように、場合によっては false になることもあるでしょう。
gray が true の場合 channel はいずれか1色、false なら2色以上。
たぶん perlinNoise メソッドで生成される模様それ自体が目的の場合、gray は false で、DisplacementMapFilter の置き換えマップイメージなどで使う場合、gray は true、ってな感じになるんじゃないでしょうか。
シリーズ