POV-Ray
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 KraicsPOV-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üşünebilirlerancak 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.
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.
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 <0, 2, -3> look_at <0, 1, 2> } sphere { <0, 1, 2>, 2 texture { pigment { color Yellow } } } light_source { <2, 4, -3> color White}
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 <-8, 5, -15> look_at 0 angle 25 } light_source { <500,500,-1000> White } box { <-3.5, -1, 0.1>, <3.5, 1, 1> texture { T_Stone10 } } text { ttf "timrom.ttf" "fazlamesai.net" 0.15, 0 pigment { BrightGold } finish { reflection .25 specular 1 } translate -3*x } difference { box { <-3.5, -1, 0.1>, <3.5, 1, 1> texture { T_Stone10 } } 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.
Yazı ile ilgili olumlu/olumsuz her türlü eleştirinizi buraya yazabilirsiniz.
Not 1: 1997 yılında İTÜ Fen Edebiyat Fakültesi Matematik Mühendisliği bölümünde verdiği derslerden birinde beni ve arkadaşlarımı POV-Ray'den haberdar eden ve sınırlarımızı zorlamamız için bizi cesaretlendiren Prof. Dr. Metin Demiralp olmasa idi bu yazı da olmazdı, kendisine burada teşekkürlerimi iletiyorum.
Not 2: Bu yazının orjinali ileriseviye.org sitesinde yayınlanmıştır.