Hatena::ブログ(Diary)

flashrod このページをアンテナに追加 RSSフィード

2007-02-25 Perlin Noise

flashrod2007-02-25

Perlin Noise 20:45  Perlin Noiseを含むブックマーク

また久しぶりに Processing からの移植ネタなのだ。今回参考にしたのはこのサイト

GHOSTAGENCY: Proce55ing sketchbook by Alessandro Capozzo

の、Perlin ノイズで波を描くやつだ。

Abstractscape: Built with Processing

丸ごとまねだと面白くないので、4枚の半透明の波を重ね合わせるようにしてみた。

package {
    import flash.display.Sprite;
    import flash.display.Shape;
    import flash.events.Event;
    public class Perlin extends Sprite {
        private var perlin:PerlinNoise = new PerlinNoise();
        private var noiseScale:Number = 0.02;
        private var n:Number = 0.0;
        private var d:Number = 0.4;
        private var a:Array = [];
        public function Perlin() {
            for (var j:int = 0; j < 4; ++j) {
                var s:Shape = new Shape();
                s.alpha = 0.1;
                a[j] = s;
                addChild(s);
            }
            addEventListener(Event.ENTER_FRAME, enterFrame);
        }
        private function enterFrame(e:Event):void {
            n += d;
            for (var j:int = 0; j < 4; ++j) {
                var y:int = j * 10;
                var s:Shape = a[j];
                s.graphics.clear();
                s.graphics.beginFill(0x0000FF);
                s.graphics.moveTo(0, 50+100);
                for (var x:int = 0; x < 300; x++) {
                    var noiseVal:Number = perlin.noise((n+x)*noiseScale, (-n+y)*noiseScale, y*noiseScale);
                    s.graphics.lineTo(x*2, 50+noiseVal*100);
                }
                s.graphics.lineTo(640, 50+100);
                s.graphics.endFill();
            }
        }
    }
}

PerlinNoiseクラスはProcessingの PApplet.java からPerlinノイズ関係だけをパクってきた。実際のソースはデモからダウンロードできるようにしたのでそちらをどうぞ。

デモ

Perlin Noise

いろいろ試行錯誤したんだけど、PS3のあの波のようにはなかなかできない。