4705 Hüseyin ÖZBEK
4721 Fadıl ÇAĞLAR
5476 Dinç ÖZDEMİR
Konu: Işın İzleme
GİRİŞ
Bilgisayar grafiklerinde üç boyutlu (3B) görüntü üretim yöntemlerinden biri olan Işın
İzleme (Ray Tracing), ilk olarak 1968 yılında Appel tarafından ortaya atılmıştır . Appel’in ışın
izleme yöntemi 3B nesneler için yüzey boyama ve gölgelendirme yapabilmesine rağmen,
ışının aynasal yansıma ve kırılma özelliklerini modelleyemiyordu. Whitted ve Kay’ın
çalışmaları sonucunda, ışın izleme algoritması ışının aynasal yansıma ve kırılma özelliklerini
de modelleyebilecek şekilde geliştirilmiştir. Işın izleme yöntemi bu özelikleriyle, 3B görüntü
üretimi teknikleri içinde gölge belirleme, aynasal yansıma, kırılma ve katı cisim üretimi için
en etkin yöntemlerden biridir.
Günümüzde 3B görüntü üretimi tekniklerinin görüntü üretirken yaptıkları iki ana iş
vardır : görünmeyen yüzeylerin kaldırılması (hidden surface removal), boyama. Görünmeyen
yüzeylerin kaldırılması, belli bir bakış noktasından bakan gözlemcinin manzaradaki 3B
nesnelerin yüzeylerinden görünmeyenlerinin kaldırılarak görünenleri belirleme işlemidir.
Boyama, 3B nesne üzerindeki herhangi bir noktanın rengini belirleme işlemidir. Renk
belirleme ışıklandırmaya (lighting), gölgelere, geçirgenliğe, yansıtmaya, kırılma indisine ve
yüzeyin dokusuna bağlı olarak belirlenir. Işın izleme yerel aydınlatmanın (local illumination)
bu saydığımız bütün özellikleri için çözümler sunar.
Etkileşimli görüntü üretimi için tek işlemci yeterli olmadığından, yapılan çalışmalarda
paralel bilgisayarlar kullanılmıştır. Işın izleme yöntemi herhangi bir pikselin renk bilgisini
diğerinden bağımsız hesapladığından paralel hesaplama için oldukça uygun bir yöntemdir.
Sistemin performansı ilgilenilen görüntünün karmaşıklığı ve görüntü boyuna bağlı olarak
değişmesine rağmen seçilen paralel sistemin ölçeğine göre oldukça olumlu sonuçlar elde
edilmiştir.
Etkileşimli ışın izleme ile ilgili yapılan çalışmaların genellikle paralel çalışan
geleneksel çok-işlemcili sistemler üzerinde olduğu görülmektedir. Bu sistemler paralel
hesaplamanın etkinliği açısından daha başarılı olsa da kısa zamanda demode olmakta ve
kolayca güncelleştirilememektedir. Oysa günümüzdeki kişisel bilgisayarlardaki işlemciler
geleneksel paralel bilgisayar sistemlerinde kullanılan işlemcilere göre oldukça güçlüdür.
Dolayısıyla geleneksel paralel işlemciler yerine, kişisel bilgisayarlardan oluşan paralel
sistemleri kullanmak daha avantajlı olmaktadır. Böylece bilgisayarlar yavaş kaldığında
sisteme kolayca yüksek hızlı yeni bilgisayarlar eklenebilmektedir. İstenilirse tüm sistem
kolayca güncellenebilmekte ve geliştirilmiş yazılımlar sistemde çoğu zaman güncelleme
gerekmeksizin kullanılabilmektedir. Geleneksel paralel işlemcilerde ise sistemin
değiştirilmesi ile birlikte çoğu zaman geliştirilen yazılımların da büyük ölçüde değişmesi
gerekmektedir. Bu çalışmada etkileşimli bilgisayar grafikleri için en uygun hesaplama
ortamını sunan, güncel ağ teknolojisi kullanılarak birleştirilen kişisel bilgisayarlardan oluşan,
paralel bilgisayar sistemi kullanılmıştır.
IŞIN İZLEME (İngilizce: Ray tracing)
1
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. Ancak bu yöntemde işlemler
gerçek dünyadaki 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 lensine ç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.
Işın izleme yöntemi, 3B görüntüler üretmek için, bakış noktasından görüntü
düzlemindeki her bir pikselden geçecek şekilde nesne uzayına ışınlar yollar. Bu ışınlara
“birincil ışınlar” denir. Üretilecek görüntüdeki herhangi bir pikselin rengi, o pikselden geçen
birincil ışın ile görüntüsü üretilecek nesnelere ait üçgenler arasında kesişim testleri yapılıp
görünmeyen yüzeyler kaldırılarak belirlenen, bakış noktasına en yakın üçgenin rengine, eğer
bu üçgen ışını yansıtıcı/kırıcı özelliğe sahipse ışının bu üçgenden yansıyıp/kırılıp çarptığı ilk
üçgenin rengine, bakış noktasının ve ışık kaynağının konumuna göre belirlenir. Burada
yüzeyin yansıtıcılığına ve geçirgenliğine bağlı olarak ikincil, üçüncül ve diğer ışınlar tam
görüntünün üretimi için birincil ışındakine benzer şekilde dikkate alınmaktadır. Bu çalışmada
gerçekçi görüntülerin üretimi için kullanılan etkileşimli ışın izleme yöntemi yansıma, gölge
testi, doku kaplama, hızlandırma yöntemlerini içermektedir.
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, özel animasyonlar ve sadece animasyonlardan oluşan
filmler, bilgisayar dünyasında oldukça popülerdir.
Görüntünün gerçekçi ve güzel olmasında ekran kartı (graphics adapter) kuşkusuz
büyük önem taşır. Ekran kartları kendi işlemcisi ve belleği bulunan, grafik komutlarını direkt
destekleyen donanımlardır. Görüntü üretiminde donanımın verdiği desteğe ek olarak, kaliteyi
arttırma adına yapılan yazılım çalışmaları da bulunmaktadır. Bu çalışmalar arasında,
uygulanılabilirliğinin yüksek olması ve fiziki gerçekliğe oldukça yakın olması nedeni ile Işın
İzleme Yöntemi (Ray Tracing) yaygın olarak kullanılmaktadır.
Işın izleme metodu, bilgisayar ortamında üç boyutlu, fotoğraf kalitesine çok yakın görüntü
üretimi için kullanılan, oldukça basit ve gerçekçi bir yöntemdir. Üç boyutlu görüntü
oluşturmak için kullanılabilen birçok alternatif yöntemin bulunmasına rağmen, ışın izleme
metodunun tercih edilmesinin nedeni, metodun gerçek dünyada ışığın çevreyle olan
etkileşimini modellemeye çalışmasıdır.
Elbette hiçbir algoritma mükemmel değildir. Işın izleme metodunun gerçekleştirilmesi
basit olmasına rağmen, gerektirdiği işlemci gücü ve bellek kullanımı önemli bir problem
oluşturmaktadır. Görüntü oluşturma süresini kısaltmak için daha hızlı işlemcilerin
kullanılması tek başına yeterli değildir. Bunun bir sebebi, yöntemin özyinelemeli bir yapıya
sahip olması ve sahnedeki cisimlerin tüm özellik bilgilerinin saklanması için gerekli olan
bellek ihtiyacıdır. Diğer bir sebep de bellekte saklanan verilerin yoğun bir şekilde işlemciye
taşınma gereksiniminden kaynaklanan veri yolu trafiğinin fazla olmasıdır. Bu sebeple işlemci
hızının, veri yolu bant genişliğinin ve bellek boyutunun birlikte arttırılması işlemi
hızlandırabilir. Ayrıca algoritmanın paralel sistemlere uygulanması da hızın artmasını
sağlayabilir.
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 çarpılıp toplanarak, ilgili
pikselin renk değeri hesaplanır. Klasik ışın izleme yöntemi, ambient değerini gerçekçi olarak
2
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.
Ayrıca 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 taktirde 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.
Üretilen görüntüdeki piksellerin renk değerleri Phong aydınlatma modeli ile
belirlenmiştir. Doku kaplama yapılarak görüntünün kalitesi arttırılmıştır. Bump mapping ile
doku kaplama yapılmıştır. Doku kaplamada karşılaşılan aliasing problemi supersampling
yapılarak çözümlenmiştir. Işın izlemeyi hızlandırmak için arka yüz kaldırma ve çevreleyen
hacim yöntemleri kullanılmıştır. Ayrıca etkileşimli ışın izleme yapılmıştır. Buna göre
kullanıcı üretilen görüntü içerisinde tuşlarla ile geri ilerlemekte ve sağa sola dönebilmektedir.
Işın izlemede herhangi bir pikselin renginin hesaplanması diğerlerinden bağımsızdır. Bu
özelliği ile ışın izleme paralel hesaplamaya yatkın bir yöntemdir. Yapılan çalışmada yerel ağ
üzerindeki bilgisayarlar paralel çalıştırılmış üretilen görüntüler için speedup değerleri
hesaplanmıştır. Heterojen bir ağ için yük dengelemesi yapmak paralel hesaplamanın etkinliği
3
açısından gereklidir. Ayrıca üretilecek görüntüdeki herhangi bir piksel için gereken zaman
diğerinden farklı olabilmektedir. O nedenle ağ homojen bile olsa yük dengelemesi yapmak
gerekebilir. Bunun için paralel çalışmada işlemci çiftliği modeli gerçeklenmiştir. Buna göre
ana bilgisayar üretilecek görüntüyü parçalara bölerek bir iş havuzu oluşturur. Ağ üzerindeki
her bir bilgisayar da bu iş havuzundan bir iş alıp tamamlar ve tekrar havuzdan iş ister.
Böylece dinamik iş tahsisi ve yük dengelemesi yapılmıştır.
İleri Yönlü Işın İzleme (Forward Ray Tracing) Yöntemi
Işı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 İleri Yönde Işın İzleme (Forward
Ray Tracing) yöntemi denir. Gerçek dünyadaki 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. Işık kaynağından çıkan fotonlar önünü kesen bir yüzeye çarpana dek doğrusal olarak
(ışınlar halinde) ilerler. Fotonlar ile yüzey arasındaki fiziksel etkileşim onların nasıl
emildiğini, yansıdığını veya iletildiğini belirler. Gördüğümüz görüntüleri milyarlarca fotonun
cisimlerden gözümüze ulaşması sonucu görürüz.
İleri Yönde Işın İzleme yöntemi ile bilgisayarda 3B görüntüler üretmek mümkündür yalnız bu
durumda görüntü üretimi için geçen zamanın çok büyük bir kısmı gerçekte görünmeyen
ışıkları modellemek için geçer. Çünkü gerçekte, ışık kaynağından saçılan ışınların çok azı
göze ulaşmaktadı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 Çok fazla hesaplama zamanı
gerektiren bu yöntem pek kullanılmaz. İleri yönde ışın izleme yöntemi Şekil 2.1’de
gösterilmiştir.
Geri Yönlü Işın İzleme (Backward Ray Tracing) Yöntemi
Işınları gerçek hayattaki gibi ışık kaynağından bakış noktasına doğru yollamak yerine
bakış noktasından ışık kaynağına doğru yollamak hesaplama açısından daha etkin bir
yöntemdir. Göze ulaşmayan ışınların sisteme getireceği yükten kurtulmak için, sadece göze
4
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öntemindeki gibi ışık kaynağından çıkan tüm
ışınlar için değil, sadece göze ulaşabilen ışınlar için hesaplama yapılmış olur. O nedenle ışın
izleme denince genelde geri yönde ışın izleme anlaşılır.
Geri yönde ışın izleme yönteminde, gözlemcinin belli bir noktadan, görüntü düzlemine
dik olarak baktığı varsayılır. Bakış noktasından çıkıp görüntü düzleminden geçen ışınlar,
cisimlere çarptıktan sonra kırılarak veya yansıyarak ışık kaynağına ulaşıyorsa, ilgili pikselin
rengi ışık kaynağının konumuna, cisimlerin rengine, yansıtma ve geçirgenlik özelliklerine
göre belirlenir.Geri yönde ışın izleme modeli Şekil 2.2 ve Şekil 2.3’de gösterilmiştir.
Şekil 2.3. Geri yönde ışın izleme ile 3B görüntü üretimi
5
Gözlemcinin belli bir bakış noktasından baktığı varsayılır. Bakış noktasının önünde
görüntü düzlemi vardır. Görüntü düzlemi 3B görüntünün oluştuğu yerdir. Belli bir bakış
noktasından yollanan ve görüntü düzleminin her bir pikselinden geçen ışınlar, cisimlerden
yansıyarak ya da kırılarak ışık kaynağına ulaşıyorsa ilgili pikselin rengi ışık kaynağının
yerine, cisimlerin rengine, yansıtma ve geçirgenlik özelliklerine göre belirlenir. Eğer ışın en
son ışık kaynağına ulaşmamışsa ilgili piksel için bakış noktasından herhangi bir nesne
görünmüyor demektir ve o piksel siyah renge boyanır. Genellikle cisimlerden yansıyan ya da
kırılan ışınlar için belirli bir derinlik değeri tanımlanır. Yani belirli sayıda yansıyan ya da
kırılan ışın, ışık kaynağına ulaşmamışsa görünmediği varsayılır. Üretilecek görüntünün
kalitesini belirlemede bu değer önemlidir. Bu değer büyük seçilirse görüntü kalitesi yüksek
olur. Yalnız bu durumda hesaplama zamanı oldukça artar. Nesnelerin görüntü düzleminde
görüntülerinin oluşması için bakış noktasından başlayan bir pramidin içinde olmaları gerekir.
Buna Görüş Piramidi (Viewing Frustum) denir.
Işının Tanımı
Işın izleme yönteminin en temel bileşeni olan ışın, başlangıç noktası ve doğrultusu olan
vektörel bir büyüklüktür. Başlangıç noktası R ‘ dan çıkan ve normalize edilmiş R doğrultusu
0 d
boyunca ilerleyen R ışınını aşağıdaki gibi ifade etmek mümkündür
R = R + tR ,t > 0
0 d
Burada t, R doğrultusu boyunca giden R ışınının R başlangıç noktasına uzaklığıdır. t
d 0
değerinin R ile R arasındaki uzaklığa tam olarak eşit olması için R ’nin boyu 1 olmalı, yani
0 d d
Rd normalize edilmelidir. Bir ışının gösterimi Şekil 2.4’teki gibidir.
Şekil 2.4. Işın ve R boyunca ilerlemesi
d
Birincil Işınların Üretilmesi
İlk birincil ışının üretilmesi için bu ışının doğrultusunun belirlenmesi gerekir. Bunun
için formül yeniden R ‘ye göre düzenlenirse aşağıdaki ifadeyi elde edilir:
d
6
R =(R-R )/t
d 0
Şekil 2.5. Birincil ışınların üretimi
Yeni elde edilen formülde görüldüğü gibi ışının doğrultusunu bulmak için 3B uzayda iki
noktaya ihtiyaç vardır. Bunlardan birincisi R = [ 0 0 0 ] olan başlangıç noktasıdır. İkinci
0
nokta ise ilk pikselin koordinatlarıdır. Şekil 2.5. ‘ten de görüldüğü gibi bu R = [ -4 4 5 ]
noktasıdır. t değeri de yaklaşık 7.55 ‘tir. Bu değerler (2) ifadesinde yerine koyulursa R
d
aşağıdaki gibi hesaplanır
R = [ -4/7.55 4/7.55 5/7.55 ] = [ -0.529 0.529 0.662 ]
d
Formüldeki sayısal değerlere dikkat edilirse ( R - R ) ‘ın t ‘ye bölünmesi aynı zamanda
0
R ‘nin de normalize edilmiş halini verir. Çünkü elde edilen R ‘nin bileşenlerinin karelerinin
d d
toplamının karekökü yani R ‘nin boyu :
d
‘dir
R ‘nin bulunmasıyla ilk birincil ışın üretilmiş olur. Işın ifadesindeki t değerinin
d
hesaplanması için kesişim testlerinin yapılması gerekmektedir. Kesişim testi için ışının
başlangıç noktası R ve doğrultusu R ‘yi bilmek yeterlidir. Kesişim testleri yapılırken bu
0 d
değerler kullanılarak eğer kesişim varsa t değeri hesaplanır, geri döndürülür. Hesaplanan bu t
değeri yardımıyla ışının kesiştiği yüzey üzerindeki koordinatları hesaplanır. Eğer ışın bu
yüzeyden yansıyarak veya kırılarak yoluna devam edecekse bu koordinatlar yansıyan veya
7
kırılan ışın için yeni başlangıç noktası yani R olur. Yansıma veya kırılma doğrultuları
0
hesaplanır ve ışın yeni başlangıç noktası ve doğrultusu boyunca yollanır. Üretilen bu yeni
ışınlara İkincil Işınlar denir. İkincil ışınlar için de yine birincil ışınlar için yapılan işlemler
tekrarlanır. Işınlar yansıyıp kırıldıkça üçüncül, dördüncül... n. ‘cil olmak üzere yeni ışınlar
üretilir. Bu işlemler ışın ışık kaynağına ulaşıncaya kadar veya n derinlik değerine kadar
özyinelemeli (recursive) olarak tekrarlanır.
Şekil 2.5.’de basitlik açısından görüntü düzleminin hem piksel mertebesinde
çözünürlüğü 8x8 olduğu varsayıldı hem de eni ve boyu 8x8 birim alındı. Böylece piksel
koordinatları tam sayı oldu. Eğer çözünürlük 640x480 olsaydı, 8x8 birimlik görüntü
düzleminde herhangi bir (X,Y,5) noktasından geçen ışının piksel koordinatları (8*X/640 - 4, 4
– 8*Y/480, 5 ) olurdu. En basit ışın izleme uygulamalarında görüntü düzlemindeki her bir
piksele yalnızca bir tane birincil ışın yollanır. Bu durumda her bir piksel için bir örnekleme
yapıldığından üretilecek görüntüde bazı bozulmalar olabilmektedir. Özellikle doku kaplama
yapılmışsa bu bozulmalar daha da artabilmektedir. Bozulmaların temel sebebi bir pikselden
geçen ışının aynı anda nesnelerden iki veya daha çoğuyla birden kesişmesidir. Bu durumda
gerçekte o pikselin rengi bu kesişim noktalarından hangisine göre belirlenecektir? İşte bu
belirsiz durum görüntüde bazı hatalara neden olabilmektedir. Örnekleme hatasından
kaynaklanan bu tür bozulmalara aliasing etkisi denir. Bu problemin çözümlenmesi için
gelişmiş ışın izleme uygulamalarında bir piksele 1’den fazla ışın yollanır. Supersampling adı
verilen yönteme göre bu ışınlar için hesaplanan renk değerlerinin ortalaması alınarak ilgili
pikselin rengi belirlenir.
Görünmeyen Yüzeylerin Kaldırılması
Işın izleme yöntemi görünmeyen yüzeyleri kaldırırken diğer yöntemlerden farklı bir yol
izler. Diğer yöntemler görünmeyen yüzeyleri kaldırırken poligonları esas alırlar. Nesneler çok
sayıda poligonlara parçalanır. Genelde kullanılan poligon türü üçgenlerdir. Görünmeyen
yüzeylerin kaldırılması poligonlar mertebesinde yapıldığından bu tür tekniklerle üretilen
görüntülerde poligonların kenarları belli olmaktadır. Bu hatayı gidermek için poligonların
piksellere sığacak kadar küçük seçilmesi gerekmektedir. 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.
Işın izleme yöntemi görünmeyen yüzeyleri kaldırırken piksel mertebesinde hassas
çalıştığından sanki yüzeyler piksel boyunda poligonlara bölünmüş gibi ele alınır. 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.
Böylece eğrisel yüzeylerde bile yüksel doğrulukta görüntüler elde edilir.
Işın izleme görünmeyen yüzeyleri kaldırmayı piksel mertebesinde gerçekler. Üstelik
bütün pikseller birbirinden bağımsız olarak işlenir. Bakış noktasından yollanan ve her bir
pikselden geçen ışınlar ile nesneleri oluşturan yüzeylerle kesişim testleri yapılır. Herhangi bir
pikselden geçen ışın doğrultusu boyunca 1’den fazla kesişim söz konusu ise hesaplanan t
uzaklık değerleri sıralanır. Nesnelerin geçirgenlik özellikleri de göz önüne alınarak en yakın
yüzey bakış noktasından görünen yüzeydir. Diğer yüzeyler görünmeyen yüzeylerdir ve
kaldırılır.
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
8
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.
Dikkat edilirse, Z Buffer yöntemi ve benzeri tüm diğer yöntemlerde kullanılan poligon
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 poligonların son derece küçük seçilerek bir piksel
boyutuna indirilmesi gerekir ki oldukça zor, hatta imkansız denilebilir.
Görünmeyen yüzeylerin kaldırılmasıyla ilgili bir konu da Arka Yüz Kaldırma (Backface
Culling) ‘dır. Herhangi bir bakış noktasından yollanan ışın doğrultusu boyunca kesişen
yüzeylerin bazıları bakış noktasına bakmayabilir. Normalde bakış noktasından görünmesi
imkansız olan yüzeyler için kesişim testi yapmak mantıksızdır. O nedenle kesişim testlerinin
başında arka yüzler belirlenir ve kaldırılır. Böylece kesişim testleri hızlandırılır.
Arka Yüzeylerin Kaldırılması (Backface Culling)
Görünmeyen yüzeylerle ilgili diğer bir konu da arka yüzeylerin kaldırılmasıdır. 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 asla görülemez. Bu yüzeylerin kaldırılması ışın izleme
yönteminin hızlanmasını sağlar. Bununla birlikte arka yüzeylerin kaldırılması ışın izleme
yöntemi ile çok kolay gerçekleştirilebilir.
Işın-Nesne Kesişim Testleri
Işın izlemenin en önemli aşaması ışın-nesne kesişim testleridir. Bu testlerde, kesişimi
araştırılacak cismin matematiksel denklemi ile ışının başlangıç noktası ve doğrultusunun
koordinatları kullanılır. Bakış noktasından belli bir doğru boyunca yollanan birincil ışının 3B
nesnelerden hangileriyle kesiştiği belirlenmelidir. Kesişim testleri sonucu kesişim noktasının
koordinatları ve kesişim noktasına uzaklık olan t değeri hesaplanır. Aynı doğrultu boyunca 1’
den fazla kesişim varsa görünmeyen yüzeyleri kaldırmak için t değerleri kullanılır. Aynı
doğrultuda birden fazla kesişim noktası bulunabilir. Bu durumda en küçük t değeri esas alınır.
Böylece görünmeyen yüzeyler kaldırılmış olur.
Işın izleme yöntemiyle görüntü üretiminde hesaplama süresinin çoğu kesişim testlerine
harcanmaktadır. O nedenle kesişim testlerinin hızlı yapılması gerekmektedir. Test süresini
azaltılmak için çeşitli algoritmalar geliştirilmiştir. Genellikle 3B nesneler üçgenlerden
oluşturulduğu için ışın-üçgen kesişimi için birçok algoritma geliştirilmiştir. Bu bölümde de
ağırlıklı olarak ışın-üçgen kesişim testleri anlatılacaktır.
Skaler Çarpım
İki vektörün skaler çarpım değeri karşılıklı olarak x, y ve z değerlerinin çarpımlarının
toplamına eşittir. Skaler çarpımı * sembolü ile temsil edilirse V1 ve V2 vektörlerinin skaler
çarpımı aşağıdaki gibi hesaplanır:
V1 * V2 = (V1X * V2X) + (V1Y * V2Y ) + (V1Z * V2Z)
V1 ve V2 vektörlerinin boyunun 1 birim olduğu, yani her iki vektörün de normalize
olduğu durumda, bu iki vektörün skaler çarpımı iki vektörün arasındaki açının kosinüs
9
değerini verir. İki vektör arasındaki açının kosinüsü difüz aydınlatmada kullanılır. Skaler
çarpım Şekil 2.6’te gösterilmiştir.
Şekil 2.6. Skaler çarpım
Vektörel Çarpım
Vektörel çarpım işlemini x sembolüyle temsil edersek V1 ve V2 vektörlerinin vektörel
çarpımı aşağıdaki gibi hesaplanır:
V1 x V2 = [ V1Y* V2Z - V1Z* V2Y V1Z* V2X - V1X* V2Z V1X* V2Y - V1Y* V2X ]
(2.6)
Vektörel çarpım, ışın izleme yönteminde üçgenlerin normalini bulmak için kullanılır.
Yansıyan veya kırılan ışınların yeni doğrultularının hesaplanması için yüzeye dik olan
vektörün, yani yüzey normalinin, bilinmesi gerekir.
Difüz ve speküler aydınlatma yapılırken de yüzey normali kullanılır. Ayrıca arka
yüzey kaldırmada da hangi yüzün arka yüzey olduğunu belirlerlerken yüzey normali esas
alınır. Bakış noktası ile arasında 90°’den daha büyük açı bulunan yüzeyler, arka yüzey kabul
edilir.
Tüm bu işlemlerde kullanılacak olan yüzey normalinin birim vektör olması, yeni
normalize olması, gerekir.
Köşe noktaları V0 ,V1 ve V2 olan üçgenin yüzey normalinin vektörel çarpımla
hesaplanışı Şekil 2.7’ da gösterilmiştir.
Şekil 2.7. Vektörel çarpım
Barisentrik Koordinatlar (Barycentric Coordinates)
Üçgenin bir köşesinden başlayarak kenarları belli katsayılarla çarpılıp vektörel olarak bu
köşeye eklendiğinde üçgen içinde istenilen noktaya gitmek mümkündür. Kenarları çarpmada
10
kullanılan katsayılara barisentrik koordinatlar denir. Üçgen içindeki herhangi bir noktanın
barisentrik koordinatlar cinsinden nasıl hesaplandığına dair vektörel ifade aşağıda verilmiştir .
t(u,v) = V + u(V -V ) + v(V -V )
0 1 0 2 0
Burada u ve v barisentrik koordinatlardır ve u ve v için u≥ 0, v 0, u+v ≥≤ 1 şartı
sağlanmalıdır.Yukarıdaki ifadeden anlaşılacağı gibi üçgenin V köşesinden başlanılarak
0
(V -V ) kenarı boyunca u kadar, (V -V ) kenarı boyunca da v kadar gidildiğinde yani V
1 0 2 0 0
vektörüne önce u(V -V ) sonra da v(V -V ) vektörü eklendiğinde üçgen içinde istenilen
1 0 2 0
herhangi bir noktaya gitmek mümkündür. Bu durum Şekil 2.8. ‘te vektörel olarak
gösterilmiştir.
Şekil 2.8. Barisentrik koordinatlar
Şekil 2.9. Barisentrik koordinatların değişimi
Işın-Yüzey Kesişim Testi
(0,0,0) noktasından uzaklığı D olan P = [ A B C ] normaline sahip bir P yüzeyinin
n
denklemi aşağıdaki gibi verilebilir:
Ax + By + Cz + D = 0 (1)
11
Şekil 2.10. Yüzey ifadesinin grafiksel gösterimi
Şekil 2.10.‘da yüzey ve onun normali gösterilmiştir. 3B uzayda bir yüzeyin
tanımlanabilmesi için o yüzeyin üzerindeki en az 3 noktanın bilinmesi gerekir. Öyleyse bir
üçgenin köşe noktaları biliniyorsa onun üzerinde oturduğu düzlemin denklemini belirlemek
mümkündür. Köşelerinin koordinatları V = (1,2,4), V = (3,3,4), V = (4,1,4) olan üçgenin
0 1 2
yüzey denkleminin nasıl hesaplandığı aşağıda gösterilmiştir:
Yüzey denkleminin hesaplanması (1) ‘de P yüzeyinin ifadesindeki A, B, C ve D
katsayılarının bulunmasından ibarettir. Yüzey denklemindeki A, B ve C katsayıları yüzey
normalinin x, y ve z ‘sidir. Üçgenin köşe noktaları kullanılarak yüzey normalini hesaplamak
mümkündür. Yüzey normali P = [A B C] ( V - V ) ile ( V – V ) ‘ın vektörlerinin vektörel
n 1 0 2 0
çarpımından P = [A B C] = [ 0 0 -5 ] olarak bulunur.
n
Üçgenin üç köşe noktası da yüzey denklemini sağlayacağından bunlardan V ’ ı
0
kullanarak D katsayısı aşağıdaki gibi hesaplanabilir:
0*1 + 0*2 + (-5)*4 + D = 0
D = 20
Sonuç olarak düzlem ifadesi -5z + 20 = 0 ya da z = 4 olarak bulunur.
Işın ifadesinin R = R + tR olduğu biliniyor. Eğer ışın yüzeyle kesişiyorsa kesişim
0 d
noktası için R ışınının x, y, z değerleri ile P yüzeyinin o noktadaki x, y, z değerleri aynı
olmalıdır. Buradan şöyle yazılabilir:
A( X + tX ) + B( Y + tY ) + C( Z + tZ ) + D = 0
0 d 0 d 0 d
İfade t ‘ye göre düzenlenirse başlangıç noktasıyla kesişim noktası arasındaki uzaklık
değeri olan t için aşağıdaki ifade elde edilmiş olur:
t = - ( AX + BY + CZ + D ) / (AX + BY + CZ )
0 0 0 d d d
t ‘nin vektörel gösterimi şöyledir:
t = -( P * R + D ) / ( P * R )
n 0 n d
P * R = 0 ise ışın yüzeye paraleldir.
n d
t 0 için kesişim vardır ve kesişim noktası R aşağıdaki gibi hesaplanır:
i
R = [ x y z ] = [ X + tX Y + tY Z + tZ ]
i i i i 0 d 0 d 0 d
12
Işın-yüzey kesişimi için sayısal bir örnek aşağıda verilmiştir:
Kesişim testi yapılacak yüzey P = [ 1 0 0 -7] olsun. ( x = 7 yüzeyi )
Işının başlangıç noktası R = [ 2 3 4 ] olsun.
0
Işının doğrultusu R = [ 0.577 0.577 0.577 ] olsun.
d
t = 5 / 0.577 = 8.66
t değeri 0 ‘dan büyük olduğu için kesişim vardır. Işının yüzey üzerindeki koordinatları
aşağıdaki gibi hesaplanır :
x = 2 + 0.577 * 8.66 = 7
i
y = 3 + 0.577 * 8.66 = 8
i
z = 4 + 0.577 * 8.66 = 9
i
R = [ 7 8 9 ] olarak bulunur.
i
Alan Hesabıyla Işın-Üçgen Kesişim Testi
Işın-Üçgen kesişim testleri içinde en basit yöntem alan testidir. Bu yönteme göre önce
ışın-yüzey kesişim testi yapılır. Ardından ışın ve yüzeyi oluşturan üçgenin köşe noktalarının
görüntü düzlemine perspektif izdüşümleri alınır. Yüzeyle kesişen ışının üçgenin içinde olup
olmadığının belirlenmesi için kesişim noktasıyla üçgenin köşelerinden ikişer tane alınarak 3
tane alt üçgen belirlenir ve bunların alanları hesaplanır. Hesaplanan bu alan değerleri toplanır.
Toplam alan değeri kesişim testi yapılan üçgenin alanına eşit oluyorsa ışın üçgenin içindedir.
Aksi halde dışındadır. Şekil 2.11. ‘de alan testinin nasıl yapıldığı gösterilmektedir.
Şekil 2.11. Alan testi
Açı Hesabı ile Işın -Üçgen Kesişim Testi
Işın düzlem kesişim testinden elde edilen kesişim noktasının üçgenin içerisinde olup
olmadığının kontrolü için kullanılan diğer bir yöntem de açı testidir. Yine ilk olarak ışın –
yüzey kesişim testi yapılmalıdır. Daha sonra ışın ve yüzeyi oluşturan üçgenini köşe noktaları
görüntü düzlemine perspektif olarak izdüşürülür. Kesişim noktası ile üçgenin ikişer noktası
sıra ile alınarak üç tane üçgen elde edilir. Bu üçgenlerin I noktasını merkez nokta kabul eden
açıları hesaplanarak toplanır. Elde edilen toplam açı 360° ise ışın üçgenin içindedir yani ışın
ile üçgen kesişmektedir denir. Şekil 2.12’de açı hesabı ile ışın – üçgen kesişim testinin nasıl
yapıldığı gösterilmiştir.
13
Şekil 2.12:Açı hesabı ile ışın üçgen kesişim testi
Işın izleme ile üretilmiş bir küre
14
Gölgeler (Shadows)
Bir yüzeye ışığın gelmesini engelleyen başka bir yüzey varsa, ışığın ulaşamadığı
yüzey gölgede kalmış olur.Yüzeyin gölgede olup olmadığını belirlemek için kesişim
noktasından ışık kaynağına gölge test etme ışını yollanır. Gölge testi için, kesişim noktasından
ışık kaynağına yollanan ışınlar ile diğer nesnelerin kesişimleri araştırılır. Eğer kesişim tespit
edilirse yüzey gölgelenir.
Gölge testi için yollanan ışın herhangi bir nesne ile kesiştiğinde bu nesnenin o yüzeyi
gölgede bırakabilmesi için nesnenin ışık kaynağı ile yüzey arasında olması gerekir. Yani
nesnenin yüzeye olan uzaklığının ışık kaynağının yüzeye olan uzaklığından küçük olması
gerekir.
Gölge testi için yollanın ışın klasik ışın izleme uygulamalarında her bir ışık kaynağına
birer tanedir. Bu durumda gölgelerin kenarlarında kırılmalar olabilmektedir. Gölgelerin
kenarlarını yumuşatmak için gelişmiş ışın izleme uygulamalarında yüzeyden ışık kaynağına
1’ den fazla ışın yollanır.
Gölgelemenin nasıl hesaplandığı Şekil 2.13’da gösterilmiştir.
Şekil 2.13. Gölgenin Oluşumu
Gölgelenmenin nasıl hesaplandığına dair başka bir şekil.
15
Işın izleme yöntemi kullanılarak elde edilen gölge örnekleri aşağıda sunulmuştur:
Tek yüzeyde oluşan gölge
Üç yüzeyde birden oluşan gölge
Aynasal Yansıma
Diğer yöntemlerde çok zor tanımlanmasına rağmen, ışın izleme yönteminde yansıyan
ve kırılan ışınlar mükemmel şekilde modellenebilir. Böylece son derece gerçekçi görüntüler
elde edilebilir.
Eğer bir yüzeyin yansıtıcılık özelliği varsa, bu yüzeye çarparak yansıyan ışın diğer bir
yüzeye çarptığında, bu yüzeyin rengi yansıtıcılık özelliği bulunan yüzey üzerinde görülür.
Elbette bu işlem için de derinliği belirlenmiş özyinelemeli bir algoritma koşulmalıdır.
16
Yansıma değerinin belirlenmesi oldukça kolay bir işlemdir. Gerekli olan bir nokta ve bir
doğrultudur. Nokta, ışın ile yansıtıcı yüzeyin kesişim noktasıdır ki artık yeni bir başlangıç
noktası olmuştur. Bu noktadan yansıyacak olan ışının doğrultusu , gelen ışının doğrultusuna
ve normale bağlıdır. Zira gelen ışın ile normal arasındaki açı, yansıyan ışın ile normal
arasındaki açıya eşit olmalıdır. N ilgili yüzeyin normali, I gelen ışının olmak üzere Rref
yansıma doğrultusu aşağıdaki gibi hesaplanır :
Rref = I – 2 ( I * N ) * N
Yansıma doğrultusunun hesaplanması Şekil 2.14’da gösterilmiştir
Şekil 2.14: Yansıyan ışının doğrultu vektörünün hesaplanması
Yansıma örneği için üretilen bir şekil
POV-Ray gibi ışın izleme programları ise simüle edilen bir kamera ile başlarlar ve ışık
ışınlarını sahneye yollarlar. Kullanıcı kameranın, ışık kaynaklarının, nesnelerin yerini ve
bunların yüzey özelliklerini belirler, eğer isterse sahneye sis, duman, ateş gibi atmosferik
etkiler de ekleyebilir.
Sonuç görüntüdeki her piksel için bir ya da daha çok ışın kameradan sahneye yöneltilir ve
sahnedeki bir nesne ile kesişip kesişmediğine bakılır. Kameradan çıkan bu ışının bir nesneyi
kestiği her noktadaki yüzey rengi hesaplanır. Bunun için ışınlar sahnedeki her ışık kaynağına
da yönlendirilir ve böylece kaynaklardan gelen ışık miktarı da hesaplanır. Benzer şekilde her
yüzey noktasının gölgede kalıp kalmadığı hesaplanır. Yüzeyin şeffaf olup olmamasına göre
de ne kadar ışığı geçirdiği ve ne kadar ışık kırılmasına yol açtığı da hesaplanarak nihai renk
belirlenir.
17
IŞIN İZLEME METODUNUN İYİLEŞTİRİLMESİ
Ö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.
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.
Ambient, diffuse ve specular bileşenler biraya getirilerek bir aydınlatma modeli ortaya
koyabiliriz. Aydınlatma modelini yerel aydınlatma modeli (local lighting model) diye
adlandırmak daha doğrudur. Çünkü burada yalnızca ışın kaynağından gelen ışınlar hesaba
katılmıştır. Farklı yüzeylerden yansıyan ışınların ektisini aydınlatma modeline katabilmek
için ambient bileşen kullanılmıştır. Sonuçta yerel aydınlatma modeli ifadesi aşağıdaki gibidir:
i =i +i +i
top amb dif spec
Gerçekte ışık nesneleri aralarındaki uzaklığın karesiyle ters orantılı olarak aydınlatır.
Ters orantılı katsayı d olmak üzere d ‘nin ifadesi aşağıdaki gibidir:
2
d = 1/ || s - p||
pos
Bu ifadede s ışık kaynağını yeri, p de aydınlatılacak noktadır. d katsayısı aydınlatma
pos
modeline eklendiğinde son hali aşağıdaki gibi olur.
i = i + d(i + i )
top amb dif spec
Aydınlatma modelinde kullanılan bileşenler Şekil 2.15. (a), (b), (c) ‘ de gösterilmiştir.
Şekil 2.15. (d) ‘de de bileşenlerin tamamı kullanılarak elde edilen görüntü verilmiştir.
18
Şekil 2.15. Aydınlatma modelinin bileşenleri
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 2.16’de gösterilmiştir.
19
Şekil 2.16. Foton Mapping
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.
20
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 (2)
2 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 2 ifadesi
aşağıdaki hale dönüşür :
x2 + y2 + z2 = 1 (3)
3 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 2.17’de gösterilmiştir.
Şekil 2.17. Rasgele doğrultular ile Rph’nin üretilmesi
21
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 2.18’te gösterilmiştir.
Şekil 2.18. Birim kürenin yarısı kullanılarak Rph’ın üretilmesi
Şekil 2.18’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 2.19’te
gösterilmiştir.
Şekil 2.18. Birim kürenin 1\4’ü kullanılarak Rph’ın üretilmesi
Şekil 2.18’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.
22
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 2.19’te gösterilmiştir.
Şekil 2.19. Kırpılmış birim küre
Şekil 2.19’tdaki 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ü.
23
Işın izleme yöntemine 5000 foton eklenerek elde edilen görüntü.
YAPILAN ÇALIŞMALAR
Çalışmalarda öncelikle ışın izleme yöntemiyle 3B görüntü üretimi gerçeklenmeye
çalışılmıştır. Çeşitli ışın-üçgen kesişim testleri denenmiştir. Görünmeyen yüzeylerin
kaldırılması yapılmıştır. Doku kaplama yapılmıştır. Doku kaplamada karşılaşılan aliasing
problemi supersampling yapılarak çözümlenmiştir. Piksel rengini belirlemede Phong
aydınlatma modeli kullanılmıştır. Buna göre her bir pikselin ambient, diffuse ve specular
bileşeni hesaplanmıştır.
Yansıyan ışınlar modellenmiş ve farklı derinlik değerleri için yansıma ile görünen
nesneler hatasız modellenmiştir. Ayrıca kırılma da fiziksel gerçeklere uygun bir şekilde
(kırılma indisleri de hesaba katılarak) modellenmiştir. Yansıyan ve kırılan ışınlar için ışın
izleme algoritması özyinelemeli olarak yansıma ve kırılma doğrultuları için yeniden
koşturmuştur. Bu yapısıyla algoritma genellik taşımaktadır.
Paralel programlamada Master-Slave yaklaşımı modellenmiştir. Ana bilgisayar (Master)
işi parçalara ayırıp diğer bilgisayarlara (Slave) yollamış ve onlardan gelen sonuçları bir araya
getirmiştir. Multithreaded programlama yapılmış ve buna göre ana bilgisayarda her bir
bilgisayar için bir thread başlatılmıştır. Paralel hesaplama yapılırken diğer bilgisayarlar
threadlerle kontrol edilmiştir. Networkteki bilgisayar sayısı arttırıldıkça speedupın da lineere
yakın oranda arttığı gözlemlenmiştir.
Özyinelemeli Işın İzleme Programının Tasarlanması
Özyinelemeli ışın izleme algoritması birincil ışınların üretilmesiyle başlar. Birincil ışınlar
bakış noktasından çıkan ve görüntü düzlemindeki piksellerin her birinden geçen ışınlardır.
Yollanan birincil ışınlar ile 3B nesneler arasında kesişim testleri yapılır ve kesişimler için t
uzaklık değerleri hesaplanır. Bu t değerleri sıralanarak en yakın kesişim bulunur. Böylece
görünmeyen yüzeylerin kaldırılması işlemi de yapılmış olur. En yakın nesnenin rengi
kullanılarak birincil ışının geçtiği pikselin rengi için aydınlatma modelinin ambient, diffuse ve
24
specular bileşenleri hesaplanır. Bu nesne ışığı yansıtan veya kıran özelliğe sahip ise yansıma
veya kırılma doğrultuları hesaplanır ve birincil ışınlar için yapılan işlemler özyinelemeli
(recursive) olarak tekrarlanır. Birincil ışınlar, yansıyan veya kırılan ışınlar için bulunan renk
değerleri, toplamları 1 olan katsayılarla çarpılarak genel aydınlatma modeli ile pikselin gerçek
rengi belirlenir. Böylece piksel üzerinde yalnızca birincil ışının ilk çarptığı yüzeyin değil aynı
zamanda yansıyarak veya kırılarak da çarptığı yüzeylerin renkleri de görünür.
Birincil Işınların Üretilmesi, Kesişim Testleri ve Gölge Testi
Birincil ışınların üretilmesi için başlangıç noktasının ve görüntü düzleminde geçtiği
pikselin koordinatlarının bilinmesi yeterlidir. Yapılan çalışmalarda genellikle başlangıç
noktası (0,0,0) olarak alınmıştır. Görüntü düzlemi 10x10 birim alınmıştır. Bakış noktasının
görüntü düzleminin merkezine dik olarak 12 birim geride olduğu başka bir deyişle görüntü
düzleminin merkezinin koordinatlarının (0,0,12) olduğu varsayılmıştır. Burada neden 11 veya
13 değil de 12 diye bir soru akla gelebilir. 12 rakamının seçilmesinin özel bir nedeni vardır.
Fiziksel olarak gözün görüş açısı φ aşağıdaki ifade ile hesaplanır [1]:
φ = 2arctan(w/2d)
Bu ifadede w nesnenin görüş doğrultusuna dik genişliği, d ise nesnenin uzaklığıdır.
36mm görüntü genişliğine (frame size) ve 50mm lens uzaklığına sahşp kamera için bu açı φ =
2arctan(36/(2*50)) = 39.6 derece olmaktadır. Üretilen görüntüler için görüntü düzlemi 10x10
birim alındığında yani w=10 olduğunda 39.6 derecelik görüş açısı elde edebilmek için
görüntü düzleminin bakış noktasından yaklaşık 12 birim ileride olması gerekmektedir.
Üretilecek görüntünün çözünürliğü 400x400 olduğunda piksel koordinatları (10*X/400 -
5, 5 – 10*Y/400, 12 ) ifadesiyle hesaplanır.
Birincil ışının üretilmesi onun doğrultusunu belirlemek demektir. Bunun için piksel
koordinatlarından bakış noktasının koordinatlarının farkı alınır ve bu fark vektörü normalize
edilir. Birincil ışınların doğrultuları belirlenince sıra kesişim testlerine gelir. Burada öncelikle
ışın-üçgen kesişim testi ile üretilen görüntüler verilecektir.
Işın-üçgen kesişim testlerinde 3 yöntem kullanılmıştır. Bunlar:
1. Alan Hesabı.
2. Jordan Curve Teoremi.
3. Möller’in Yöntemi.
Bu üç yöntem ile Şekil 2.20. ‘deki 400x400 çözünürlükte görüntü için hesaplama
zamanları Tablo 2.1. ‘de verilmiştir.
Şekil 2.20. Işın-üçgen kesişim testlerini test için üretilen görüntü
25
Tablo 2.1. Testlerdeki hesaplama süreleri
Poligon Işık kaynağı Möllerin Jordan Alan
sayısı sayısı Yöntemi Curve T. Hesabı
112 1 73.09 sn. 119.2 sn. 131.77 sn.
Şekil 2.1 ‘ deki görüntüye dikkat edilirse masa, monitor ve kasanın gölgelerinin de
doğru olarak üretildiği görülür. Herhangi bir yüzeyin gölge kalıp kalmadığının belirlenmesi
için yüzeyden ışık kaynağına gölge test etme ışınları yollanmıştır. Eğer bu ışın ışık kaynağına
ulaşmadan başka bir nesneye çarpıyor ve bu nesne ile yüzey arasındaki uzaklık yüzey ile ışık
kaynağındaki uzaklıktan küçükse yüzey bu nesnenin gölgesinde kalıyor demektir. Aydınlatma
modelinin diffuse ve specular bileşenleri hesaplanırken öncelikle gölge testi yapılır. Eğer
nesne gölgede kalıyor ise bu bileşen değerleri sıfır olur. Böylece gölgede kalan yüzey için
yalnızca ambient bileşen hesaba katılır.
1 ‘den fazla ışık kaynağı kullanıldığında değişik tonlarda gölgeler elde edilir. Şekil 2.2.
‘de 3 tane ışık kaynağının aydınlattığı kürenin değişik tonlardaki gölgeleri görülmektedir.
Şekil 2.21 Farklı gölgeler (3 ışık kaynağı için) Şekil 2.22. Gölge modeli
Şekil 2.21. ‘de kullanılan ışık kaynakları noktasal olduğu için keskin gölgeler (hard
shadows) elde edilmiştir. Bu durumda gölge Şekil 2.22 ‘de ‘1’ ile gösterilen alan gibi olur.
Poligonal ışık kaynağı kullanıldığında ise gölgelerin ortası koyu kenarları ise açık renkte olur.
Bu durumda gölge Şekil 2.22 ‘de ‘2’ ile gösterilen alan gibi olur. Doğru gölgeler poligonal
ışık kaynağı kullanıldığında elde edilir. Eğer noktasal ışık kaynağı kullanılmışsa poligonal
ışık kaynağındaki gibi yumuşak gölgeler (soft shadows) elde etmek için noktasal ışık kaynağı
poligonal ışık kaynağının köşeleri üzerinde gezdirilir ve köşeler için üretilen renk değerlerinin
ortalaması alınır. Böylece yumuşak gölgeler elde edilir. Şekil 2.23 ‘de noktasal ışık
kaynağıyla elde edilen görüntü, ardından Şekil 2.24 ‘de ise anlatılan teknikle gölgelerin
yumuşatılmış hali görülmektedir.
26
Şekil 2.23. Keskin gölge (hard shadow) Şekil 2.24. Yumuşak gölge (soft shadow)
Yansıma ve Kırılma ile Görünen Nesnelerin Modellenmesi
Yansıtıcı özelliğe sahip yüzeylerde yansıma ile görünen nesneleri belirlemek için
yansıma doğrusu hesaplanır. Işın yeni doğrultu boyunca ilerlerken çarptığı ilk yüzeyin
görüntüsü yansıdığı yüzeyde görünür. Eğer yansıyan ışın yine yansıtıcı özelliğe sahip bir
nesneye çarparsa yeniden yansıma doğrultusu hesaplanır ve aynı işlemler yapılır.
Çalışmalarda geliştirilen recursive kod sayesinde istenilen sayıda yansıma sonucu görünen
nesnenin görüntüsü birincisinde görülebilmektedir. Şekil 2.25., Şekil 2.26. ve Şekil 2.27. ’de
farklı derinlik değerleri için yansımalar gösterilmiştir.
Şekil 2.25. Yansıma, derinlik=1
27
Şekil 2.26. Yansıma, derinlik=2
Şekil 2.27. Yansıma, derinlik=3
Kırılmada da yansımada olduğu gibi kırılma doğrultusu hesaplanır ve ışın yeni doğrultu
boyunca yollandığında ilk çarptığı nesnenin görüntüsü birincisinde görünür. Eğer nesne cam
gibi ışığı kırmadan iletiyorsa yeni doğrultu hesaplamaya gerek yoktur. Şekil 2.28. ’da ışını
kırmadan ileten saydam bir küre verilmiştir. Şekil 2.29. ve Şekil 2.30. ’de sırasıyla ışını
kırmadan ileten ve n=n /n = 1/1.33 (n’ler kırılma indisleri) oranında kıran yüzey verilmiştir.
1 2
28
Şekil 2.28. Saydam küre
Şekil 2.29. Saydam yüzey
Şekil 2.30. Kırılgan yüzey, n =1.0, n =1.33
1 2
Özyinelemeli Işın İzleme Programının Akış Diyagramı
Özyinelemeli ışın izleme programının akış diyagramı Şekil 2.31. ‘de verilmiştir.
Üretilecek görüntüyü oluşturan nesnelerin üçgenlerden oluştuğu varsayılmıştır. Akış
diyagramından da görüldüğü gibi ilk adım piksel koordinatlarının bulunmasıdır. Bu
koordinatlar ve başlangıç noktasının koordinatları kullanılarak birincil ışınların doğrultusu
belirlenir. Başlangıç noktası ve doğrultusu belirlenmiş ışın ile görüntüyü oluşturacak üçgenler
arasında kesişim testleri yapılır. Bulunan t uzaklık değerleri sıralanarak en yakın kesişim
noktası bulunur. En yakın üçgen için aydınlatma modelinin bileşenleri hesaplanır. Eğer üçgen
ışını yansıtıcı ve kırıcı özelliğe sahipse yansıma ve kırılma doğrultuları hesaplanır ve birincil
ışınlar için yapılan işlemler tekrarlanır.
29
Şekil 2.31. Özyinelemeli ışın izleme programının akış diyagramı
30
IŞIN İZLEMEDE KULLANILAN UYGULAMALAR
POV-Ray Tanıtımı
FZ, Pazartesi, 10 Şubat 2003 (22:00 TSI) (786 okuma)
Amiga zamanlarından bu yana, bilgisayar destekli modelleme alanında birçok
programlar geldi geçti. Imagine'dı, Lighwave'di, Real 3D'di, 3D Max'di, Blender'dı derken bu
alanda birbiri ile kapışan oldukça fazla program var. Fakat bunlardan bir tanesi, gerek
arkasındaki düşünce, gerekse başarıları ile diğerlerinden çok daha farklı bir yerde.
POV-Ray Nedir?
"Tanrı'nın hangi ışın izleyiciyi kullandığını merak etmeye başladı iseniz... Uzun zamandır ışın
izleyicilerle uğraşıyorsunuz demektir." David Kraics
POV-Ray (The Persistence of Vision Ray-Tracer), ışın izleme (ray tracing) yöntemi
kullanarak üç boyutlu, foto gerçekçi görüntüler oluşturmanızı sağlayan bir yazılımdır.
Program, sahnedeki nesneler, ışıklar ve kamera ile ilgili bilgilerin bulunduğu bir metin
dosyasını okur ve bu bilgilere göre bir görüntü üretir. Işın izleme yöntemi sayısal görüntü
oluşturmak için hızlı bir yöntem değildir ancak çok kaliteli sonuçlar, gerçekçi yansımalar,
gölgeler, perspektif ve diğer etkiler yüzünden tercih edilir. POV-Ray dünyadaki en popüler
ışın izleme yazılımıdır (raytracer). Ücretsiz olarak dağıtılıyor olması bunda etkili olmuştur
ancak bu yazılımın teknik yetkinliği esas sebeptir. Başka pek çok bedelsiz ışın izleyici de
mevcut iken POV-Ray'in bu kadar popüler olmasının sebebi nedir? Pek çok sebep sayılabilir
ancak kısaca söylemek gerekirse: Bu yazılım hem başlangıç seviyesindeki meraklıları
ürkütmeyecek kadar dengeli tasarlanmıştır hem de grafik profesyonellerinin had safhada
faydalanabilecekleri detaya, güce ve çokyönlülüğe sahiptir. Elbette en nihayetinde önemli
olan sonuçtur ve POV-Ray ile üretilen görüntülerin kalitesi epey yüksek olabilmektedir. Usta
tasarımcıların ürettikleri bazı görüntülerin fotoğraf mı yoksa bilgisayarda üretilmiş sayısal bir
imaj olup olmadığını ayırt edebilmek kişiyi zorlayabilir. Programın bu kadar
yaygınlaşmasının bir başka sebebi ise akla gelen hemen her işletim sistemi üzerinde
çalışabilmesidir: GNU/Linux, Mac OS, her türlü UNIX, MS Windows NT, Windows 2000,
vs.
POV-Ray Ne Değildir?
POV-Ray bir modelleyici değildir. Yani sahnelerinizi görsel bir arabirim ve fare ile sürükle-
bırak yöntemi ile tasarlamanızı sağlamaz. Bu iş için hazırlanmış pek çok paralı ya da bedava
modelleyici yazılım mevcuttur ve bunlarla oluşturulan sahneler POV-Ray metin dosyası
olarak kaydedilebilir. POV-Ray sahneleri oluşturmak için tek yapmanız gereken bir metin
editörüdür (tercihan VIM).
Bu yöntemi ilk kez duyan kullanıcılar "ne kadar da ilkel!" diye düşünebilirler ancak POV-
Ray'e gücünü ve esnekliğini veren şeyin tam da bu olduğunu fark ettiklerinde epey
şaşıracaklardır (deneyimli GNU/Linux kullanıcılarının yüzündeki gülümsemenin farkındayım
;-). İşaretle-ve-tıkla yöntemi ile görüntü oluşturmanıza izin veren pek çok yazılım vardır
ancak iş oluşacak nihai görüntü ile ilgili hassas ayarlara geldi mi metin tabanlı bir "sahne
tanımlama dili" (scene description language - sdl) yönteminin üzerine yoktur.
31
Işın İzleme Nedir?
Işın izleme, 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. Ancak bu yöntemde işlemler
gerçek dünyadaki 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 lensine ç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.
POV-Ray gibi ışın izleme programları ise simüle edilen bir kamera ile başlarlar ve ışık
ışınlarını sahneye yollarlar. Kullanıcı kameranın, ışık kaynaklarının, nesnelerin yerini ve
bunların yüzey özelliklerini belirler, eğer isterse sahneye sis, duman, ateş gibi atmosferik
etkiler de ekleyebilir.
Sonuç görüntüdeki her piksel için bir ya da daha çok ışın kameradan sahneye yöneltilir ve
sahnedeki bir nesne ile kesişip kesişmediğine bakılır. Kameradan çıkan bu ışının bir nesneyi
kestiği her noktadaki yüzey rengi hesaplanır. Bunun için ışınlar sahnedeki her ışık kaynağına
da yönlendirilir ve böylece kaynaklardan gelen ışık miktarı da hesaplanır. Benzer şekilde her
yüzey noktasının gölgede kalıp kalmadığı hesaplanır. Yüzeyin şeffaf olup olmamasına göre
de ne kadar ışığı geçirdiği ve ne kadar ışık kırılmasına yol açtığı da hesaplanarak nihai renk
belirlenir.
POV-Ray'in Özellikleri (Kısaca)
Kolay bir sahne tanımlama dili.
Yüzlerce örnek sahne dosyası.
Öntanımlı pek çok şeklin, rengin ve kaplamanın (texture) bulunduğu hazır "include"
dosyaları.
Çok yüksek kaliteli görüntü (48-bitlik renge kadar çıkabilir).
Düzgün yükseklik alanları ile manzara oluşturabilme.
Perspektif, ortografik, balıkgözü ve daha pek çok kamera çeşidi.
Spot ışıkları, silindirik ışıklar, alan ışıkları.
Daha gerçekçi yüzeyler için Phong ve "specular" ışıklandırma.
Sis, gökkuşağı, değişik gökyüzü koşulları gibi atmosferik etkiler.
Bulut, toz, ateş, buhar gibi etkiler oluşturabilmek için parçacık sistemler i.
Targa, BMP, PNG, PPM gibi pek çok formatta çıktı üretme yeteneği.
Küre, kutu, kuadrikler, silindir, koni, üçgen, düzlem gibi temel şekiller.
Torus (simit), bezier eğrileri, yükseklik alanları (dağlar), kuartikler, yazı,
süperkuadrikler, dönel yüzeyler, prizmalar, poligonlar, fraktaller, izoyüzeyler ve
parametrik yüzeyler gibi ileri seviyeli şekiller.
Bütün bu şekiller Yapısal Katı Geometri (Constructive Solid Geometry - CSG)
kuralları kullanılarak birleştirilebilir ve çok daha karmaşık ve detaylı şekiller
oluşturulabilir. POV-Ray birleşim, kesişim ve fark işlemlerini destekler.
Nesneler pek çok hazır malzeme ile (krom, gümüş, altın, ahşap, vs.) kaplanabilir.
Nesnelerin şeffaflıkları ayarlanabilir. Nesnelerin üzerine başka görüntüler değişik
şekillerde yayılabilir (söz gelimi fotoğrafınızı bir küre üzerine basabilirsiniz).
Görüntü oluşturulurken oluştuğu kadarını ekranda izleyebilirsiniz.
Görüntü oluşturma işlemi (rendering) yarıyolda kesilebilir ve daha sonra kaldığı
yerden devam ettirilebilir.
32
POV-Ray Kurulumu
Buraya kadar sabreden okuyucuya teşekkürler! Sıra geldi bu güzel yazılımı kurmak için
yapacaklarımıza.
Eğer siz de benim gibi bir Debian GNU/Linux kullanıcısı iseniz:
apt-get install povray
komutu ile sisteminize povray paketini kurabilirsiniz. Elimdeki 7 CD'lik Debian GNU/Linux
setinde POV-Ray paketinin 3.1 sürümü vardı ancak ben bu yazılımın son sürümü olan 3.5
sürümünü istediğim için ftp://ftp.povray.org /pub/povray/Official/Linux/povlinux.tgz
adresinden yaklaşık 6.5 MB büyüklüğündeki povlinux.tgz dosyasını çektim ve:
tar zxvf povlinux.tgz
komutu ile açtım. Hemen ardından, bulunduğum yerde oluşan povray-3.5 dizinine girip:
./install
komutu ile yazılımı kurdum. Yazılım önceden derlenmiş olarak geldiği için yukarıdaki
komutun yaptığı tek şey ilgili dosyaları gerekli yerlere kopyalamaktan ibaretti. Son anlattığım
kurulum yöntemi Debian dışındaki diğer tüm Linux dağıtımları için de geçerlidir.
Grafik Üretme Zamanı!
POV-Ray'i kurduk... mu acaba? Her şeyin yolunda olup olmadığını anlamanın basit ve
eğlenceli bir yolu var. Bir POV-Ray dosyası oluşturup bunu POV-Ray'e verip uygun görüntü
dosyasını oluşturmasını istemek.
Hemen en sevdiğimiz metin editörü ile (benimkinin VIM olduğunu söylemiş miydim?) ile
basit1.pov isimli bir metin dosyası yaratalım ve içine şunları yazalım:
#include "colors.inc"
background { color Cyan }
camera {
location
look_at
}
sphere {
, 2
texture {
pigment { color Yellow }
}
}
light_source { color White}
33
Dosyayı kaydedip editörden çıkalım. Şimdi sıra işlenmek üzere bu dosyayı POV-Ray'e
vermeye geldi. Bunun için verilmesi gereken komut da gayet basit:
povray +Ibasit1.pov
Burada dikkat edilmesi gereken en önemli şey +I(nput) parametresi ile dosya ismi arasında
boşluk bulunmadığıdır. Eğer boşluk bırakırsanız POV-Ray rahatsızlığını belirten hata
mesajlarını ekrana basmakta tereddüt etmeyecektir.
Yukarıdaki komutu verdiğiniz anda POV-Ray devreye girer ve basit1.pov dosyasını okuyup
gerekli görüntüyü oluşturmaya başlar ve bu esnada siz adım adım oluşan görüntüyü ekrandaki
bir pencerede izleme imkanına sahip olursunuz. Görüntü oluşturma işlemi biter bitmez
görüntü penceresi de birdenbire ekrandan kaybolur ve siz de komut penceresinde
oluşturulmuş görüntüye dair bir yığın istatistiksel bilgi ile başbaşa kalırsınız. Peki ya görüntü
nereye gitti? Üretilen görüntü aksi belirtilmediği sürece .pov uzantılı dosya ile aynı isme sahip
ve .png (portable network graphics) uzantılı bir grafik dosyasına yazılır. Görüntü üretme
işleminden sonra bulunduğunuz dizindeki dosyaları listelerseniz basit1.png isimli yeni
oluşturulmuş bir grafik dosyasını görebilirsiniz. Sisteminizdeki grafik işleme programları ile
(tercihan GIMP) bu dosya üzerinde istediğiniz gibi oynayabilirsiniz.
Yukarıdaki basit örnekte elde ettiğimiz görüntü tek renkli bir fon üzerinde bize bakan şirin bir
küredir. Biraz daha ileri seviyeli ve yazı da içeren bir örneğe bakabiliriz:
#include "colors.inc"
#include "stones.inc"
background { color rgb 1 }
camera {
location
look_at 0
angle 25
}
light_source { White }
box {
,
texture { T_Stone10 }
}
text {
ttf "timrom.ttf" "fazlamesai.net" 0.15, 0
pigment { BrightGold }
finish { reflection .25 specular 1 }
translate -3*x
}
difference {
box {
,
texture { T_Stone10 }
34
}
text {
ttf "timrom.ttf" "fazlamesai.net" 0.15, 0
pigment { BrightGold }
finish { reflection .25 specular 1 }
translate -3*x
}
}
Yukarıdaki dosyayı da ilk örnektekine benzer şekilde POV-Ray'e verirsek böyle bir görüntü
elde ederiz. Başlangıç için fena sayılmaz öyle değil mi?
Bundan Sonra Yapılması Gerekenler
Hepsi bu kadar mı? Bu kadar övgüye layık görülen ve deniz derya diye nitelendirebileceğimiz
POV-Ray yazılımı ile yapabileceklerimiz, üretebileceğimiz grafikler elbette yukarıda
anlatılanlardan ibaret değil.
Burada söz konusu olan çok kaliteli animasyonlar üretebileceğiniz, kendi SDL dili ile bir
mini-ışınizleyici yazabileceğiniz (hayır abartmıyorum! Bir nevi C dili ile C derleyicisi
yazmak gibi bir şey söz konusu. SDL dilinin ne kadar esnek ve güçlü olduğunu gösteren
örneklerden biri) ve daha pek çok şey gerçekleştirebileceğiniz bir yazılım söz konusu.
POV-Ray ile üretilen fantastik görüntülere bu adresten ulaşabilirsin iz.
Şimdiye dek yapmaya çalıştığım 10 yıldır geliştirilen bu yazılımla ilgili kısaca bilgi vermek
ve birkaç küçük örnek sergilemek idi. Yazılım ile birlikte gelen mükemmel belgeleri okuyup
kısa sürede pek çok şey öğrenmeniz mümkün. Yine de fotogerçekçi grafik üretmenin ayrı bir
uzmanlık alanı olduğunu ve süreç içinde yoğun çalışma ile edinilecek bir tecrübeyi
gerektirdiğini aklınızdan çıkarmayın. Ustalık araçtan değil kullanan insandan gelir.
35
Lightscape R3.2
Gerçekçi aydınlatma hesaplarına ve görselleştirme çalışmalarına yeni bir boyut
getiriyor.
Lightscape R3.2, mimarlar, dekorasyon işleriyle uğraşanlar, aydınlatma tasarımcıları ve
bilgisayarla gerçekçi kaplamalar ya da gerçekliği hayli yüksek sanal nesneler ya da ortamlar
üretmek isteyen oyun, multimedya ve web tasarımcıları için geliştirilmiş bir uygulamadır.
Çok gelişmiş bir görselleştirme, aydınlatma ve kaplama (rendering) yazılımıdır. "Radiosity"
metodunu, "ray tracing" ve fiziksel temelli aydınlatma ile birleştirerek kaplama yapar.
Ligthscape ile tasarım sürecini hızlandıran sanal prototiplerin, gerçek malzemeleri ve
aydınlatmaları ile nasıl görüneceğini önceden belirleyebilirsiniz. Lightscape bir modelleme
yazılımı değildir, ancak yüzey düzenleme araçlarına sahiptir. Lightscape ile yapılan
görselleştirme sayesinde projenin gerçek dünyada uygulanacak ışıklandırma yöntemi önceden
belirlenebilir ya da bilgisayar ortamında gerçekçi mekanlar oluşturulabilir, canlandırmalar
yaratılabilir.
Ürünün en önemli özelliği tasarımcıya bina içinde kesin olan aydınlatma koşullarını
görselleştirme olanağı tanıması ve gerektiğinde dışarıdaki pasif aydınlatmanın etkilerini de bu
görselleştirmeye katmasıdır.
Işıklandırma bir ortamın karamsar, aydınlık, neşeli veya dramatik bir havaya bürünmesinde
önemli bir görev üstlendiği için Lightscape gerçeği gibi davranan birçok aydınlatma
elemanını tasarımcının seçimine sunar. Var olan ışık renkleri arasında gün ışığı, halojen,
kuartz, akkor telli, xenon, cıva buharlı, yüksek ve düşük sodyum buharlı ve birçok farklı tipte
floresan bulmak mümkündür. Lightscape, parametrik değerlerle ışığın karakterini belirlemede
kullanıcıya önemli bir kontrol sağlar. Tasarımcı istediğinde ışık kaynağının fiziksel
parametrelerini değiştirebilir ya da farklı bir ışık kaynağı da yaratabilir.
Fotometrik analiz yapılır
36
Lightscape modelin aydınlatma hesabını yaparken model yavaş yavaş aydınlanmaya başlar.
Lightscape modelin geometrisini ve enerji dağılımını iki ayrı dosyada saklar. Hesaplanan
enerji dağılımı ekranda kaplanan (render) bir görüntüye benzer ancak buradaki süreç
kaplamadaki süreçten farklı olarak istendiğinde durdurulabilir ve malzemeleri, aydınlanma
değerleri yüzeyleri üzerinde beliren modelin içinde, gerçek zamanlı olarak dolaşılabilir. Bu
etkileşim odaların etrafında dolaşmak ve her yöne bakmak isteyen tasarımcı için sıra dışı bir
deneyim sunar: Tasarımcı aydınlanmanın ve seçilen ışığın değerlerinin mekanı nasıl
değiştirdiğini anında görebilir.
Yine bu süreçte ışık kaynaklarının değerleri kontrol edilebilir ve değiştirilebilir. Lightscape
mekan içindeki aydınlanma değerlerini bir resim olarak hazırlarken ışık analizinin yapılması
için de araçlar sağlar. Çizgisel ya da logaritmik bir skala üzerinde mekanın tamamının
aydınlanma değerleri sorgulanabildiği gibi noktasal ölçümler de yapılabilir.
Malzemeler değiştirilir ve gün ışığı eklenir
Enerji dağılımının hesaplandığı dosya herhangi bir anda saklanabilir ve enerji dağılımı süreci
daha sonra da kaldığı yerden devam ettirilebilir.
Autodesk ürünleriyle veri paylaşımı
Lightscape ile AutoCAD 2000, 3D Studio VIZ ya da 3D Studio MAX ortamında hazırlanmış
modeller, istenilen şekilde aydınlatılarak ve malzeme tanımlanarak mekan içinde hedeflenen
havanın yakalanması sağlanır. AutoCAD 2000, 3D Studio VIZ ve 3D Studio MAX ile
sağlanan veri paylaşımı sayesinde Lightscape, bu yazılımlar ile modellenmiş sahneleri gerçek
dünya değerlerine sahip ışıklar ile aydınlatarak, foto gerçekçi kaplamalar oluşturabiliyor.
Aydınlatma sonrası oluşan enerji dağılımı (solution) dosyası başka görsel efektler kullanmak
için tekrar 3D Studio VIZ ya da 3D Studio MAX ortamına çağırılabiliyor.
37
Lightscape'in farkı
"Radiosity": Lightscape'i diğer görselleştirme sistemlerinden ayıran özelliği bilgisayarda
hazırlanan modelde gerçek aydınlatma benzetimi için "Radiosity" tekniğini kullanmasıdır.
"Radiosity", bir ortamdaki yüzeylerin yayılan (diffuse) ışığı emmelerinin ve aralarında
yansıtmalarının hesabı üzerine kurulu bir işlemdir. Doğrudan olmayan aydınlanma (ışığın
diğer yüzeylerden yansıması), yüzeyler arasında renk geçişleri ve yumuşak gölgeler gibi
önemli aydınlatma efektleri elde edilir. Geleneksel kaplama yöntemleri ile elde edilemeyecek
bu sonuçlar, fotoğraf gerçekliğinde kalitenin de nedenidir. Görüntülerin piksel bazında
üretildiği geleneksel kaplama yazılımlarından farklı olarak, bu teknikte aydınlatma bilgisi
önceden hesaplanıp 3D yüzeyin bir parçası olarak saklanır.
"Ray trace": Lightscape diğer "radiosity" tabanlı yazılımlardan da ışın izleme (Ray tracing)
tekniğiyle parlama, yansıma ve gölgeleri de sahnenize ekleme olanağı tanıması özelliği ile
ayrılır.
"Radiosity" yayılan ışık efektlerini hesaplarken, ışın izleme teknolojisiyle de "specular"
aydınlatma efektlerini ekler (parlak yüzeyler, yansımalar gibi). Işın izleme tekniğinde,
kaynağından çıkan ışınlar sahne içinde takip edilir. Bu yöntem ile ışık sahne içindeki
nesnelerin malzemelerine göre nesnelerden yansır veya kırınıma uğrar. Lightscape'de
38
aydınlatma efektleri "radiosity" işlemi sırasında önceden hesaplandığından, ışın izleme
kaplaması diğer yazılımlara göre çok daha hızlı yapılır.
Lightscape R3.2 ile gelen yeniliklerden bazıları
Lightscape, AutoCAD (AutoCAD 2000 dahil) ile oluşturulan "dwg, dxf, 3ds"
dosyalarını okuma özelliğine sahip.
3D Studio VIZ ve 3D Studio MAX için hazırlanmış yeni bir eklenti (Plug-In) ile bu
ortamlarda hazırlanmış modeller Lightscape içinde kullanılabiliyor ve Lightscape'te
yaratılan enerji dağılımı 3D Studio VIZ ve 3D Studio MAX ortamına geri
çağırılabiliyor. Kullanıcı istekleri doğrultusunda 100'ün üzerinde arayüz gelişmesi ile
yenilenen çalışma akışında, malzeme görüntüleme, nesneleri ve ışıkları düzenlemeyi
kolaylaştıran yeni araçlar sunuluyor.
Geçmişte ayrı olarak satılan yardımcı eklentiler artık Lightscape R3.2 ile standart
olarak geliyor. Bunların arasında ağ üzerinde kaplama desteği, üretici şirketlerden
sağlanan malzeme kütüphaneleri ve aydınlatma elemanları kütüphanesi bulunuyor.
Yazılımla birlikte gelen geliştirilmiş kullanıcı kılavuzu ve eğitim kitabı Lightscape'i
kolay öğrenilebilir kılıyor. Eğitim kitabı içinde yer alan çalışmalar kullanıcıyı
yazılımın tüm önemli bölümleriyle tanıştırıyor.
Lightscape Türkiye'de SAYISAL GRAFİK tarafından Discreet ve AEC Yetkili Satıcıları
aracılığıyla satılıyor.
39
KAYNAKLAR
http://tr.wikipedia.org/wiki/I%C5%9F%C4%B1n_izleme
http://tr.wikipedia.org/wiki/I%C5%9F%C4%B1n_%C4%B0zleme_Metodunun_%C4%B0yil
e%C5%9Ftirilmesi
http://www.infoturkish.com/index.php/I%C5%9F%C4%B1n_izleme
http://ceng.ktu.edu.tr/~cakir/download/ETKILESIMLI_ISIN_IZLEME.pdf
http://www.fazlamesai.net/index.php?a=article&sid=1296
http://www.sanalgazete.com.tr/gazete/vol05no01/s15/m01.htm
http://www.grafiksistemler.com.tr/links/LightScape.htm
http://ceng.ktu.edu.tr/~cakir/download/Tez2004.pdf
40