Bu yazı ile Povray ışınizleyicisi hakkında bir
yazı dizisine başlanmaktadır. Bu yazının amacı POV-Ray'e başlayacak
yeni kullanıcılara yardım etmektir.
Persistence of Vision Ray-Tracer (POV-Ray)
Copyright 1996 POV-Team.
Giriş.
Povray (Persistence of Vision Raytracer) temel olarak bir
ışınizleyicidir. Bu terimin anlamını bir takım ayrıntılara girmeden
açıklamak zordur, bu yızden bunu ayrıntılı olarak açıklamayı
ilerideki bir yazıya bırakalım. Bu an kabataslak olarak ışınizleyici
dışıncesinin ne olduğunu anlatmak için; nesnelerin ve onların şekillerinin,
ışık kaynaklarının, noktaların ve bir kameranın varlığının belirtimini
yapan modelleri kullanarak bilgisayarda tanımlanmış sanal görüntülerin
oluşturulmasını sağlama tekniği diyebiliriz. Bilgisayar minimum
işlem zamanında olabildiği kadar gerşeğe yakın bir görüntü oluşturmaya
çalışır.
Mımkın olduğunda POV-Ray doğayı taklit etmeye çabalar. Bazan POV-Ray
doğal bir etkinin öykünümü (simulation) ya da için uğraşmak
zorunda kalabilir. Bazı kısa yollar olmadan bir imgeyi yeterli zamanda
oluşturmak olanaksız olabilir. Işınizleme algoritmaları büyük tutarda
ışınları(ışık ışınları gibi) hesaplayarak çalışır, bununla beraber bu
ışınlar gerçek optik ışınlar gibi davranmazlar. Doğada, ışınlar ışık
kaynaklarının içinde oluşurlar, boşlukta hareket eder ve fiziksel
bir engelle (bir yüzey gibi) karşılaşınca saçılır, çarptığı noktada
kameranın filmi veya retinaya giden yeni bir ışın oluşturur. Öte yandan,
bir ışınizleyici ışınları ters yönde, retina veya filmden nesnelere ve
sonra ışık kaynağına doğru hareket eder. Bu algortmanın nasıl olduğunun
ayrıntılı açıklamasını gelecek yazıya bırakalım.
Povray'in niteliği mükemmel ve çok yaygın ışınizleyicilerle
karşılaştırılabilir. Işınizlemeye dayandırılan tecimsel (ticari) tasarım
ürünleri bütün nesne türlerini rahatça tasarlamak için tümleşik
elaygıtlarına sahiptirler.
Povray' de, değişik bağımsız kuruluşlardan veya biçim süzgeçlerinden
modeller kullanmak mümkündür, kullanücü genel olarak çok sayıda
elaygıtına sahiptir. Bu Povray'i kapsamlı olarak kullanarak güzel veya
güzelin de ötesinde düşlemsel (fantastik) tasarımlara erişilemeyeceği
anlamına gelmez. Tüm gereksinim duyulan şey imgeleme gücüdür.
Bir başka önemli nokta kaynak düzgüsünün (kodunun) toplumsal olmasıdır.
Bu, bize kullanılan çok çeşitli teknikleri sınama olanağı verir.
Povray'in yazmahakkı elyordamının A ekinde betimlenmektedir, linux gibi
o da ücretsiz bir lisansa sahiptir. Ayrıntılar için özgün lisansi
inceleyin.
HTML, PostScript ve metin (hızlı gezinme için daha kolaydır)
biçimlerinde elde edilebilen bir Povray elyordamı bulunmaktadır. ,Eger
postscipt biçimlisinin çüktüsünü almak istiyorsanüz, yaklaşük 600 sayfa
hazırlamanız gerekmektedir; bu büyük değer aslında Povray'in büyük
olanaklarını yansıtmaktadır ancak bundan dolayı çekinmeye de gerek
yoktur. Bu yazıda Povray'i deneme şansına erişilebilecek ve gelecek
yazılarda temel kavramlar öğrenilecektir.
Povray, onun üstün teknik yetenekleri sayesinde, bizim bilgiçizim
dünyasına ön kapıdan girmemize olanak sağlamaktadır. Benim bilgiçizim
kavramım salt bir tekniğin imgeleri yüksek gerçeklikle elde etmemize
yardım edebileceği düşüncesi olmasına rağmen, sanatsal değerin
gerçekliğe ve tekniğe yalnız başına eşdeğer olamayacağıdır. Teknoloji
değerli bir yardımcıdır, ama sanatsal değeri olan herşey ilk önce
bizim kafamızda oluşmalıdır. Düşünce asıl amaçtır.
Çoğu kez gerçeklik ve düşlem (fantasy) düşünceleriyle oynamaktan
hoşlanmışımdır. Bilgiçizim bu oyunun binbir biçimini izleyicide
ilginç bir çatışma yaratarak oynamamıza izin verir.
Aşağıdaki bulunakta (adreste) küçük bir imge (image) sergievim
(galerim) bulunmaktadır.:
http://slug.ctv.es/~acastro/infograf/catalog.htm
İşte bir örnek, melez bir tasarım: bir uçak, bir yat ve bir martı.
Seagull 1
Bu ilk imgede daha çok bir martı benzeri görmekteyiz.
Seagull 2
Bununla beraber nesnenin aynı olmasına karşın ikinci görüngeden
(perspektiften) daha cok bir uçak benzeri göründüğü söylenebilir.
Nesne bir martının karaltısına (siluet) sahiptir. Nesnenin Üst kesimde
saydam bir kokpite ve iki pilota sahip olduğu kolayca görülebilmektedir.
Renklendirme yadırgatıcı olmakla birlikte ışınizlemeyle bu resimler
şaşırtıcı bir gerçeklik derecesine çıkabilmektedir.
Eğer bu resimleri 5 yaşındaki bir çocuğa gösterecek olur ve ona
ne gördıgını sorarsanız, onun bir resim olduğunu söyleyecektir, bir
çizim olduğunu değil. Eğer bir yetişkine gösterecek olursanız,
sınıflandırmada bazı güçlükler çekebilir. Ne bir resim ne de bir çizim
olduğunu söyleyebilir. Belki bilgisayar tarafından yaratıldığını bilebilir
ama bir makine nasıl olur da bu kadar değişik ve güzel bir sahne
yaratabilmektedir?
Bu tür etki tasarımlarımda oluşturmak istediklerimdendir. Birleşimli
ve yapay yapıların çeşitli gerçek özeliklerle bir araya getirildiği
çatışan imgeler bu doğrultudadır. Bunun için, kuşkusuz gereksiniminiz
imgeleme ve iyi bir teknik bilgidir. Öte yandan çok gerçekçi imgeler
elde etmek için teknik üzerinde tam bir kontrole sahip olmanız gerekebilir
ama bu belki de sanat olarak adlandırılmayabilir.
Povray'le gerçekten çok güzel zamanlar geçirdim ve eminimki ögrenen
biri de aynı şekilde hoşlanacaktır.
Povray'in Çok Önemli Özeliklerinden Bazıları
-
Bir imgenin kısmen görıntıleştirilmesi. Daha önceden kesilmiş bir
görüntüleştirme işlemine devam edilmesi mümkündür.
-
Farklı çözünürlükle görüntüleştirme için seçenekler ve işleme süresini
azaltmak için yetkinleştirme ölçekleri.
-
Bir imgeyi yaratırken görüntüleme sığası. (SVGA ve XWindows' da).
-
Mosaic türü çabuk öngözlemleme.
-
Hangi aşamanın en çok merkezi işlem birimi (CPU) zamanı yuttuğunu
sınamamıza olanak sağlayan yanaylama (profiling) bilgili bütünleşik
hesaptan çıkış işlemleri.
-
İyi bir yanılgı saptayıcısı ile dilbilgisel öninceleme.
-
Herhangi bir doku yaratmak için çok fazla olasılık içeren çok sayıda
doku kitaplığı.
-
Yuzey etkileri: pürüzlülük, parlaklık, yansımalar, saydamlık, vs,
-
Temel geometrik temelögeler (küreler, koniler, yüzeyler, küpler, prizmalar,
vs.)
-
Karmaşık matematiksel eşitliklere dayanan geometrik nesneler.
-
Birbirine geçmiş üçgenlerden oluşan şekiller.
-
Kenarların düzgünleştirilmesi, örneğin üçgen kesişimlerinden oluşan
yüzeyler.
-
Basit nesnelerin birleşimi ile oluşan karmaşık nesneler.
-
İzleyicinin verimini arttırmak icin basit şekiller yardımı ile karmaşık
nesneleri sınırlandırmak.
-
Düz bir imgeden biçim renklendirmesi.
-
Rengi ile orantılı olarak pikselleri arttırarak düz renklendirilmiş
bir imgeden üretilen biçimler. (Kara parçaları üretimi için çok yararlı)
.
-
Çembersel devinimle üretilen nesneler.
-
TIFF kaynaklarından 3 boyutlu yazılar.
-
Atmosferik etkiler, orneğin sis.
-
Çeşitli ışık kaynakları ile ısıklandırma etkileri, orneğin spot
ısıkları vs.
-
Antialias için değişik seçenekler. Antialiase düşük çözünürlükte sık sık
oluşan ve oldukça bilinen basamak etkilerini silme yöntemi ile bizim çizgi
görüntümüzü arttırır. Povray antialias için çeşitli yöntemler
sunar.
-
Sahne betimlemesi için bütünleşik bir dil.
-
Çeşitli yöntemlerle canlandırım yaratılması:
-
Dış döngü (seçenek Clock=n.n).
-
İç döngü (düzgünün kendisinde iç parametler kullanarak).
-
Bir içerme (include) dosyası içerisinde tanımlayarak sabitleri
tanımlamamıza izin verir, böylece kullanım takımları (utility)
ya da her bir canlandırım aşamasında bu içerme dosyalarını
güncelleyen kabuk yazılımlarıyla (scripts) dış canlandırımlar üretmek
mümkündür.
Povray'in Elde Edilimi
Povray ftp ile elde edilebilir.
Aşağıdaki resmi yöreden elde edebilirsiniz:
http://www.povray.org
ftp://ftp.povray.org
Povray üzerine ayrıca bir elektronik dergi de bulunmaktadır, terk
edilmiş görünmesine rağmen Povray 3.0 sürüldügü zamanki bazı güzel
yayınları içermektedir.
http://www.povray.org/pub/povray/ezine
Bir cok yansı yöresi olmasına rağmen hiçbiri resmi değildir.
Index: (15-Enero-1998) ftp.povray.org
Burada, resmi yöreleri içeren bir dizelge (liste) sunuyoruz.
pub
lrwxr-xr-x 1 povray vuser 15 Aug 24 11:12 HEADER -> povray/.message
drwxr-xr-x 5 povray vuser 512 Aug 24 13:13 povray
pub/povray
-rw-r--r-- 1 povray vuser 305 Jan 9 01:30 .message
lrwxr-xr-x 1 povray vuser 8 Aug 24 13:13 HEADER -> .message
dr-xr-xr-x 2 povray vuser 1536 Aug 24 13:13 Hall-Of-Fame
-r--r--r-- 1 povray vuser 3262 Aug 24 10:52 MIRRORS
dr-xr-xr-x 10 povray vuser 512 Aug 24 11:14 Official-3.0
-r--r--r-- 1 povray vuser 3262 Aug 24 10:52 README.MIRRORS
-r--r--r-- 1 povray vuser 3731 Aug 24 10:52 README.MIRRORS.HTML
dr-xr-xr-x 2 povray vuser 1024 Aug 24 13:13 Ray-Tracing-News
pub/povray/Hall-Of-Fame
-r--r--r-- 1 1017 1017 235235 May 14 1996 6x86.jpg
-r--r--r-- 1 1017 1017 393630 Sep 30 1994 6z4.jpg
-r--r--r-- 1 1017 1017 308 Sep 30 1994 6z4jpg.txt
-r--r--r-- 1 1017 1017 154256 Oct 13 1995 astplant.jpg
-r--r--r-- 1 1017 1017 2991 Oct 13 1995 astplant.txt
-r--r--r-- 1 1017 1017 110322 Sep 30 1994 ballz5.gif
-r--r--r-- 1 1017 1017 287164 Dec 8 1994 bell_jar.jpg
-r--r--r-- 1 1017 1017 57111 Oct 13 1995 bkntools.jpg
-r--r--r-- 1 1017 1017 610 Oct 13 1995 bkntools.txt
-r--r--r-- 1 1017 1017 331058 Sep 30 1994 brass.jpg
-r--r--r-- 1 1017 1017 254 Sep 30 1994 brass.txt
-r--r--r-- 1 1017 1017 284250 Sep 30 1994 bug1.gif
-r--r--r-- 1 1017 1017 279273 Sep 30 1994 camera.jpg
-r--r--r-- 1 1017 1017 367490 Oct 13 1995 crane.jpg
-r--r--r-- 1 1017 1017 2650 Oct 13 1995 crane.txt
-r--r--r-- 1 1017 1017 101473 Sep 30 1994 dragons.jpg
-r--r--r-- 1 1017 1017 295129 Sep 30 1994 frosty.gif
-r--r--r-- 1 1017 1017 777531 Sep 30 1994 frosty.tga.zip
-r--r--r-- 1 1017 1017 88350 Sep 30 1994 geodome.jpg
-r--r--r-- 1 1017 1017 2252 Sep 30 1994 geodome.txt
-r--r--r-- 1 1017 1017 11801 Sep 30 1994 geosmall.gif
-r--r--r-- 1 1017 1017 356889 Oct 13 1995 gofood1.jpg
-r--r--r-- 1 1017 1017 483 Oct 13 1995 gofood1.txt
-r--r--r-- 1 1017 1017 375781 Oct 13 1995 gogadget.jpg
-r--r--r-- 1 1017 1017 825 Oct 13 1995 gogadget.txt
-r--r--r-- 1 1017 1017 72337 Oct 13 1995 info_hwy.jpg
-r--r--r-- 1 1017 1017 1796 Oct 13 1995 info_hwy.txt
-r--r--r-- 1 1017 1017 109462 Oct 13 1995 jmwarmup.jpg
-r--r--r-- 1 1017 1017 3346 Oct 13 1995 jmwarmup.txt
-r--r--r-- 1 1017 1017 628 Sep 30 1994 julia.txt
-r--r--r-- 1 1017 1017 50762 Sep 30 1994 kettle.jpg
-r--r--r-- 1 1017 1017 295555 Sep 30 1994 kkteaset.jpg
-r--r--r-- 1 1017 1017 96 Sep 30 1994 kkteaset.txt
-r--r--r-- 1 1017 1017 151503 Sep 30 1994 lionfish.gif
-r--r--r-- 1 1017 1017 112 Sep 30 1994 mindmaz1.txt
-r--r--r-- 1 1017 1017 341101 Sep 30 1994 museum.jpg
-r--r--r-- 1 1017 1017 564 Sep 30 1994 museum.txt
-r--r--r-- 1 1017 1017 364856 Aug 19 1995 pcktwtch.gif
-r--r--r-- 1 1017 1017 580 Aug 19 1995 pcktwtch.txt
-r--r--r-- 1 1017 1017 590679 Jan 29 1996 pcktwtch.zip
-r--r--r-- 1 1017 1017 417 Sep 30 1994 pclock.txt
-r--r--r-- 1 1017 1017 213426 Sep 30 1994 plntscap.gif
-r--r--r-- 1 1017 1017 2558 Sep 30 1994 plntscap.txt
-r--r--r-- 1 1017 1017 125648 Oct 13 1995 springeq.jpg
-r--r--r-- 1 1017 1017 1129 Oct 13 1995 springeq.txt
-r--r--r-- 1 1017 1017 239594 Sep 30 1994 studying.jpg
-r--r--r-- 1 1017 1017 244179 Oct 13 1995 subrace.jpg
-r--r--r-- 1 1017 1017 2681 Oct 13 1995 subrace.txt
-r--r--r-- 1 1017 1017 191332 Sep 30 1994 sundae.gif
-r--r--r-- 1 1017 1017 162140 Sep 30 1994 woild2.gif
pub/povray/Official-3.0
-r--r--r-- 1 povray vuser 80 Jul 20 01:47 .message
drwxr-xr-x 2 povray vuser 512 Dec 16 03:53 Amiga
dr-xr-xr-x 2 povray vuser 512 Aug 24 10:31 Docs
lr-xr-xr-x 1 povray vuser 11 Aug 24 11:14 HEADER -> ../.message
dr-xr-xr-x 2 povray vuser 512 Aug 24 10:31 Linux
dr-xr-xr-x 2 povray vuser 512 Aug 24 10:31 MS-Dos
dr-xr-xr-x 2 povray vuser 512 Aug 24 10:36 Macintosh
-r--r--r-- 1 povray vuser 83 Jul 20 01:48 README
-r--r--r-- 1 povray vuser 222 Feb 6 1997 README.HTML-DOCS
dr-xr-xr-x 2 povray vuser 512 Aug 24 10:31 SunOS
dr-xr-xr-x 2 povray vuser 512 Aug 24 10:32 Unix
dr-xr-xr-x 3 povray vuser 512 Aug 24 10:32 Windows
-r--r--r-- 1 povray vuser 15055 Jul 19 1996 gamma.gif
-r--r--r-- 1 povray vuser 1776 Jul 19 1996 gamma.gif.txt
-r--r--r-- 1 povray vuser 3735 Feb 6 1997 news.3.01.txt
-r--r--r-- 1 povray vuser 18452 Feb 5 1997 povlegal.doc
-r--r--r-- 1 povray vuser 24060 Feb 1 1997 povwhere.get
-r--r--r-- 1 povray vuser 110 Aug 24 11:01 www.html
pub/povray/Official-3.0/Docs
-r--r--r-- 1 1017 1017 413 Feb 7 1997 README
-r--r--r-- 1 1017 1017 286517 Feb 7 1997 povdoc.zip
-r--r--r-- 1 1017 1017 764628 Feb 7 1997 povdocps.zip
-r--r--r-- 1 1017 1017 1601733 Feb 7 1997 povhtml.zip
-r--r--r-- 1 1017 1017 18452 Feb 7 1997 povlegal.doc
-r--r--r-- 1 1017 1017 24060 Feb 2 1997 povwhere.get
pub/povray/Official-3.0/Linux * * * * *
-r--r--r-- 1 povray vuser 786 Jul 20 01:41 00_index.txt
-r--r--r-- 1 povray vuser 442 Jul 20 01:42 README
-r--r--r-- 1 povray vuser 1506794 Feb 2 1997 povdoc.html.tgz
-r--r--r-- 1 povray vuser 908752 Aug 1 1996 povdoc.ps.gz
-r--r--r-- 1 povray vuser 1678592 Jul 18 13:02 povlinux.tgz
|
Linux kullanıcıları özellikle iki dizin ile ilgilenecektir:
'pub/povray/Official-3.0/Linux' ve 'pub/povray/Hall-Of-Fame'
İkincisinde büyük Povray elkitabında bulamadığımızı buluruz: Örnekler.
Povray elkitabı gerçekten iyi bir kitaptır fakat şunu da unutmamak
gerekir ki bir resim bin sözcükten çok daha fazla şey anlatabilir.
Ilk olarak elkitabının uygun bir yolla resimlenmemiş olduğu söylenebilir.
İkinci olarak diğer dizinlerde elkitabı için ideal tamamlayıcı olan çeşitli
imgeler bulabiliyoruz. Elkitabi yeterli örnek içermiyor demiyorum, aksine
birçok örnek göstermektedir. Her örnek bir kavram açıklıyor ve hepsi de
teknik bilgi kazanmak icin oldukça uygun. Bazı elkitaplarının örnekleri
çok güzel, ama Ünlüler Evi ('Hall-Of-Fame') yaratılmış en iyi imgelerden
seçmeler içeriyor: Gerçek bir bilgiçizim sergievi. Her resim inanılmaz
sonuçlar sağlayan araç ve teknikleri tanımlayan bir metne eklenmiştir.
Elkitabında sözıedilen araçların modelleyiciler, süzgeçler gibi genel
kurallar kadar henüz Linux için uygun olmadığından haberdar olmalıyız.
Yöreyeçekim için salık verilen
ftp.povray.org
/pub/povray/Official-3.0/Linux ve ftp.povray.org/pub/povray/Hall-Of-Fame
yalnızca resimleri görmek için değil tasarım için de önemli bir başlangıç
noktasıdır.
Tipik bir yüklemenin nasıl yapılacağını anlatacagız. (Bütün Linux
sürümlerinde çalışabilir ama yalnızca Debian'da tam olarak sınanmıştır)
çok sayıda metin kutuphanesi.
Yukleme
Genel yüklemelerde olduğu gibi süper kullanıcı olan kök (root) olarak
girmeliyiz. Sahip olduğumuz dağıtımın bu dizinde olduğunu
varsayalım: "/incoming/pub/povray/Official-3.0/Linux"
Daha sonra şu güdümleri veriyoruz.
# mkdir /usr/local/sbin
# mkdir /usr/local/apli
# mkdir /usr/local/apli/povray
# cp "/incoming/pub/povray/Official-3.0/Linux"
/usr/local/povray
# cd /usr/local/povray
# tar -xzf povlinux.tgz
# tar -xzf povdoc.html.tgz
# cd /usr/local/sbin
# ln -s /usr/local/apli/povray/povray3/x-povray
x-povray
# ln -s /usr/local/apli/povray/povray3/s-povray
s-povray
|
Güdümlerin son kesimi herşeyi yüklemektedir: derlenecek herhangi birşey
yok. Yalnızca /usr/local/apli/povray/povray3 dizinindeki x-povray
ve s-povray güdümlerinin herkes için çalıstırabilme iznine sahip olmasını
kontrol etmeniz gerekiyor.
Bizim durumumuzda 'chmod 755' ile izinleri değiştirmeye gereksinimimiz
var.
Kurulum
Povray kurulum işlemi grafik kartlarını biçimlendirmek, girdi ve çıktı
dosya biçimlerini tanımlama, "include" dosyalarının kitaplıklarına
erişilebilirliği sağlamak ve diğer özelikler için kullanışlıdır.
Elkitabında çok iyi ayrıntılanan soruları açıklamak yerine Linux
kullanıcılarının Povray'i nasıl kolay bir şekilde biçimlendirebileceklerini
göz önünde tutacağız.
Povray SVGA kipte görüntüleyebilir ama bu grafik kartına bağlı bir
özelliktir. Biz sizin Xwindows ile yükleme yaptığınızı ve imge görüntüleyici
olarak 'xv' kullandığınızı göz önünde tutacağız.
Linux biçimlendirimi povray'in daha yeni modellerinde daha
basitleştirilebilmiştir. Çevre değerlerini kullanmak olasıdır,
ama tüm gereksiniminiz olan "*.ini" biãimlendirme dosyası
yaratmak daha pratiktir.
Değişik amaçlar için çeşitli *.ini dosyaları vardır. Bu, biçimlendirmeyi
yapmak için çeşitli olasılıkları destekler. Bizim benimsenmiş biçimlendirme
dosyamızı bir çevre dosyasına göndermek veya değerleri kullanmak için
benimsenmiş include dosyasına yerleştirmek mümkündür. Ayrıca seçeneklerin
numarasını argüman olarak göndermek de iyi bir fikir olabilir, ama biz
aynı zamanda komut satırının argümanü olarak tanımladığımız hemen hemen
herşeyi göndeririz. Eğer bu yöntemden hoşlanmadıysanız, elkitabını gözden
geçirin, aynı sonucu sağlayacak değişik seçenekler bulacaksınız, bununla
beraber her seçeneği açıklayıcı bir giriş yazısı yok, sadece en çok
kullanışlı olanların var.
Ayrıca bütün örneklere uyan imgeler yaratmak için 'allscene.sh' adlı
bir kabuk yazılımı da vardır.
Belki bütün görüntüleri düşük çözünürlükte yaratmak yerine bir tanesini
seçip en yüksek çözünürlükte oluşturabilirsiniz.
Bu durumda örnek dizinine gidin ve aşağıdaki 'ini' dosyası ile povray'
i çalıştırın:
-------------------------8<------------(ini.ini)----------------
Width=640
Height=480
Quality=8
Library_Path=/usr/local/apli/povray/povray3/include
Output_to_File=on
Output_File_Type=t
Output_File_Name=out.tga
verbose=on
-------------------------8<--------------------------------------
İlk iki satır son imgenin çözünürlüğünü belirleyecektir.
İmgeyi elde etmek için gereken komut:
$ s-povray ini.ini +i source.pov
'source.pov' dosyası 'out.tga' ile görüntüleyeceğimiz imgeyi elde etmek
için işleme sokacağımız dosyanın adıdır, örneğin; 'xv out.tga'.
POV: Povray'le
çalışmak için bir kullanımaracı
'pov' POV-ray'i kolayca kullanacağımız bir kabuk yazılımıdır. İlk önce
dizelgesini (listesini) gösterelim:
------------------------8<-----------------------------------
#!/bin/bash
#####################################################################
# Autor: Antonio Castro Snurmacher (1.998)
#
# pov (ver 1.0)
#
# Esta versión esta dedicada a su inclusión en la
# revista LinuxFocus (freeware)
#
# Este programa puede ser utilizado, distribuido, y modificado
# libremente pero siempre se deberá respetar la propiedad
# intelectual de su autor. Esta cabecera debe ser conservada
# tal cual en todas las modificaciones.
#
# En caso de traducción deberá conservarse el texto original de
# esta cabecera y añadirse la traducción a continuación de ella.
#
# El autor renuncia a todo tipo de beneficio económico y no se hace
# responsable de los posibles perjuicios derivados del uso del mismo.
#
# E-mail (acastro@ctv.es)
#
#####################################################################
# Author: Antonio Castro Snurmacher (1.998)
#
# pov (ver 1.0)
#
# This version has been written to be included in
# the LinuxFocus magazine (freeware)
#
# This program can be used, distributed, and modified
# freely but always has to respect the intellectual
# property of the author. This header should be kept
# untouched in every modification.
#
# In case of translation the text of this header should be kept
# and the translation will be added after it.
#
# The author renounces to any kind of economic benefit
# and he is not responsible for any damage derived from
# the use of this script.
#
# E-mail (acastro@ctv.es)
#
#####################################################################
usage(){
echo "Usage: pov (project) (size=0..6) (quality=1..11)"
echo
echo "0) 40x30 (STD/20) No backup"
echo "1) 80x60 (STD/10) No backup"
echo "2) 100x75 (STD/8) No backup"
echo "3) 200x150 (STD/4)"
echo "4) 266x200 (STD/3)"
echo "5) 320x200 *"
echo "6) 400x300 (STD/2)"
echo "7) 640x480 *"
echo "8) 800x600 * (STD)"
echo "9) 1024x768 *"
echo
echo "The projects should be located in the directory pointed by"
echo "${HOMEPOV} and will use the same name for it and for"
echo "the main source file *.pov"
echo "(STD) is the standard resolution chosen."
echo
exit 1
}
newversion(){
mv ${PREFIX}.pov.8.gz ${PREFIX}.pov.9.gz 2> /dev/null
mv ${PREFIX}.pov.7.gz ${PREFIX}.pov.8.gz 2> /dev/null
mv ${PREFIX}.pov.6.gz ${PREFIX}.pov.7.gz 2> /dev/null
mv ${PREFIX}.pov.5.gz ${PREFIX}.pov.6.gz 2> /dev/null
mv ${PREFIX}.pov.4.gz ${PREFIX}.pov.5.gz 2> /dev/null
mv ${PREFIX}.pov.3 ${PREFIX}.pov.4 2> /dev/null
mv ${PREFIX}.pov.2 ${PREFIX}.pov.3 2> /dev/null
mv ${PREFIX}.pov.1 ${PREFIX}.pov.2 2> /dev/null
cp ${PREFIX}.pov ${PREFIX}.pov.1
gzip ${PREFIX}.pov.4 2> /dev/null
}
#################################################
size(){
export SAVE="yes"
case $1 in
0) Width=40 ; Height=30; SAVE="no" ;;
1) Width=80 ; Height=60 SAVE="no" ;;
2) Width=100; Height=75 SAVE="no" ;;
3) Width=200; Height=150;;
4) Width=266; Height=200;;
5) Width=320; Height=200;;
6) Width=400 ;Height=300;;
7) Width=640 ;Height=480;;
8) Width=800 ;Height=600;;
9) Width=1024;Height=768;;
*) usage
esac
}
quality(){
case $1 in
1) ;;
2) ;;
3) ;;
4) ;;
5) ;;
6) ;;
7) ;;
8) ;;
9) ;;
10) ;;
11) ;;
*) usage
esac
export Quality=$1
}
####################### main ##############################
export HOMEPOV=${HOME}/dat/pov
export PROYECT=$1
export PREFIX=${HOMEPOV}/${PROYECT}/${PROYECT}
if [ $# != 3 ]
then usage
fi
export POVRAY=/usr/local/apli/povray/povray3
size $2
quality $3
if [ $SAVE == "yes" ]
then newversion
fi
cat <<-FIN > ${PREFIX}.ini
Width=$Width
Height=$Height
Quality=$Quality
Library_Path=${POVRAY}/include
Input_File_Name=${PREFIX}.pov
Output_to_File=on
Output_File_Type=t
Output_File_Name=${PREFIX}.tga
verbose=on
Post_Scene_Command=xv ${PREFIX}.tga
FIN
# Output_File_Type=t
## Others hight performace options ##
# Antialias_Depth=3
# Antialias=On
# Antialias_Threshold=0.1
# Jitter_Amount=0.5
# Jitter=On
# Low priority, maybe I want to do other things.
nice -20 x-povray ${PREFIX}.ini
if [ $SAVE != "yes" ]
then echo "Warning !! There is no backup of this version."
fi
------------------------8<-----------------------------------
Tasarım aşamasında düşünceleri sık sık defalarca sınamak zorundaydik
ve idealimize adım adım yaklaştık.
Çalıştırmayı kolaylaştırmak için *.ini dosyasını oluşturacak, Povray
ışınizleyiciyi çalıştıracak ve daha sonra görıntıleyecek bir kabuk
programını oluşturacağız. $HOME/dat/pov/(project name) dizininde
çalıştığımızı ve ana dosyamızın adının (project name.pov) olduğunu
varsayalım.
Bu kabuk yazılımı birçok durum için genelde yeterli olan *.ini dosyasını
oluşturuyor. Bu çalışmanın özel bir yoluna yönelik fakat eğer başka bir
tanesini yeğlerseniz kolayca değiştirebilirsiniz.
Bu kullanımaracı kaynak dosyadaki son değişikleri yedekler çünkü değişik
sonuçlar için birçok değişiklik yaptıktan sonra sık sık geri dönmeye karar
veririz. Yukarıda belirttiğimiz gibi yaratıcı işlem fırça boyamasına benzer,
nasıl devam edeceğimize adım adım karar veririz.
Eğer yazılımı en düşük çözünürlükte çalıştırmak istersek yeni sürümde
dahi yedek kopyasını oluşturmaz: düşük çözünürlük ilginç bir test. Bu test
çeşidi ile nesnelerin göreceli konumları üstüne fikirler elde
edebilirsiniz. Bu kişisel çalışma yolu çok kolay. Eğer Povray ile tanışık
değilseniz başlamak için iyi bir yöntem. Belki ilerde bu elaygıtını kendi
kişisel gereksinimlerinize uyarlamak istersiniz.
Elde edilebilen bazı çözünürlükler bazü ölçünlü (standart) video
çözünürlükleriyle aynıdır. Diğerleri 800x600 çözünürlüğünün parçalariıdır.
Kısa bir yardım mÖnüsü için 'pov' yazınız.
$HOME dizininde çalışmak için uygun bir dizin yapısı oluşturun ve ilk
günden nasıl kolay çalıştığını görün. Biz denemelerimizi bu elaygıtının
kullanıldığı taban üstüne oturttuk. Bunu kullanmak gerekli olmamasüna
rağmen sizin için daha rahattır.
Herşeyin çalıştığını görmek için basit bir örnekle başlayacağız:
------------------------8<-----------------------------------
#include "colors.inc"
#include "textures.inc"
#include "glass.inc"
// Author: Antonio Castro
// The camera will look towards the contact point
// of both spheres
camera {
location <0, 15, 35>
look_at <0, 10, 0>
}
// Source of white light
object {
light_source {
<20, 100, 50>
color White
}
}
// Sky with white clouds
object {
sphere { <0, 0, 0> 200000} // Great vault of heaven
texture {Blue_Sky scale <50000, 6000, 50000>} // We strecht the clouds
}
// Golden ball
sphere { <-10, 10, 0> 10
texture { Gold_Metal }
}
// Mirror ball
sphere { <10, 10, 0> 10
texture { Mirror }
}
// Glass ball
sphere { <0, 5, 10> 5
texture { T_Glass1 }
}
// Floor
// It is made with a great sphere that touches the center <0,0,0>
// but it could be implemented with a plane.
sphere {<0, -1000000, 0> 1000000
pigment {checker color Red color Yellow scale 2 } // Checker texture
}
------------------------8<-----------------------------------
$HOME/dat/pov/sample1/sample1.pov içine kopyalayın.
Eğer gerekli ise ilk doğru dizin yapısını oluşturun. Daha sonra
bu yazıda bulduğunuz 'pov' uygulamasını Xwindows'dan çalıştırın.
$ pov sample1 4 9
'xv' ile görüntülemeye başlamanız gerekmektedir. Kendi görüntülerinizi
yaratmak istediğiniz zaman örneğin 'vi' da elkitabinin metin sürümü ile
yeni bir 'xterm' açmanüzü salık veririz.
../../common/March1998/sample1.gif
|