2011-12-11 25 views
10

gamedev.SE numaralı telefondan, flash implementation of Perlin-noise'un diğer uygulamalardan biraz saptığını keşfettik.Flaşta Perlin gürültüsü nasıl uygulanır?

Herhangi bir uygulama detayını çevrimiçi olarak bulamadım, ancak merak ettiğim herhangi biri Flash'ta Perlin-noise için hangi algoritmanın kullanıldığını söyleyebilir.

sadece numOctaves parametresi (soldan sağa 1, 2, 4) değiştirilmiştir nerede bitmapData.perlinNoise(32, 32, 1, 200, false, false, 7, true); Böyle görüntüler üretir kullanma: Perlin-gürültü diğer uygulamalar oldukça farklı görünüyor Ancak

perlin noise in flash

. Örneğin Wikipedia article about Perlin-noise dan resim: Eğer (soldan sağa oktav 1, 2 ve 4) Aşağıdaki resimlerde görebileceğiniz gibi aynı zamanda

Perlin noise as depicted on Wikipedia

this Actionscript Implementation of Perlin-noise, oldukça farklı sonuçlar üretir:

Perlin noise AS3

En çok ilgimi çeken şey sadece bir oktav ile gürültüye bakmak. Flaş uygulamasında, gürültünün ayrılmış lekeler gibi bir şey oluşturduğunu açıkça görebilirsiniz.

Önemli: Flaşta oluşturulan gürültü, fractalNoise parametresi için false kullanır. fractalNoisetrue olarak ayarlanmışsa, sonuçlar aslında Wikipedia ve diğer uygulamalardan çok benzerdir.

Boolean değeri aşağıdaki gibidir:

parametrenin açıklaması okur. Değer doğruysa, yöntem fraktal gürültü üretir; Aksi takdirde, türbülans oluşturur. Türbülanslı bir görüntüde, gradyanda, alevler ve okyanus dalgaları gibi daha keskin görsel efektleri daha iyi bir hale getirebilecek görünür süreksizlikler vardır.

Gördüğümüz gibi

, onlar gürültü üretir yöntemi açıklamak için türbülans bahseder. Yani sanırım soru şu: Flash tarafından üretilen çıktı hala Perlin-noise mı? Yoksa bu tür bir ses için başka bir isim var mı? Ve en önemlisi: Böyle bir gürültü yaratmak için bir uygulama nerede bulunabilir?

cevap

1

ben herhangi bir görüntü işleme yaptım beri Looong zaman oldu, ama belki bu bazı yardımcı olacaktır:

Referanslar: (Ve cevapları bilenler ...) http://www.kelvinluck.com/assets/perlin_noise_experiments/, http://www.quasimondo.com/archives/000672.php, http://www.sjeiti.com/?p=305

Anlayışım, Flash uygulamasının, float yerine tamsayı hesaplamalarına dayanan sonuçlar çıkarmasıdır. Bu, renderlemenin neden hızlı olduğunu ve aynı zamanda görünüşte biraz farklı olduğunu açıklar.

En azından sizi doğru yönde ayarlamayı umuyorum ...

+0

Üzgünüz, ama öyle değil. Ben bile ilginizi çeken sesin görüntülerini oluşturmak için bağlantılarınızdan birinden kodu kullandım. * Flash uygulamasının farklı olması, tamsayıya dayalı olması (eğer değil) ve sonuçta bir görüntü çıkarırsanız, farklı değildir. Tam sayılara sahip olacaksınız, bunun için bir yol yok. Flaş uygulaması "türbülans" ve "düzenli" gürültü arasında seçim yapmanızı sağlar. İlgileniyorum ** türbülans ** için bir algoritmadır. Google görüntülerini "türbülans gürültüsü" ve "perlin gürültüsü" araması yaparsanız farkı görürsünüz. – bummzack

4

Görünüşe göre, terminoloji hakkında bazı kafa karışıklığı var. Ama teknik olarak, Perlin'in tarif ettiği gürültü, herhangi bir özet olmadan tek bir oktav idi. İlk Vikipedi imajına benziyordu.

Hemen hemen hiç kimsenin bunu kullanmadığından eminim. Herkes birkaç oktavlık ekler, genellikle düşük frekanslarda daha büyük genlik yapar. "Ne kadar büyük" kalıcılığıdır. Her neyse, eklediğinizde buna fraktal ses denir.

"Perlin gürültüsü" aslında sadece bir grup rasgele geçiş yaptığınız ve bunları enterpolasyon yaptığınız anlamına gelir. Fakat insanlar Perrin gürültüsü olarak fraktal gürültüye işaret ederler, çünkü birkaç Perlin gürültü dalgasının toplamıdır.

Genellikle, referans uygulamalarında olduğu gibi, Perlin ve Simplex gürültü fonksiyonlarının çıkış değerlerinin 0'da ortalandığını ve (bazen) [-1, +1] olarak ölçeklendiğini unutmayın. Ayrıca, bunlar benzer ama tam olarak aynı değil - Simplex gürültü biraz farklı görünüyor. Bazen Perlin gürültüsü olarak anılırlar, çünkü Ken Perlin aslında Perlin gürültüsünü düşündü (sadece "gürültü" olarak adlandırdı) ve daha sonra bazı işten çıkarmaları kaldırarak ve daha sonra "geliştirilmiş gürültü" olarak adlandırılan simpleks gürültü oluşturdu.). Simplex kendi başına biraz daha koyu görünebilir (ızgara farklıdır, açıkça farklı görünür) ve ayrıca yüksek boyutlu gürültüden bölümler Perlin ile aynı davranmaz.