Tek yönlü gürültü - Simplex noise

İle oluşturulan 3 boyutlu soyut kompozisyon OpenSimplex gürültü nesil algoritması.

Tek yönlü gürültü oluşturmak için bir yöntemdir n-boyutlu gürültü, ses karşılaştırılabilir işlev Perlin gürültüsü ("klasik" gürültü) ancak daha az yönlü eserler ve daha yüksek boyutlarda, daha düşük bir hesaplama ek yükü. Ken Perlin algoritmayı 2001'de tasarladı[1] özellikle daha yüksek boyutlarda klasik gürültü fonksiyonunun sınırlamalarını ele almak için.

Tek yönlü gürültünün Perlin gürültüsüne göre avantajları:

  • Tek yönlü parazit, daha düşük bir hesaplama karmaşıklığına sahiptir ve daha az çarpma gerektirir.
  • Tek yönlü gürültü, çok daha az hesaplama maliyeti ile daha yüksek boyutlara (4D, 5D) ölçeklenir: karmaşıklık için yerine boyutlar klasik gürültü.[2]
  • Tek yönlü gürültüde fark edilebilir yönsel kusurlar yoktur (görsel olarak izotropik ), ancak farklı boyutlar için üretilen gürültü görsel olarak farklı olsa da (örneğin, 2D gürültü, 3D gürültü dilimlerinden farklı bir görünüme sahiptir ve daha yüksek boyutlar için giderek daha kötü görünmektedir.[kaynak belirtilmeli ]).
  • Tek yönlü gürültü, oldukça ucuza hesaplanabilen iyi tanımlanmış ve sürekli bir eğime (neredeyse) sahiptir.
  • Tek yönlü parazitin donanımda uygulanması kolaydır.

Klasik gürültü arasında enterpolasyon yaparken gradyanlar çevreleyen hiper ızgara uç noktalarında (yani, 2D'de kuzeydoğu, kuzeybatı, güneydoğu ve güneybatı[kaynak belirtilmeli ]), tek yönlü gürültü alanı böler basitler (yani boyutlu üçgenler). Bu, veri noktalarının sayısını azaltır. Bir hiperküp içeri girerken boyutlar var köşeler, tek yönlü boyutlar sadece köşeler. Üçgenler eşkenar 2D olarak, ancak daha yüksek boyutlarda basitler yalnızca yaklaşık olarak düzenlidir. Örneğin, işlevin 3B durumundaki döşeme, işlevin yönelimidir. tetragonal disfenoid petek.

Tek yönlü gürültü, gürültünün genellikle 2, 3, 4 veya muhtemelen 5 boyutta hesaplandığı bilgisayar grafik uygulamaları için kullanışlıdır. Daha yüksek boyutlar için, netrafında küreler n-Simplex köşeler yeterince yoğun değildir, bu da işlevin desteğini azaltır ve geniş alan bölümlerinde onu sıfır yapar.

Algoritma ayrıntısı

Simpleks gürültü en yaygın olarak iki, üç veya dört boyutlu olarak uygulanır. işlevi, ancak herhangi bir sayıda boyut için tanımlanabilir. Bir uygulama tipik olarak dört adımı içerir: koordinat eğriltme, basit alt bölümleme, gradyan seçimi ve çekirdek toplama.

Koordinat eğriltme

Formül kullanılarak bir girdi koordinatı dönüştürülür

nerede

Bu, koordinatı bir A üzerine yerleştirme etkisine sahiptir.*
n
kafes, esasen köşe düzenlemesi bir hiperkübik bal peteği (0, 0, ..., 0) ve (1, 1, ..., 1) noktaları arasındaki mesafe, (0, 0,) noktaları arasındaki mesafeye eşit olana kadar ana köşegeni boyunca sıkıştırılmış olan ..., 0) ve (1, 0, ..., 0).

Elde edilen koordinat (x ', y', ...) daha sonra giriş noktasının hangi eğik birim hiperküp hücresinde olduğunu belirlemek için kullanılır, (xb '= zemin (x'), yb '= kat (y') , ...) ve iç koordinatları (xi '= x'-xb', yi '= y'-yb', ...).

Basit alt bölüm

Yukarıdakiler belirlendikten sonra, iç koordinatın değerleri (xi ', yi', ...), hangisinin çarpık olduğunu belirlemek için azalan sırada sıralanır. Schläfli orthoscheme simpleks noktanın içinde yer alır. Daha sonra ortaya çıkan simpleks, (0, 0, ..., 0) 'dan (1, 1, ..., 1)' e kadar olan sıralı bir kenar geçişine karşılık gelen köşelerden oluşur. n! her biri koordinatın tek bir permütasyonuna karşılık gelen olasılıklar. Başka bir deyişle, sıfır koordinatla başlayın ve art arda en büyük dahili koordinat değerine karşılık gelen değerden başlayıp en küçük ile bitenleri ekleyin.

Örneğin, (0.4, 0.5, 0.3) noktası simpleks içinde (0, 0, 0), (0, 1, 0), (1, 1, 0), (1, 1, 1) . Yi 'koordinatı en büyüktür, bu nedenle önce eklenir. Ardından xi 'koordinatı ve son olarak da zi' gelir.

Gradyan seçimi

Her bir simpleks tepe noktası, çarpık hiperküpün taban koordinatına geri eklenir ve sözde rastgele gradyan yönüne hash edilir. Karma, birçok şekilde uygulanabilir, ancak çoğu zaman bir permütasyon tablosu veya biraz manipülasyon şeması kullanır.

Yönlü artefaktları minimumda tutmak için dahil edilecek gradyan setinin seçimine özen gösterilmelidir.

Çekirdek toplamı

Simpleksin n + 1 köşelerinin her birinin katkısı, her köşe etrafında merkezlenmiş radyal olarak simetrik çekirdeklerin bir toplamı yoluyla çarpanlarına ayrılır. İlk olarak, her bir köşenin çarpık olmayan koordinatı, ters formül kullanılarak belirlenir.

nerede

Eğriltilmemiş yer değiştirme vektörünü elde etmek için bu nokta girdi koordinatından çıkarılır. Bu çarpık olmayan yer değiştirme vektörü iki amaç için kullanılır:

  • Ekstrapolasyonlu gradyan değerini hesaplamak için nokta ürün
  • D belirlemek için2, noktaya olan kare mesafedir.

Buradan, her bir köşenin toplanan çekirdek katkısı denklem kullanılarak belirlenir.

nerede r2 genellikle 0,5 veya 0,6 olarak ayarlanır. 0.5, süreksizliklerin olmamasını sağlarken, 0.6, süreksizliklerin fark edilmediği uygulamalarda görsel kaliteyi artırabilir. 0,6, Ken Perlin'in orijinal referans uygulamasında kullanıldı.

Hukuki durum

Uygulamalarının kullanım alanları 3D ve üstü için dokulu görüntü sentezi tarafından kapsanmaktadır ABD Patenti 6.867.776 algoritma, patent istemlerinden herhangi birinde açıklanan spesifik teknikler kullanılarak uygulanırsa.

Ayrıca bakınız

Referanslar

  1. ^ Ken Perlin, Gürültü donanımı. Gerçek Zamanlı Gölgelendirmede SIGGRAPH Ders Notları (2001), Olano M., (Ed.). (pdf)
  2. ^ Ken Perlin, Gürültü yapıyor. GDCHardcore'da sunulan bir konuşmaya dayanmaktadır (9 Aralık 1999). (url)

Dış bağlantılar