是由Ken Perlin所發明的
原本的目的是為了1982年的電影Tron(電子世界爭霸戰)所開發的演算法
這種雜訊是用來模擬火焰、煙霧、水波的效果
Ken Perlin因為開發了這個演算法而得到了1997年的奧斯卡技術成就獎
Perlin noise原本是產生2D雜訊,但是隨著產業界的需求之增加
後來出現了3D版本的Perlin noise,可以模擬3D的火焰等特效
通常要模擬水波、飄動的特效
會使用Perlin noise搭配所謂的displacement map特效
也就是Flash裡面的DisplacementMapFilter
這個特效是用來扭曲變形一張圖用的
所以應該可以達到你說的水草飄動效果(其實是扭曲)
要使用displacement map特效需要兩張尺寸一樣的圖
第一張是原圖,第二張是扭曲參考圖
而這張參考圖我們要使用Perlin noise
轉載自 #19OYjs7P (Flash) [ptt.cc] cjcat2266
以下是西街貓(cjcat2266)附上的參考
var bmpd:BitmapData = new BitmapData(180, 280);
var bmp:Bitmap = new Bitmap(bmpd);
bmp.x = 180;
addChild(bmp);
var dmf:DisplacementMapFilter = new DisplacementMapFilter(bmpd, new Point(), 1, 2, 20, 20, "clamp");
addEventListener(Event.ENTER_FRAME, update);
function update(e:Event):void
{
bmpd.perlinNoise(200, 200, 2, 0, false, false, 3, false, [new Point(0, getTimer() / 50), new Point(20 * Math.sin(getTimer() / 1000), getTimer() / 20)]);
sw2_mc.filters = [dmf];
}
KeyWord: DisplacementMapFilter, perlinNoise
參考資料
#19OYjs7P (Flash) [ptt.cc] cjcat2266
#19OZ7PwE (Flash) [ptt.cc] cjcat2266