Vortlaufende Perlinsche Störungen

Dezember 5th, 2009 by admin

Flash bietet mit BitmapData.perlinNoise() die Möglichkeit, Formen zu kreieren, wie sie, in der Natur vorkommenden Formen, beispielsweise Wolken-, Nebel-, Feuer- oder Wassereffekte, sehr ähnlich sind. Das folgende Script generiert solche Formen in einem EnterFrame Schleife. Funktionell sehr einfach, lediglich die Anzahl an parametern für die perlin Funktion können auf Anfänger noch etwas abschreckend wirken. Allerdings lassen sich mit perlinschen störungen ein paar sehr schöne Effekte zaubern, insbesondere wenn man sie mit dem DisplacementMapFilter kombiniert.

Zunächst ein einfaches Beispiel.
FlashPlayer starten

Und hier das Script:

var bitmapData = new BitmapData(190,190)
var bitmap = new Bitmap(bitmapData)
var offsets = new Array()
var p : Point
var i : int = 0
 
function init()
{
	bitmap.x = 10
	bitmap.y = 10
	addChild(bitmap)
}
function startNoise()
{
	addEventListener(Event.ENTER_FRAME,onEnterFrame)
}
function onEnterFrame(e:Event)
{
	i-=2
	p = new Point(i,0)
	offsets = new Array(p)
	bitmapData.perlinNoise(50,50,1,5,true,true,1,false,offsets)
}
init()
startNoise()

In der Funtkion refreshNoise() wird lediglich das Point Objekt im offsetsArray und für eine bewegte Perlin-Störung aktualisiert. Je nachdem ob i inkrementiert oder dekrementiert wird, wird die Flussrichtung der Störung nach links, rechts, oben oder unten bestimmt. Es ist sehr empfehlenswert mit den Parametern ein bisschen zu spielen, da sich dadurch starke Unterschiede im jeweiligen Ergebniss erzeugen lassen.