BitmapDataでノイズ生成 (2) 〜perlinNoise〜

BitmapDataクラスを用いて、ノイズ(Perlin Noise)を生成してみよう! :boy:
BitmapData.perlinNoise() なのだ。

:caution: 要 Flash Player 8 以上

This movie requires Flash Player 9.0.0

_root にムービークリップ(インスタンス名: noise_mc) を配置。

_root 第1フレームに
import flash.display.BitmapData;

var noise_bd:BitmapData = new BitmapData(320, 240, true);
noise_mc.attachBitmap(noise_bd, 1);

var baseX:Number = 80;
var baseY:Number = 80;
var numOctaves:Number = 1;
var randomSeed:Number = 1;
var stitch:Boolean = false;
var fractalNoise:Boolean = false;
var red:Boolean = true;
var green:Boolean = true;
var blue:Boolean = true;
var grayScale:Boolean = false;
var xOffset:Number = 0;
var yOffset:Number = 0;

function createPerlinNoise():Void {
  var channelOptions:Number = 1*red + 2*green + 4*blue;
  var offsets:Object = {x: xOffset, y: yOffset};

  noise_bd.perlinNoise(baseX, baseY, numOctaves, randomSeed, stitch, fractalNoise, channelOptions, grayScale, offsets);
}
createPerlinNoise();
と記述。

baseX, baseY, numOctaves, randomSeed, stitch, fractalNoise,
channelOptions, grayScale, offsets の値を変えて、
createPerlinNoise() 関数を実行すれば、
ノイズ(Perlin Noise)を変化させて生成することができます。 :boy:


参考資料「BitmapData.perlinNoise()メソッド

perlinNoise (BitmapData.perlinNoise メソッド)

public perlinNoise(baseX:Number, baseY:Number, numOctaves:Number, randomSeed:Number, stitch:Boolean, fractalNoise:Boolean, [channelOptions:Number], [grayScale:Boolean], [offsets:Object]) : Void

Perlin ノイズイメージを生成します。

使用できるバージョン
ActionScript 1.0、Flash Player 8
パラメータ
baseX:Number
x 方向で使用する周波数。たとえば、64×128 のイメージに見合うサイズのノイズを生成するには、baseX 値として 64 を指定します。
baseY:Number
y 方向で使用する周波数。たとえば、64×128 のイメージに見合うサイズのノイズを生成するには、baseY 値として 128 を指定します。
numOctaves:Number
このノイズを作成するときに組み合わせるオクターブ (つまり個々のノイズ関数) の数。オクターブ数を多くすると、よりきめ細かいイメージを作成できます。オクターブ数を増やすと、処理時間も長くなります。
randomSeed:Number
ランダムシード (乱数の種) として使用する数値。他のすべてのパラメータを同じままにした場合、ランダムシードの値を変更することでさまざまな疑似乱数を生成できます。Perlin ノイズ関数は、マッピング関数であり真の乱数生成関数ではありません。このため、同じランダムシードから毎回同じ結果が作成されます。
stitch:Boolean
ブール値。true の場合、このメソッドは、イメージのトランジションエッジをスムーズにして、ビットマップ塗りとしてタイリング用のシームレスなテクスチャの作成を試みます。
fractalNoise:Boolean
ブール値。true の場合、このメソッドはフラクタルノイズを生成します。それ以外の場合は、乱流を生成します。乱流があるイメージにはグラデーションに視覚的な不連続性があるので、炎や海の波のようなシャープな視覚効果に適していることがあります。
channelOptions:Number (オプション)
1 つ以上のカラーチャンネルを表す数値。この値を作成するには、4 つのカラーチャンネル値 (1 (赤)、2 (緑)、4 (青)、および 8 (アルファ)) を使用または組み合わせることができます。論理和 (OR) 演算子を使用して、チャンネル値を組み合わせることができます。たとえば、次のコードを使用すると、赤と緑のチャンネルを組み合わせることができます。 1 | 2
grayScale:Boolean (オプション)
ブール値です。true の場合、赤、緑、および青の各カラーチャンネルに同じ値を設定して、グレースケールイメージが作成されます。この値が true に設定されても、アルファチャンネルの値に影響はありません。デフォルト値は false です。
offsets:Object (オプション)
オクターブごとの x オフセットと y オフセットに対応するポイントの配列。オフセット値を操作することで、perlinNoise イメージのレイヤーをスムーズにスクロールできます。オフセット配列内の各ポイントは、特定のオクターブノイズ関数に影響を与えます。