Işın izlemenin temel mantığı
Işın izleme (İngilizce: ray tracing), gerçek dünyada ışığın ne şekilde hareket ettiğini göz önünde bulundurarak bir sahnenin görüntüsünü çizen bir grafik oluşturma yöntemidir. Bu yöntemde işlemler gerçek yeryüzündeki yolun tersini izler. Gerçek dünyada ışık ışınları bir ışık kaynağından çıkar ve nesneleri aydınlatırlar. Işık, nesnelerden yansır ya da şeffaf nesnelerin içinden geçer. Yansıyan ışık gözümüze ya da kamera merceğine çarpar. Yansıyan ışık ışınlarının çoğu bir gözlemciye erişmediği için bir sahnedeki ışınları izlemek sonsuza dek sürebilir.
Gerçekçilik arayışı ve Phong modelinin sınırları
Günümüzde pek çok alanda bilgisayar kullanımı oldukça yaygınlaşmıştır. İlk zamanlarda sadece bazı hesaplamalar yapmak için kullanılan bilgisayarlar, kullanım alanları genişledikçe insan hayatında daha çok yer edinmiş, iletişim yetenekleri geliştikçe de insanla daha çok ortamı paylaşır hale gelmişlerdir. Bu bağlamda görüntünün güzel olması pek çok uygulama için gerekli olmakla beraber, güncel uygulamaların büyük kısmında gerçekçilik de büyük önem taşır. Örneğin oyunlar ve animasyonlar bilgisayar dünyasında oldukça popülerdir. Görüntünün gerçekçi ve güzel arasında, uygulanabilir, yakın olması, metodun gerçek dünyada ışığın çevreyle olan etkileşimini modellemeye çalışmasıdır.

Phong aydınlatma modeline göre herhangi bir pikselin renk değeri belirlenirken üç bileşen kullanılır. Bunlar ortam (ambient), yaygın (diffuse) ve aynasal (specular) bileşenlerdir. Bu üç bileşen, toplamları 1’e eşit olan üç katsayı ile toplanarak, ilgili pikselin renk değeri hesaplanır. Klasik ışın izleme yöntemi, ambient değerini gerçekçi olarak modelleyememektedir. Örneğin tavanında bir lambanın bulunduğu bir odanın simülasyonu yapılmak istendiğinde, odanın tavanı neredeyse tamamen karanlık kalmaktadır.
Aynı odada bir masa olduğunu farz edersek, masanın altının da tamamen siyah olduğu görülür. Gerçek dünyada bazı yüzeylerin tamamen karanlık olmamasına rağmen, ışın izlemenin sonucunda tamamen karanlık olmasının nedeni, ışık kaynağından çıkan ışınlar tarafından doğrudan aydınlatılmayan yüzeylerin gerçekte aydınlık olmasıdır. Yani sahnede aydınlık görünmesine rağmen, ışık kaynağından çıkan ışınların direkt olarak çarpmadıkları yüzeyler bulunmaktadır. Bu yüzeyler kırılmalar veya yansımalar neticesinde aydınlanmaktadır. Bu işleme Dolaylı aydınlatma (Indirect Illumination) denir. Doğrudan aydınlatılmayan bu yüzeylerin renk değerlerinin hesaplanması, derinliği önceden belirlenmiş özyinelemeli bir algoritmayı gerekli kılar. Aksi takdirde görüntünün tamamen gerçekçi olması beklenemez. Elbette ki bu algoritmanın koşması, görüntünün daha da geç hesaplanmasına neden olacaktır. Bu nedenle algoritmanın optimum olması çok önemlidir.
İleri ve geri yönlü modeller
Işın izleme yöntemi, ışık kaynağından çıkan ışınların fiziksel davranışlarını modellemek üzere kurulmuştur. Gerçek yeryüzündeki cisimleri görebilmemiz için ışık kaynağından çıkan ışınların, cisimlere çarparak yansıması ya da cisimlerin içinden geçerek kırılması ve sonuçta da gözümüze ulaşması gerekir. Bilgisayar ortamında ise, gerçekçi 3B görüntüler üretebilmek için boyama ve görünmeyen yüzeylerin kaldırılması işlemleri gerçekleştirilmelidir.
İleri Yönlü Işın İzleme (Forward Ray Tracing) yöntemi, ışık kaynağından doğrusal olarak saçılan ışınların cisimlerden yansıması ya da kırılması sonucu göze ulaştığı kabul edilerek yapılan modellemeye denir. Gerçek yeryüzündeki görme, bu modele uygun olarak gerçekleşmektedir. Gerçek dünyada ışık kaynağından saçılan milyarlarca fotonun çok az bir kısmı göze ulaşır. Bu model bilgisayar ortamında gerçeklenirken, göze ulaşamayan fotonlar için çok sayıda gereksiz hesaplama yapılacaktır. Bu nedenle ileri yönde ışın izleme yönteminin bilgisayar ortamında gerçeklenmesi oldukça zordur.
Göze ulaşmayan ışınların sisteme getireceği yükten kurtulmak için, sadece göze ulaşan ışınlar için hesaplama yapılması istenir. Bu nedenle ışın izleme yönteminin bilgisayar ortamında gerçeklenmesi için Geri Yönde Işın İzleme (Backward Ray Tracing) modeli kullanılır. Bu modelde ileri yönde ışın izleme yönteminin tersine, ışınların gözden çıkarak cisimlere çarpıp yansıması ya da kırılması sonucu ışık kaynağına ulaştığı kabul edilir. Bu yaklaşım sayesinde ileri yönde ışın izleme yönteminde olduğu gibi ışık kaynağından çıkan tüm ışınlar için değil, sadece göze ulaşabilen ışınlar için hesaplama yapılmış olur.
Işının tanımı ve birincil ışınlar
Işın, başlangıç noktası ve doğrultusu olan vektörel bir büyüklüktür. Inicio noktası R0 olan, Rd doğrultusu boyunca ilerleyen R vektörü R = R0 + t Rd, t > 0 şeklinde tanımlanabilir. Burada t, Rd doğrultusu boyunca giden R ışınının R0 başlangıç noktasına uzaklığıdır. t değerinin R0 ile Rd arasındaki uzaklığa tam olarak eşit olması için Rd’nin boyu 1 olmalı, yani Rd normalize edilmelidir.
Bakış noktasından yollanan ve görüntü düzlemindeki her pikselin merkezinden geçen ışınlara, Birincil Işınlar (Primary Rays) denir. Işın izleme yönteminin ilk adımı birincil ışınların oluşturulmasıdır. Birincil ışınların üretilebilmesi için, ilk olarak doğrultunun hesaplanması gerekir. Bunun için 2.1 ifadesi yeniden düzenlenir: Rd = (R – R0) / t. Birincil ışının doğrultusunun hesaplanması için iki noktaya ve bir uzaklık bilgisine ihtiyaç vardır. İki noktadan birincisi genellikle R0 = [ 0 0 0 ] olarak seçilen bakış noktasıdır. İkinci nokta ise, renk değeri hesaplanmak istenen pikselin koordinatlarıdır.
Kesişim testlerinde, ışın ile yüzeyin kesişimi araştırılır. Eğer kesişim varsa 0’dan büyük bir t değeri geri döndürülür. Aksi takdirde t değeri 0 olur. Hesaplanan bu t değeri sayesinde yüzey üzerindeki kesişim noktasının koordinatları belirlenir. Eğer ışın bu kesişim noktasından kırılarak veya yansıyarak yoluna devam edecekse, kesişim noktası yeni başlangıç noktası yani R0 olur. Yansıma veya kırılma doğrultusu belirlenerek yeniden kesişim testleri yapılır. Bu ışınlara İkincil Işın (Secondary Rays) denir. İkincil ışınlar istenen derinlik değerindeki bir özyinelemeli bir algoritma ile ışık kaynağına ulaşıncaya kadar yeniden hesaplanır.
Geri yönde ışın izleme yönteminde, gözlemcinin belli bir noktadan, görüntü düzlemine dik olarak baktığı varsayılır. Eğer tüm yansımalar ve kırılmalar sonucunda, gönderilen ışın ışık kaynağına ulaşmazsa, ilgili piksel siyaha boyanır. Burada yapılan yansıma ve kırılma işlemleri için bir derinlik değeri belirtilmelidir. Aksi takdirde işlemler çok uzun zaman alabilir.
Görünmeyen yüzeylerin kaldırılması
Görünmeyen yüzeylerin kaldırılmasının, gözlemci tarafından 3B nesnelere bakıldığında, manzaradaki cisimleri oluşturan yüzeylerden görünmeyenlerin kaldırılması, dolayısı ile görünenlerin belirlenmesi işlemine verilen ad olduğunu belirtmiştik. Görünmeyen yüzeylerin kaldırılmasında kullanılan başlıca yöntemler Derinlik Tamponu (Z-Buffer) ve Işın İzleme (Ray Tracing)’dir.
Derinlik tamponu yönteminde üç boyutlu cisimlerin iki boyutlu görüntü düzlemine izdüşümü alınırken, ilgili pikselin renk değerinin yanı sıra cisimle kesişim noktasının Z değeri de saklanır. Aynı piksel için yeni bir cisim kesişimi algılandığında Z değerleri karşılaştırılır. Yeni Z değeri eskisinden küçükse bu pikselin rengi yeni cismin rengi ile değiştirilir ve Z değeri yenisiyle güncellenir.
Işın izleme yöntemi ile görünmeyen yüzeyler kaldırılırken, bakış noktasına göre aynı doğrultuda bulunan yüzeylerden, t uzaklığı en küçük olanı seçilmelidir. İlgili pikselin renk değeri hesaplanırken, seçilen bu yüzey esas alınır, diğerleri göz ardı edilir. Dikkat edilirse, Z Buffer yöntemi ve benzeri tüm diğer yöntemlerde kullanılan çokgen türü üçgen olmasına rağmen, ışın izlemede işlemler yönteminde piksel mertebesinde gerçekleştirilir. Bu sayede eğrisel yüzeylerde bile iyi sonuçlar elde edilir. Diğer yöntemlerde bu derece gerçekçi sonuçlar elde etmek için çokgenlerin son derece küçük seçilerek bir piksel boyutuna indirilmesi gerekir ki oldukça zor, hatta imkânsız denilebilir.
Arka yüzeyler, bakış noktasından bakıldığında asla görülemeyecek olan yüzeylerdir. Örneğin dik olarak bakılan bir küpün arka yüzeyi as
This explanation is adapted from Wikipedia and is available under CC BY-SA 4.0.

1 comment