Küresel Harmonikler ve Işık Probları nedir?


14

Ne Küresel Harmonikler & Işık Problar ? Bilgisayar grafiklerinde ne kadar yararlılar? Tam olarak ne yapıyorlar? İmza sunumlarından blog yazılarına kadar her yerde küresel harmonikler ve Işık Probları kelimesini duydum.

Son zamanlarda Matt Pettineo onlara 6 bölümlük bir blog dizisi yayınladı ama hala ne olduklarını anlamıyorum.

Ortam aydınlatmasını iyileştirmenin başka bir yolu var mı?

Yanıtlar:


11

Küresel Harmoniklerin Temelleri

Küresel Harmonikler, bir kürenin yüzeyinde bir 2D fonksiyonu temsil etmenin bir yoludur. Uzamsal alan (kübapap gibi) yerine SH, frekans alanında verimli bir şekilde gerçekleştirilebilen aydınlatma ile ilgili bazı ilginç özellikler ve işlemler ile tanımlanır. SH'nin artan "sırası" ile, aşağıdaki resimde gösterildiği gibi fonksiyonların daha yüksek frekanslarını (ayrıntılarını) temsil edebilirsiniz ( SH sırasıdır). Aşağıdaki "temel fonksiyonları" ölçekleyerek ve toplayarak, fonksiyonlar tarafından tanımlanan frekansa kadar küredeki her türlü 2D fonksiyonu temsil edebilirsiniz. Temel işlevler " ilişkili Legendre polinomları " ile tanımlanır , ancak genellikle bunları kendiniz türetmeniz gerekmez, ancak gerçek küresel harmonikler için mevcut türevleri kullanabilirsiniz . lresim açıklamasını buraya girin

SH'de verimli bir şekilde gerçekleştirilebilen böyle bir işleme " evrişim " denir , bu da iki küresel 2D fonksiyonun ürününün bir küre üzerine entegre edilmesi anlamına gelir. Bu, aydınlatma hesaplamalarında yaygın bir işlemdir, örneğin işlevlerden biri sizin olay aydınlatmanız ve bir işlevi BRDF olabilir. SH olarak temsil edildiğinde, bu işlem basitçe iki SH katsayı vektörünün nokta ürünüdür.

Bir başka ilginç işlem de etkin düşük geçişli filtreleme yapabilmesidir. SH frekans alanında temsil edildiğinden, bu sadece SH katsayılarının bir kısmını ölçeklendirme veya sıfırlama meselesidir. Öte yandan diğer bazı işlemlerin mekansal alana kıyasla SH'de gerçekleştirilmesi zor olabilir, örneğin SH olarak temsil edilen işlevi döndürmek istiyorsanız, daha yüksek SH siparişi için oldukça pahalı olabilir. Bu nedenle, SH'de yapılmaya uygun olup olmadığı gerçekten soruna bağlıdır.

SH genellikle yalnızca düşük frekanslı işlevleri (yani sorunsuz değişen işlevler) temsil etmek için kullanılır, çünkü daha yüksek frekanslar depolama miktarını (SH katsayıları) ve işlemeyi arttırmayı gerektirir. Bu nedenle SH'nin örneğin parlak yüzeylerdeki aynasal yansımaları değiştirmek için kullanıldığını görmüyorsunuz. Ayrıca , SH katsayısı matrisinin köşegen elemanlarını depolayarak, z ekseni etrafında dönel olarak simetrik olan 2B fonksiyonlar için depolama ve hesaplamayı azaltmak için kullanılabilen Bölgesel Küresel Harmonikler de vardır . Ayrıca, hemisferik Harmonikler sadece daha az katsayılı SH ile benzer frekansları temsil edebilme avantajı ile hemisferik fonksiyonlarla (aydınlatmada da yaygın) ilgilenmeniz gerekiyorsa kullanılabilir.

Ayrıca gerçekleştirmeniz gereken bir işlem, uzamsal etki alanı verilerini SH'ye dönüştürmek için "SH projeksiyonu" dur. Bu işlemi, mekansal etki alanı verilerinin SH temel işlevleriyle evrimi gerçekleştirerek yapabilirsiniz. SH'nin ilginç bir özelliği, uzaysal alan gösterimlerinin aksine SH'nin takma adından muzdarip olmamasıdır, bu nedenle çok düşük seviyeli SH'ye projeksiyon yaparken bile takma yapaylıklarınız yoktur.

Işık Probları

Artık SH'nin temel işlemlerini ve özelliklerini anladığınıza göre, bunları GI'ye nasıl uygulayacağımızı düşünebiliriz. Bir ışık probu, probun bulunduğu noktaya kadar her yönden ne kadar ışık geldiğini kaydeder. Bu bir küredeki 2B işlevidir ve SH (veya kırmızı, yeşil ve mavi için 3 SH işlevi) olarak temsil edilebilir. Problara kodlamak istediğimiz aydınlatma detaylarının miktarına bağlı olarak SH sırasını seçebiliriz.

Sadece Lambertian dağınık aydınlatma için kullanılan ışık probları için, konvolüsyon, sipariş-2 SH (9 katsayı) ile temsil edilebilen kosinüs-lob ile gerçekleştirildiğinden oldukça düşük dereceli SH yeterlidir. Işık probları için SH katsayıları, basitçe prob noktasında bir kübemap oluşturup daha sonra SH'ye yansıtılarak üretilebilir.

Geometri oluştururken, en yakın ışık probları alınır ve sonuçları, ışıklandırma fonksiyonunu uzayda bir noktaya getirmek için enterpolasyonlanır. Bu, örneğin yakındaki probların SH katsayılarının doğrudan enterpolasyonu ve daha sonra SH alanında piksel normal yönlendirilmiş kosinüs lobuyla konvülsiyonun gerçekleştirilmesiyle yapılabilir.


Bu yöntemi daha basit Görüntü Tabanlı Aydınlatma üzerinde kullanmanın faydaları nelerdir?
Arjan Singh

Benzer depolama ve performans gereksinimlerine sahip, cubemaps kullandığınızdan daha kaliteli düşük frekanslı aydınlatma elde edebilirsiniz.
JarkkoL

16

Küresel harmonikler

Bir Fourier dönüşümünün ne olduğunu biliyorsanız, neredeyse küresel harmoniklerin ne olduğunu biliyorsunuzdur: bunlar sadece bir Fourier dönüşümüdür, ancak doğrusal bir temel yerine küreseldir. Yani, Fourier dönüşümü işlevini temsil etmenin farklı bir yolu olsa da , küresel harmonikler kutup işlevleri için benzer bir şeydir .f(x)f(θ,φ)

Bir Fourier dönüşümünün ne olduğunu bilmiyorsanız, küresel harmonikleri anlamadan önce bilmeniz gerekir. Fourier dönüşümü, bir sinyali bir dizi sinüs ve kosinüs dalgası olarak temsil etmenizi sağlar, her biri sonuncunun iki katı frekansa sahiptir. Yani, sinyali ortalama olarak artı dalga boyu sinyalin uzunluğu ile aynı olan bir sinüs dalgası artı dalga boyunun iki katı sinüs dalgası vb. Gösterebilirsiniz. Fourier dönüşümü sizi bu belirli dalga boylarına sabitlediğinden, yalnızca her birinin genliğini kaydetmeniz gerekir.

Genellikle 2D dijital sinyaller olan görüntüleri temsil etmek için Fourier dönüşümlerini kullanırız. Bu, görüntünün insan gözlerine neye benzediğini önemli ölçüde değiştirmeden bazı sinüs dalgalarını atabilir (veya genliklerini sakladığınız hassasiyeti azaltabilirsiniz). OTOH, pikselleri atmak görüntünün görünümünü çok değiştirir.

Görüntü gibi örneklenmiş bir sinyalde, orijinal görüntüde aynı sayıda sinüs dalgası kullanırsanız, görüntüyü tam olarak yeniden yapılandırabilirsiniz, böylece herhangi bir frekansı atmaya başladığınızda, görüntü daha az depolama alanı alır.

Küresel harmonikler tıpkı Fourier dönüşümleri gibidir, ancak sinüs dalgaları yerine küresel bir işlev kullanırlar, bu nedenle doğrusal işlevler (görüntüler gibi) yerine, kürede tanımlanan işlevleri (çevre haritaları gibi) temsil edebilirler.

Işık probları

Tıpkı standart bir görüntünün görüntü düzleminde belirli bir noktaya ulaşan tüm ışığı nasıl kaydettiği gibi, bir ışık probu da her yönden belirli bir noktaya ulaşan tüm ışığı kaydeder. İlk olarak film efektlerinden çıktılar. Bilgisayar tarafından oluşturulan bir nesneyi gerçek dünya sahnesine eklemek istiyorsanız, sentetik nesneyi gerçek dünya aydınlatmasıyla aydınlatabilmeniz gerekir. Bunu yapmak için, hangi nesnenin sahnede sentetik nesnenin olacağı noktaya ulaştığını bilmeniz gerekir. (Not: "Işıklandırma" dememe rağmen, tüm ışığın görüntüsünü kaydediyorsunuz , böylece yansımalar için de kullanılabilir.)

Tüm yönlerden tek bir noktaya ulaşan tüm ışığı kaydeden küresel bir merceğe sahip bir kameranız olmadığından, bunu küresel bir aynanın normal fotoğraflarını çekip görüntüleri bir küreye yeniden yansıtarak kaydedersiniz.

Film efektlerinin dışında, yapay bir sahneden üretilen ışık problarını kullanmak daha yaygındır. Bir sahnede küresel aydınlatmayı (GI) hesaplamak için pahalı bir algoritmanız olduğunu ve bu sahnede hareket eden daha küçük nesnelerinizin olduğunu (içinde oyuncularla bir oyun seviyesi gibi) düşünün. Herhangi bir nesne hareket ettiğinde tüm GI algoritmasını çalıştıramazsınız, böylece statik sahne ile bir kez çalıştırır ve seviyenin çeşitli noktalarında alınan ışık problarını kaydedersiniz. Ardından, oynatıcıyı en yakın ışık probuyla aydınlatarak GI'ye iyi bir yaklaşım elde edebilirsiniz.

Bunları birlikte kullanma

Genel olarak, küresel aydınlatmanızdaki keskin kenarları yine de filtrelemek istersiniz, bu nedenle bunları kompakt ve kolayca yüksek frekansları atmanıza izin veren bir temsil etmek istersiniz. Küresel harmoniklerin gerçekten iyi olduğu şey budur! Bu yüzden bu iki terimi birlikte kullandığınızı duyacaksınız.

Işık problarını pahalı GI algoritmanızla (genellikle seviye tasarım aracında) veya dinamik nesnelerinizi dahil etmek istiyorsanız saniyede bir kez (kare başına bir kez yerine) hesaplarsınız. Bunları küresel harmoniklerle ucuza saklarsınız - oldukça yüksek kaliteli aydınlatma için 16 şamandıra yeterlidir, ancak yansımalar için değil. Daha sonra, aydınlatmak istediğiniz her dinamik nesne için, en yakın ışık probunu seçersiniz (veya birkaçını birlikte doğrusal olarak enterpole edersiniz) ve gölgelendiricinize düzgün veya sabit bir giriş olarak kullanırsınız. Ayrıca, ortam tıkanıklığı verilerini temsil etmek için küresel harmoniklerin kullanılması da yaygındır ve bunu dönen küresel harmonik fonksiyonların etrafında bazı karmaşıklıklar olmasına rağmen, ışık probu ile birleştirmek çok ucuzdur.


Harika cevap bu gerçekten her şeyi açıklığa kavuşturdu! Bu nedenle, temel olarak Işık Probları, tüm sahne için GI'yi yeniden hesaplamamızı engelleyen hareketli karakterler üzerindeki aydınlatmayı hesaplamanın kolay bir yoludur. Küresel Harmonikler ise yüksek frekansları filtrelemek için kullanılır. (Yanılıyorsam düzelt, sadece doğru anlayışa sahip olup olmadığımı görmeye çalışıyorum).
Arjan Singh

"orijinal görüntüde aynı sayıda sinüs dalgası kullanırsanız, görüntüyü tam olarak yeniden yapılandırabilirsiniz", aslında doğru değil. Örneğin kare dalga, kesin gösterim için sonsuz sayıda frekans gerektirir
JarkkoL

@JarkkoL Elbette, gerçek bir kare dalga yapar. Ancak, örnekleme yoluyla onu ayırdıysanız, hatayı örnekleme hatasından daha az yapmak için yalnızca aynı sayıda frekansa ihtiyacınız vardır. Nyquist teoreminin kullanışlı bir sonucu (örneklenen sinyalde bulunan en yüksek frekans, örnekleme oranının yarısıdır).
Dan Hulme

Ah evet, bu elbette doğrudur. Sanırım frekansın yarısına ihtiyacınız var ama karmaşık (gerçek) vs frekans alanı sonuçları. Veya DCT ve gerçek etki alanını DFT sıklığının iki katı olarak kullanın.
JarkkoL

5

Küresel harmonikler

Diyelim ki bir dizide bazı verileriniz var, ancak bu verileri daha az sayıda baytla temsil etmek istiyorsunuz.

Bunu yapmanın bir yolu, verileri ham değerler yerine bir işlev olarak ifade etmek olabilir.

y=birx+b

birb

Sorun şu ki, doğrusal bir denklem muhtemelen verilerinize zayıf bir yaklaşımdır.

y=birx2+bx+c

birbbirbc

Bellek depolama alanını ve ayrıca verilerinizi saklamanın ve almanın hesaplama karmaşıklığını lineer denkleme kıyasla artırdık, ancak veri dizinize daha iyi bir yaklaşımdır. Ayrıca kübik bir fonksiyona veya daha yüksek bir değere de götürebiliriz. Siparişin artırılması depolama, hesaplama ve doğruluğu artırır.

f(x)

Yukarıdaki örneklerde olduğu gibi, daha düşük depolama alanına sahip bir şey yapmak için daha düşük dereceli bir küresel harmonik işlevi ve verileri hesaplamak için daha düşük hesaplama, aynı zamanda daha düşük doğruluk kullanabilirsiniz.

Öte yandan, siparişinizi artırabilir ve orijinal verilerinize daha iyi bir yaklaşım elde edebilirsiniz, ancak daha fazla depolama alanı maliyeti ve bir veri noktasını hesaplamak için daha fazla hesaplama gerekir.

Aşırı derecede, dizinizdeki örneklerde olduğu gibi çok sayıda küresel harmonik terimi kullanabilir ve ardından orijinal dizinizi tam olarak yeniden oluşturabilirsiniz, ancak bunu yaparken çok fazla hesaplama harcarsınız ve aynı depolama alanını kullanırsınız. başladığınız gibi.

Bu nedenle, pratikte, küre şeklindeki keskin yansıma gibi ince ayrıntıları temsil etmeniz gerekiyorsa, küresel harmonik fonksiyonları çok fazla fayda sağlamaz, ancak ince ayrıntılara sahip olmayan veriler ( çok yüksek frekans içeriğine sahip değildir). Spektral analiz veya evrişim gibi frekans-alanlı hesaplamalar yapmak için de yararlıdırlar.

Depolamada iyi oldukları bu tür bir veri, diğer yönlerden bir noktaya vuran ışığın miktarı olan "ışınımdır". Biraz bulanık görünme eğilimindedir, bu da sadece düşük frekans içeriğine sahip olduğu ve küresel bir harmonik fonksiyonunda depolanmak için iyi bir aday olduğu anlamına gelir.

Işık problarının açıklamasını başka birine bırakacağım: p


Neden aşağı oy? : P
Alan Wolfe

Küresel harmoniklerin ince ayrıntıları temsil etmede iyi olmadığı doğru değildir. Fourier dönüşümü gibi, tüm frekansları korursanız orijinal sinyali tam olarak yeniden oluşturabilirler. İhtiyacınız yoksa yüksek frekansları fırlatarak yerden tasarruf etmeyi kolaylaştırıyorlar.
Dan Hulme

Maalesef, oy verdikten sonra, aksi takdirde yararlı bir cevapta tek bir şüpheli iddia için aldatmanın zor olduğunu düşündüm, ancak oyum ikinci düşüncelerim olduğunda kilitlendi.
Dan Hulme

Ah. Evet, aynı şekilde bir polinom ile herhangi bir veri kümesini temsil etmek mümkündür, ancak pratikte, her ikisi de birçok veri noktasına yakın uyuma ihtiyaç duymak için kötü seçimlerdir. Bir polinom ile, N veri noktalarına tam olarak uyması için bir N sipariş fonksiyonunun N terimlerine ihtiyacınız vardır, bu da bir veri noktası elde etmek için arama değil, hesaplamadan dolayı onu sadece bir diziden daha kötü bir seçim haline getirir. Benzer şekilde, pratik açıdan, küresel harmonikler, korumak istediğiniz yüksek frekans içeriğine sahip küresel veriler için kötü bir seçimdir. Bu durumlarda iyi bir seçim değil.
Alan Wolfe

Tek tek örnekleri yeniden oluşturmak istiyorsanız bu doğrudur, ancak Fourier'in tüm kullanımları bunu gerektirmez - benzer şekilde SH'nin tüm kullanımları için değil. Bir evrişim yapacaksanız, örneklere dönmeden önce bunu frekans alanında yapmak çok daha ucuzdur. Kendi cevabımı bitirdikten sonra cevabınızda bunu daha net hale getirmek için bir düzenleme önermemi ister misiniz?
Dan Hulme
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.