Işın İzleme Metodunun İyileştirilmesi
Vikipedi, özgür ansiklopedi
Bu madde Aralık 2005 tarihinden beri etiketli olarak durmaktadır.Düzenleme yapıldıktan sonra bu not silinmelidir.
[değiştir] 4. IŞIN İZLEME METODUNUN İYİLEŞTİRİLMESİ
Bu makaleyi okumadan önce "Işın İzleme Yöntemi ve Phong Aydınlatma Modeli" ile ilgili makaleleri de okuyunuz.
Önceki konularda ışın izleme metodunun bilgisayar ortamına nasıl aktarıldığı anlatıldı. Ancak bu çalışmanın asıl amacı ışın izleme metodunun iyileştirilerek, ortam (ambient ) bileşeninin yerine foton bileşeninin kullanılmasıdır. Işın izleme yönteminin en temel problemi olan dolaylı aydınlatma işlemi bu kısımda anlatılacak, ambient bileşenin yerine kullanılacak olan foton bileşenin hesaplanması incelenecektir.
4.1. Dolaylı Aydınlatma ( Indirect Illumination )
Işın izleme yöntemine göre, gerçek manzarada aydınlık olan bazı kısımlar karanlık görüntülenmektedir. Bunun nedeni ışık kaynağı tarafından doğrudan aydınlatılmamasına rağmen, yansıyan veya kırılan ışınlar tarafından aydınlatılan yüzeylerin bulunmasıdır. Doğrudan aydınlatılmayan bu yüzeylerin renk değerlerini hesaplamak üzere yapılan işlemlere Dolaylı Aydınlatma (Indirect Illumination ) denir. Dolaylı aydınlatma tekniği ile ilgili en dikkat çekici çalışma Henric Wann Jensen tarafından geliştirilen Photon Mapping yöntemidir. Bununla birlikte Monte Carlo Ray Tracing yöntemi de dikkate değer diğer bir çalışma olarak gösterilebilir. Biz bu çalışmamızda basitleştirilmiş bir Photon Mapping uygulaması gerçekleştireceğiz. Zira Photon Mapping yöntemi, başlı balına bir doktora tezi konusu olacak kadar geniştir.
4.1.1. Foton Mapping ( Photon Mapping )
Photon mapping yönteminde belirlenen sayıda ışın, ışık kaynağından rasgele doğrultularda etrafa saçılır. Her bir ışının yüzeylerden yansıması hesaplanarak tekrar gönderilir. Anlaşılacağı üzere bu işlem derinliği önceden belirlenmiş özyinelemeli bir algoritmayı gerekli kılar. Herhangi bir pikselin renk değeri hesaplanırken, bu pikselin r kadar yakınına çarpan fotonların varlığı araştırılır. Eğer sonuç olumlu ise ilgili pikselin renk değerinin hesaplanmasında bu foton da hesaba katılmalıdır. Anlaşılacağı üzere, Geri Yönde Işın İzleme Yöntemi ile birlikte kullanılan Photon Mapping Yöntemi, geri yönde ışın izleme algoritmasının iyi yönleri ile ileri yönde ışın izleme algoritmasının iyi yönlerinin birleştirilmiş hali gibidir. Photon Mapping yöntemi şekil 4.1’de gösterilmiştir.
Şekil 4.1 : Foton Mapping
4.1.1.1. Foton Mapping’in Gerçekçi Kılınması
Foton mapping algoritmasının etkisinin gerçekçi olması için, fotondan kaynaklanan renk değeri, yüzeyin o noktadaki difüz bileşenine bağlı olarak hesaplanmalıdır. Ayrıca r değerinin küçük seçilmesi doğrultu vektörlerinin de birbirine yakın olmasını sağlayabilir. Bu sayede sadece çarpan fotonların varlığının araştırılması yeterli olacaktır. Aksi taktirde her bir fotonu hesaba katmadan önce yansıma doğrultularını da incelemek gerekir. İleri düzeyli uygulamalarda en gerçekçi sonuçların elde edilebilmesi için r çok küçük seçilmekler birlikte, her bir foton için yansıma doğrultusu da hesaplanmalıdır. Zira şekil 4.1’de önce sol duvardan, sonra da tabandan yansıyarak masanın altına çarpan fotonun yansıma doğrultusu, bakış noktasına doğru değildir. Ancak basitleştirilmiş olan bu uygulamada yansıma doğrultuları göz ardı edilmiştir.
Dikkat edilmesi gereken diğer bir husus da foton sayısının optimum olmasıdır. Zira az sayıda fotonun kullanılması istenen etkiyi oluşturmayacak, gereğinden fazla sayıda fotonun kullanılması da sisteme fazladan bir yük getirecektir. Ayrıca yüzeylere ışığı yutucu özelliğin eklenmesi de gerçekçi görünüm elde edilmesine yardımcı olur. Bu bağlamda her yüzey yansımasından sonra, fotonların bir kısmı rasgele olarak sönümlenmiş kabul edilebilir. Böylece özyinelemeli algoritma her seferinde daha az foton için hesaplama yapacaktır.
Bununla birlikte rasgele doğrultuların hesaplanması da sisteme ayrıca bir yük getirebilir. Bu sebeple rasgele doğrultuları programın başında bir defa hesaplayıp tekrar tekrar kullanma yoluna gidilebilir. Aslında en iyisi bu rasgele doğrultuları önceden hesaplayarak bir dosyada saklamak ve daha sonra ihtiyaç oldukça oradan okumaktır. Çalışmamızda bu rasgele doğrultular bir dosyadan okunmaktadır.
Rasgele doğrultular hesaplanırken işe yaramayacak doğrultuların oluşturulması engellenebilir. Örneğin tavana yapışık bulunan bir ışık kaynağı için yukarı doğru foton göndermek anlamsız olacaktır. Ayrıca, rasgele doğrultular her uygulamada istenen neticeyi vermeyebilir. Bu nedenle Yarımküre Geometrisi ( Hemispherical Geometry ) tekniği kullanılabilir.
4.1.2. Foton Doğrultularının Hesaplanması
Foton Mapping yönteminin ilk aşaması, ışık kaynağından gönderilecek olan fotonların doğrultularının belirlenmesidir. Noktasal ışık kaynağını merkez kabul eden ve doğrultusu belirlenen fotonlar, kesişim testleri yapılmak üzere yüzeylere gönderilirler. Her kesişim noktası için yansıma doğrultusu belirlenir. Eğer ışın sönümlendirilmeyecekse ve iterasyon sona ermediyse işlem özyinelemeli olarak tekrar edilir. Sonuçta ilgili pikselin renk değeri hesaplanırken bu kesişimler kontrol edilir.
Foton doğrultuları hesaplanırken birim kürenin analitik ifadelerinden faydalanılır. Orijini merkez kabul eden kürenin analitik ifadesi aşağıdaki gibidir:
x2 + y2 + z2 = r2 (4.1)
4.1 ifadesindeki x, y ve z, Rph foton doğrultusunu belirleyen vektörün elemanlarıdır. Bu vektörün birim vektör olması, yani normalize edilmesi önemlidir. Bu sebeple r = 1 alınırsa elde edilen vektör birim vektör olacağından Rph normalize edilmiş olunur. Böylece 4.1 ifadesi aşağıdaki hale dönüşür :
x2 + y2 + z2 = 1 (4.2)
4.2 ifadesi, belirlenen foton doğrultularının sağlaması gereken nihai ifadedir. Ancak daha önce bu doğrultuyu oluşturacak x, y ve z bileşenlerinin hesaplanması gerekir. Eğer ışık kaynağı herhangi bir yüzeye yapışık değilse, x, y ve z bileşenlerinin her birisi [ -1 1] aralığında herhangi bir reel sayıyı ifade etmelidir. Bu sebeple random sayıları üreten fonksiyonun yalancı dil kodu (pseudocode) genel olarak aşağıdaki gibi olabilir :
double random_sayi = ( double alt_sinir , double ust_sinir , int carpan); 1: alt = alt_sinir * carpan 2: ust = ust_sinir * carpan 3: sayi = random ( alt , ust ) 4: sayi = sayi / carpan 5: return ( sayi ) ;
Yukarıdaki kodda bulunan carpan değeri, random sayı üretecinin hassasiyetini artırmak için kullanılmaktadır. Aksi taktirde random sayı üreteci [ -1 1 ] aralığında tamamen rasgele sayılar üretemez. Ayrıca alt_sinir ve ust_sinir değişkenleri, üretilen rasgele sayının alabileceği en büyük ve en küçük değerleri temsil etmektedir. Foton doğrultularının üretilmesi Şekil 4.2’de gösterilmiştir.
Şekil 4.2 : Rasgele doğrultular ile Rph’nin üretilmesi
4.1.2.1. Doğrultu Vektörlerinin Sınırlandırılması
Tamamen rasgele doğrultularda üretilen fotonların bir kısmının işe yaramayacağına daha önceden değinilmişti. Bu sebeple doğrultu vektörlerinin sınırlandırılması gerçekleştirilmelidir. İşe yaramayacak olan doğrultu vektörlerinin sınırlandırılması, algoritmayı önemli ölçüde hızlandıracaktır.
Doğrultu vektörü yalancı koddaki ifadeler kullanılarak üretilen fotonlar, küre içindeki herhangi bir doğrultuda ilerleyebilirler. Ancak bu her zaman istenen bir durum değildir. Eğer ışık kaynağı tavana yapışık halde ise doğrultu vektörünün y değeri, sadece negatif değerler almalıdır. Zira y’nin pozitif değerleri, fotonların tavandan yukarı doğru hareket etmesini gerektirir. Bu sebeple Rph hesaplanırken birim küre yerine, birim kürenin yarısı kullanılmalıdır. Bu durum Şekil 4.3’te gösterilmiştir.
Şekil 4.3 : Birim kürenin yarısı kullanılarak Rph’nin üretilmesi
Şekil 4.3’teki yarım küreye uygun doğrultu vektörlerinin üretilmesi için y değerleri hesaplanırken alt sınır olarak 0 değeri girilmelidir.
Eğer ışık kaynağı odanın herhangi iki yüzeyinin kesiştiği doğru üzerindeki bir noktada ise Rph hesaplanırken bu kez birim kürenin 1 / 4’ü kullanılmalıdır. Bu durum Şekil 4.4’te gösterilmiştir.
Şekil 4.4 : Birim kürenin 1 / 4’ü kullanılarak Rph’nin üretilmesi
Şekil 4.4’teki çeyrek küreye uygun doğrultu vektörlerinin hesaplanması için, y ve x değerleri hesaplanırken alt sınır olarak 0 değeri girilmelidir.
Bu çalışmada odanın tavanını aydınlatmak üzerine yoğunlaşıldığı için, doğrultu vektörlerini hesapladığımız küre uygun şeklide kırpılmıştır. Yansıdıktan sonra tavanı aydınlatacak olan doğrultu vektörlerini üretmek için kırpılan küre Şekil 4.5’te gösterilmiştir.
Şekil 4.5 : Kırpılmış birim küre
Şekil 4.5’teki kırpılmış küreye uygun doğrultu vektörlerinin hesaplanması için x, y ve z değerleri hesaplanırken simülasyonu yapılan odanın boyutları göz önüne alınarak ayrı ayrı alt ve üst sınırlar belirlenmiştir.
Çalışmalar sonucunda elde edilen görüntüler aşağıda sunulmuştur:
Foton Mapping uygulanmadan elde edilen görüntü.
Işın izleme yöntemine 5000 foton eklenerek elde edilen görüntü.