ホーム > AS3 > Bitmap と Particle (5) BitmapData.perlinNoise

Bitmap と Particle (5) BitmapData.perlinNoise

2009 年 6 月 23 日 コメントをどうぞ コメント
BitmapData.perlinNoiseのperlinNoiseを知っておくと今後のパーティクルにとっても役に立つらしい。
まだわからないけどw


[勉強]perlinNoiseを動かす(の解説を初級者がしてみる)


ここがとてもいい解説。



Pointはaddした方が遅い気がしなくもない。PerlinNoiseおもたいなぁw
より軽くするために精進します。


package 
{
	import flash.display.Bitmap;
	import flash.display.BitmapData;
	import flash.display.Sprite;
	import flash.events.Event;
	import flash.display.BitmapDataChannel;
	import flash.geom.Point;
	/**
	 * ...
	 * @author yaimo
	 */
	[SWF(width="320", height="240", backgroundColor="0xFFFFFF", frameRate="24")]
 
	public class Main extends Sprite 
	{
		private var bitmapData:BitmapData;
		private var baseX:Number;
		private var baseY:Number;
		private var Octaves:int;
		private var ramdomSeed:int;
		private var stitch:Boolean;
		private var fractal:Boolean;
		private var channel:uint;
		private var grey:Boolean;
		private var offset:Array;
		private var offsetPointArray:Array;
 
		public function Main():void 
		{
			if (stage) init();
			else addEventListener(Event.ADDED_TO_STAGE, init);
		}
 
		private function init(e:Event = null):void 
		{
			removeEventListener(Event.ADDED_TO_STAGE, init);
			// entry point
			bitmapData = new BitmapData(320, 240, false, 0xFFFFFFFF);
			var bitmap:Bitmap = new Bitmap(bitmapData);
 
			bmpDataInit();
			addChild(bitmap);
 
			addEventListener(Event.ENTER_FRAME, enterFrameHandler);
		}
 
		private function enterFrameHandler(e:Event):void 
		{
			for (var i: int = 0; i < Octaves; i++) 
			{
				offset[i] = offset[i].add(offsetPointArray[i]);
			}
 
			bitmapData.perlinNoise(baseX, baseY, Octaves, ramdomSeed, stitch, fractal, channel, grey,offset);
		}
 
		private function bmpDataInit():void
		{
			baseX = 200;
			baseY = 200;
			Octaves = 6;
			ramdomSeed = int(Math.random() * 0xFFFF);
			trace(ramdomSeed);
			stitch = false;
			fractal = true;
			channel = BitmapDataChannel.RED | BitmapDataChannel.GREEN | BitmapDataChannel.BLUE;
			grey = false;
			offset = new Array(Octaves);
			offsetPointArray = new Array(Octaves);
 
 
			for (var i: int = 0; i < Octaves; i++) 
			{
				offsetPointArray[i] = new Point(Math.random() * 10, Math.random() * 10);
				offset[i]=new Point(Math.random()*200 , Math.random()*200);
			}
 
			bitmapData.perlinNoise(baseX, baseY, Octaves, ramdomSeed, stitch, fractal, channel, grey,offset);
		}
 
	}
 
}



Bookmark and Share

関連する投稿

  1. コメントはまだありません。
  1. トラックバックはまだありません。