Bitmap と Particle (5) BitmapData.perlinNoise
BitmapData.perlinNoiseのperlinNoiseを知っておくと今後のパーティクルにとっても役に立つらしい。
まだわからないけどw
[勉強]perlinNoiseを動かす(の解説を初級者がしてみる)
ここがとてもいい解説。
Pointはaddした方が遅い気がしなくもない。PerlinNoiseおもたいなぁw
より軽くするために精進します。
まだわからないけど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); } } }
