PerlinNoise

(サンプル一覧を表示する)

FlashDevelop を使って、PerlinNoise を表示してみました。

PerlinNoise は、ただの乱数のノイズと違って
隣接するピクセルの色の差異が抑えられているので、
より自然環境に存在するノイズに近い表現ができるようです。

このサンプルではモノクロ画像を出していますが、カラーのノイズも出せます。
引数に渡すパラメータを調節してみてください。
Flash の実行画面
PerlinNoise

Flashプレーヤーが入っていないか、JavaScriptが無効になっているようです。

Get Adobe Flash player

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;
        }
	}
	
}		

外部リンク