FlashDevelop を使って、PerlinNoise を表示してみました。
PerlinNoise は、ただの乱数のノイズと違って
隣接するピクセルの色の差異が抑えられているので、
より自然環境に存在するノイズに近い表現ができるようです。
このサンプルではモノクロ画像を出していますが、カラーのノイズも出せます。
引数に渡すパラメータを調節してみてください。
Flash の実行画面
|
PerlinNoise
乱数の種をランダムにしているので、
リロードするたびにノイズのかかりかたが変わります。
種の値を同じにすると、いつでも同じ画像が得られます。
|
package
{
import flash.display.Bitmap;
import flash.display.BitmapData;
import flash.display.BitmapDataChannel;
import flash.display.Sprite;
import flash.events.Event;
/**
* PerlinNoise のサンプル
* @author Hikipuro
*/
public class Main extends Sprite
{
/**
* コンストラクタ
*/
public function Main():void
{
if (stage) init();
else addEventListener(Event.ADDED_TO_STAGE, init);
}
/**
* 初期化メソッド
* @param e
*/
private function init(e:Event = null):void
{
removeEventListener(Event.ADDED_TO_STAGE, init);
// entry point
// ビットマップデータ作成
var bitmapData:BitmapData = createBitmapData(200, 200);
// PerlinNoise をビットマップデータに適用
var baseX:Number = 64;
var baseY:Number = 64;
var numOctaves:uint = 5;
var randomSeed:Number = Math.floor(Math.random() * 10);
var stitch:Boolean = false;
var fractalNoise:Boolean = true;
var channelOptions:uint = BitmapDataChannel.RED;
var grayScale:Boolean = true;
var offsets:Array = null;
bitmapData.perlinNoise(baseX,
baseY,
numOctaves,
randomSeed,
stitch,
fractalNoise,
channelOptions,
grayScale,
offsets);
}
/**
* ビットマップデータを作成してステージに追加
* @param width 幅
* @param height 高さ
* @return ビットマップデータ
*/
private function createBitmapData(width:int, height:int):BitmapData
{
var bitmapData:BitmapData = new BitmapData(width, height, true, 0x000000);
var bitmap:Bitmap = new Bitmap(bitmapData);
addChild(bitmap);
return bitmapData;
}
}
}