Home Index Search Links About Us
[LinuxFocus Image]
[Navegation Bar]
 News   Archives   Companies   Tips  

POVRAY Hakk�nda Genel Kavramlar

Yazar: Antonio Castro

�eviri: �zkan �zer

Bu yaz� Povray �zerine haz�rlanm�� dizinin ikinci yaz�s�d�r. Bu kez baz� genel kavramlar� g�zden ge�irece�iz ve bu dilin temel ��elerini tan�mlamaya ba�layca��z 

Yaz�n�n G�r�nt�leri

G�r�nt�le�tirim Temelleri

Yedi Yanl��

Povray Dili

Canland�r�m Hakk�nda Temel Kavramlar

POV S�r�m 2.0

3 Boyutlu G�r�n�mler

Konum

�teleme

D�nme

�l�ekleme

���k

Kamara

 

Yaz�'n�n G�r�nt�leri

Bu yaz�daki t�m g�r�nt�ler JPEG format�nda ve (Thumbnail) boyutuna indirgenmi�tir. Daha kaliteli tam boy GIF s�r�mlerine thumbnail ikonlar�na t�klayarak ula�abilirsiniz.

Animasyonlar JPEG format�nda sadece 15 kareyle d���k ��z�n�rl�kte yap�lan�rlar.��z�n�rl��� s�n�rlama ve animasyonun boyutu harddiskin b�y�k b�l�m�n� kullanmaktan ka��nmay� ve bu yaz�y� yava� y�klememeyi umut ederiz.�stelik bununla birlikte, bu g�r�nt�ler i�in kaynaklar herzamanki gibi haz�rlanacakt�r ve okuyucular  herhangi istenilen ��z�n�rl�kte g�r�nt�leri sunabilen 'pov'  (bir �nceki konuda tart���lm��t�)ad� verilen ara�a ula�abilirler veya okuyuculara g�r�nt�ler �zerinde oynama ve de�i�tirme yapma hakk� verilmi�tir 

E�er okuyucular Povray�i hen�z sistemlerine y�klememi�se, l�tfen kaynaklar�n yeri, y�kleme ve POVRAY �in bi�imlendirilmesi hakk�nda yeterli bilgi verdi�imiz bir �nceki serilerin makalelerinde bulunan komutlar� takip edsinler. 

G�r�nt�le�tirim Temelleri

Bir �nceki makalede �zetle ���n izlerinin etkilerinden bahsetmi�tik. �imdi bu konuyu daha fazla detayla ke�fedelim.

Rendering yapay bir g�r�nt�y� ba�arabilmek i�in eksiksiz bir tekniktir. Pahal� olmayan manada en ger�ek�ik�ilik i�erisinde i����n davran���ni ve cisim �zerindeki g�rsel etkileri kopyalamy� dener. 

Bir �nceki makalemizde g�r�nt�leyicinin ���n demetlerini saymas�ndan bahsetmi�tik. Fakat bu model alt�nda yeterli ���k kayna�� bir kaynak olarak davranmaz bir lavabo(sink) gibi davran�r. Bu rollerin de�i�imi hakk�nda bir sebep vard�r, e�er ���nlar ���k kayna��ndan ayr�lsalard�, hesaplanabilir b�y�k bir zaman kayb� olacakt�.��nk� b�t�n ���nlar�n d���nda kalanlar ger�ekten sadece az say�da ���k kayna�� kameraya ula��r.�leriki a�amalarda kameradaki g�r�nt� ���nlar�n say�s�n� g�r�nt�yle ili�kili olarak azalt�yoruz.Kameradaki t�m noktalar, bizim ger�ek kameram�z�n teorik, foto�rafa duyarl� film i�erisindeki bir noktan�n kar��l��� olur.Herbir nokta daha sonra birbirinden ba��ms�z i�lenir.Povray�i,g�r�nt�y� in�a etmek i�in yap�land�rd�k ve daha sonra harici bir g�r�nt�leyiciyle g�zlenebilir.Povray�i SVGA i�in yap�land�rd�k ve daha sonra g�r�nt� hesapland��� zaman g�r�nt�y� izleyebilmenin m�mk�n olabilece�ini g�rebiliriz.Bu, ekranda g�r�nt�n�n en ufak par�as�ndan ba�lanarak yap�l�r, soldan sa�a, yukar�dan a�a��ya.Bu istek e� zamanl� de�ildir. Povray i�in en genel yap� bu istek i�erisinde tam olarak in�a edilmi� TGA 24 bittir.

E�er herhangi biri, SVGA i�in Povray�i in�a etmek �zerine  ilgilenmek isterse(Ben �u ana kadar kendi kendime yapmad�m), ��renecekleri tek �ey g�r�nt�n�n b�lgesine ba�l� olan render�in h�z�d�r. Karma��k b�lgeler kolay b�lgelerden daha uzun zaman al�r.�ok cisimli b�lgeler i�lenme a��s�ndan bir veya hi� cisimi olmayan b�lgelerden daha uzun zaman al�r. I��nlar�n cisim �zerinde herbir etkisi i�in renderer ���k �zerindeki etkileri ���k kayna��n�n rengine ve konumuna bakarak hesap eder. Cismin y�zeyi ile ilgili olarak cismin ger�ek konumu .......Bu hesaplaman�n sonucu, cisim i�erisindeki noktalar�n yogunlu�unu ve rengini tan�mlayan �� de�erli RGB i�inde belirtilmi�tir.

Bir �zet dolamba�l� yol

24 bitlik TGA yap�s� �ok yer i�gal eder, fakat �retmek �nemsiz ve i�lemesi(process=denetleme?) kolayd�rThe TGA 24bits format occupies a lot of space but is trivial to generate and easy to process. 

Herbir g�r�nt� birimi, RGB paketini kodlayan 8 bitlik 3 rakamla verilir.

8bits *3 = 24 bits; 2^24 = 16777216 (16 milyon renk) 

Geni�li�i ve y�ksekli�i ��zmek i�in:

int w, h, i; 
fseek(fi, 12L, SEEK_SET); 
fread(&w, 2L, 1L, fi); /** pos 12 **/ 
fread(&h, 2L, 1L, fi); /** pos 14 **/ 

�lk g�r�nt� birimini okumak i�in:

fseek(fi, 16L, SEEK_SET); /** pos 16 **/ 
Blue=fgetc(fi); 
Green=fgetc(fi); 
Red=fgetc(fi); 

 
 

Bu bilgi baz� cisimleri i�lemek ve birka� ilgin� effecti(sonu�,etki) ba�armak a��s�ndan yeterli olmal�d�r. E�er okuyucu programlamayla ilgili olaraktan biraz bilgisi varsa, a�a��daki �rnekleri �neriyoruz:

1) Bir cismi Parlakla�t�rmak/Koyula�t�rmak (beyaz g�r�nt� birimleri 255,255,255 ve siyah g�r�nt� birimleri 0,0,0)
2)***Superimpose and image with a black background on top of another one using black as a transparent value 
3)�ki cismi renk de�erlerini ortalayarak harmanlamak 
5)Verilen bir rengi azaltmak/art�rmak 
6) Bir cismin renk grafi�ini sa�lamak (renklerin listesi ve frekanslar�(s�kl�klar�)

Bu operasyonlar�n tamam� web �zerinde s�k s�k i�e yarar yard�mc� programlar kullan�larak �stesinden gelinebilir.Bununla birlikte, baz� vakalarda cisme �nemsiz olmayan d�n���m uygulamak gerekebilir ve bu 24 bitlik TGA yap�s� t�m�yle ba�ar�labilir. 

Dolamba�l� Yolun Sonu

Ger�ek kameranin filmi i�erisinde herhangi bir noktadan ayrilan isinlar ayrilir, fakat son rengi hesaplamak i�in herbir isin, perdedeki herhangi bir cismi kesip kesmedigini belirler.Eger bunu yapiyorsa isin izleri algoritmasi isinin ulastigi b�lge i�erisindeki cismin �zelliklerini ��z�mlemeye devam eder.Sonra,karmasik cisimlerin tasarimi i�in  �ok etkili bir (optimization?) teknik meydana gelir.Bu birinci karmasik cismi ihtiva eden yeni bir g�r�nmez cismin tan�mlanmasindan olusur.Genelde en �ok kullanilan kap bir k�redir, fakat k�plerde en az digeri kadar yaygindir. Buradaki temel ama�, isin izlerini??? o The main goal here is to used the container to force the ray-tracer to approximate the complex object by using the container instead, arriving rays bounce off the invisible spherical container. This removes a great deal of the computational process. The primitive used is "bounce_by" and it is commented next to illustrate how well the ray-tracer works. We will see an example later on in the article when we treat complex figures. 

7 Hata

As an illustration of the issues explored so far let us review an image created using several techniques and discuss them one by one 

Bu ekran "7 hata" olarak ba�l�kland�r�lm��t�r. 
 
 

7erroresL�tfen perdenin �zelliklerinin bazilarinin eksik oldugunu fark�na varin: 

  1. Y�z�g�n merkezinde yogun tek bir isik kaynagi var ve hernekadar biz bu noktaya dogruca  baksakta isik kaynagi g�r�nmez durumdadir.
  2. �sik kaynaginin arkasina yerle�tirilen beyaz k�re g�ky�z�nde   b�y�k bir g�lge yaratmaktadir.Bu bir "ger�ek g�ky�z�" yerine pahali olmayan bir dekorasyon i�erisinde g�r�lebilir.
  3. Deniz y�zeyi bazi dalgalari g�sterir, fakat �ok ince d�z bir y�zey kullanarak yapilmistir.Sinirin dalga �ariltilari olmaksizin d�z bir �izgiyi g�stermek i�in d�zg�n y�zeyi kestik.
  4. Yakin bir d�zlem �zerinde 3 tane k�p vardir.Orta boylu k�p g�lge birakmaz. 
  5. K�p�n �zerindeki g�lgeler ve isiklar cok yabancidir.Ne �esit bir isik kullanilmistir?D�zg�n isik kaynagi ?veya daginik isik kaynagi?.G�r�n�se g�re herbir kutu farkli isik ortamlarina sahiptir. 
  6. Cam top sol tarafta kati gibi g�z�k�r(araliksiz), fakat ufak bir b�lgeyi saga dogru g�t�rd�k ve topun bos oldugunu degerlendirmek i�in bir cisim koyduk.
  7. Bir b�t�n olarak perdeye baktigimizda atmosferik etkilerin eksikligi kanit olmustur. effects.Hava asiri derecede "saydamdir".Denizin rengi koyu mavi olmali ve ufuga dogru yayilmalidir. Beyaz top havada iz birakmayan konik bir g�lge birakir
Su anda kullanilan sayisiz tekniklerin detaylarini ger�ekten a�iklayamayiz.Bu �rnekle bizim konumuz okuyucuya isin izlerinin  dogal ortami taklit etmek i�in  atilimlarini g�stermektir, fakat fizigin dogal kanunlariyla her zaman b�t�n olarak bir yakinma vardir.��nk� ger�egin daha b�y�k de�erleri i�in olusum s�reci yerine �denecek  b�y�k bir bedle vardir.Bazi teknikler digerleriyle �retilen kusurlari saptamak i�in en iyileridir.En kesin sonu�u ve olusum s�reci arasinda bir denge bulmak i�in en �nemlidir. 

Povray Dili

Povray hakkindaki bu seriler, imkaninin bir  y�zeysel gezisinin �tesine ge�emez. Povray dili, seriler i�erisinde derin olarak el alinmak i�in �ok genistir.Bu sebepten dolayi su anda dilin en �nemli �zeelikleri �zerinde sadece birka� g�r�s belirleyebiliriz. 

Povray sik sik benzer sonu�larin �stesinden gelebilmek i�in  dilbilgisel d�zenin bir miktarinin kullanimina izin verir.Bu Povray'in baslangicina (This is due in part to the genesis of Povray,?)..Povray'in ger�ek s�zdizimi son derece s�r�mden s�r�me degisir.Su an ki s�zdizim t�m�yle onaylanmis ve belki gelecekte �ok degisiklige ugramayacaktir.Bagdasabilir sebepler i�in eski s�zdizim �zellikleri biraz degisik  formda veya orijinalinde yeni s�r�mlerinde korunmustur.  S�zdizimde esnekligin bir �rnegi kisaca test edecegimiz d�nmelerdir. 

Povray'in daha �nceki s�r�mlerini kullanan girdi kaynak dosyalarini olusturan derleme se�enekleri vardir. 

�rnek:
 
Benzer dosya yapilari i�erisinde, 1 , 2 veya 3. S�r�mlerden kullanmak i�in kolaylikla ekler:

#version 1.0 
....... 
#version 2.0 
....... 
#version 3.0 
....... 

 
 
 

Sasirtici olarak Povray; 1.0, 2.0 veya 3.0'da yazilmis kaynak kodlaraini birlestirmek i�in gelistiricilere izin verir. 

Povray hakkinda bir �ok iyi kilavuz vardir, l�tfen bunu tercih edin.Burada �ok �nemli �zelliklere y�nelerek zaman kazanacagiz. 

Yorumlar, Bildiriler, include dosyalari 

Yorumlar  C++ tipiyle asagidaki gibi yazilir. 
 

�rnek: 
 

// Bu yorum bir d�n�s satiri ile biter. 
/* Bu yorum slash karakteri i�erisinde konumlanir. */ 

 
 

# isareti ile ba�layan �geler Dil Y�nergesi olarak bilinir.En �ok kullanilan y�nergeler #declare ve #include y�nergeleridir. 

 
Belirtim S�zdizimleri:

#declare IDENTIFIER = ITEM 

 
 

�rnek: 
 
�oklu Tan�mlay�c�lar�n�n Belirtimi:

#declare Rows = 5 
#declare Count = Count+1 
#declare Here = <1,2,3 
#declare White = rgb <1,1,1 
#declare Cyan = color blue 1.0 green 1.0 
#declare Font_Name = "ariel.ttf" 
#declare Ring = torus {5,1} 
#declare Checks = pigment { checker White, Cyan } 

 
 

#declare ifadesi �gelerin b�y�k bir �e�idini depo etmeye izin verir:bir d�nme, (texture), renk, cisim, rakamsal deger,... 

Diger cok onemli �ge Another crucial element are the include statements that allow to include in our source file code fragments previously saved in other files. 

By default the include directive searches the local directory for the file. If the file is not found it then passes to search the Library_Path. 
 

Esas olarak 2 rehber kullanaca��z.: 

Library_Path=${POVRAY}/include // Povray� in include dosyalari i�in 
Library_Path=${HOMEPOV}/include //kullan�c� include dosyalar� i�in 

Bu, uygun tan�ma dosyas�n� olusturmak i�in, 'pov' dilinin yaz�m sisteminin nas�l prati�e koyuldu�udur. Buna daha sonra gelece�iz.

Povray'dan en y�ksek derecede ��kt� alabilmek i�in bilmek zorunda oldu�umuz include dosyalar�n�n bir toplulu�u vard�r.Kodumuza dahil edilebilen ve geli�tiicilerin be�enisine customize edilmi� kaynaklar�n bir k�t�phanesidir. 
 
Baz� Bilinen include dosyalar�: 

#include "colors.inc" 
#include "textures.inc" 
#include "shapes.inc" 
#include "finish.inc" 
#include "glass.inc" 
#include "metals.inc" 
#include "stones.inc" 
#include "woods.inc" 
#include "atmos.inc" 

 

Povray �stelik ko�ullara ba�l� ifadeleri ve d�ng�leri harekete ge�iren y�nergelere sahiptir. Povray'in ilk s�r�m� d�ng�ler ve ko�ullara ba�l� ifadeler i�in y�nergelerden yoksundur. Bundan ba�ka, ekrandaki ��elerin tanimlamasi herhangi bir s�rada ortaya ��kabilir ve sonu�ta geli�tirici, geleneksel programlama dillerinden b�y�k bir zihinsel hareket getirmek zorundad�r. Ekranda ��elerin bildirisinin s�ras�, hala konuyla ilgili de�ildir, fakat d�ng�ler benzer sat�rlar�n yaz� kalabal���ndan geli�tiriciyi kurtar�r ve ko�ullu sat�rlar �rne�in, animasyonda kullan�lan clock de�erine g�re bir ekran tan�mlamam�za izin verir. Bir sonraki makalede karma��k cisimleri tart��t���m�z zaman ko�ullu ifadelerin bir �rne�ini verece�iz. 

�ok fazla dil y�nergeleri vard�r.(# ile ba�layan), fakat biz burada g�sterilenlerden ikisinin �st�nde duraca��z. Declare ve include , b�y�k yo�unlukla en s�k kullan�lanlard�r. 

De�i�ik �e�itlerin sabitleri, mant�kl� i�letmenler, ba�lant� i�letmenleri, vekt�rler i�in i�letmenler, �nceden tan�mlanm�� fonksiyonlar vb. gibi di�er programlama dilleriyle �ok benzer dil �zelliklerini tart��may� atlayaca��m. 

Dilin ay�rt�lm�� kelimlerinden onlar� ay�rmak i�in kimliklendirici etiketlere en az�ndan bir b�y�k harf kullanmak daha uygun olur. 

Animasyon Hakk�nda Temeller

Dealing with this issue so early on deserves a short explanation 

Bir g�r�nt� bir bin kelimeye e�ittir diye s�k s�k s�ylenir ve bir ���n zerresinin fonksiyonelli�ini a��klamaya �al��t���n�z zaman bu �zellikle do�rudur.Herbir genel d���nceyi bollukla resimlemeye �al��aca��z, aksi halde, okuyucu bu makaleyi izleyebilmek i�in kendi �rneklerini kullanarak a��klamalar� test etmek i�in kod yazmaya zorlayacakt�r. Bu Povray dizileri i�erisinde �ok g�r�nt� dahil edebilmek i�in temel sebeplerden biridir. Amac�m�z It is often said that an image is worth a thousand words, and this is especially true when we try to explain the functionality of a ray tracer. We will try to illustrate abundantly each concept, otherwise the reader would be force to write code to test the explanations using his own examples in order to follow the article. This is one of the main reason for including so many images in the Povray series. Our hope is that consulting the images included might be sufficient to remind the reader of the concept studied avoiding having to go through the text once more. Sometimes an image is not sufficient and instead we require a sequence of them to appreciate small differences between images and special effects. This is why we see justified to discuss animations at this moment. 

Povray g�r�nt�lerin bir uyumunu �retebilmek ve onlar� bir kerede diske kaydedebilmek i�in kendi kendini k�s�tlar. Bu noktada, sadece �ok basit bir �rnekle ilgilenece�iz. I��n zerresini uyum i�inde �retebilemk i�in Povray limits itself to generate a sequence of images and save them to the disk one at a time. For the moment we are only interested on a very simple method. The ray tracer will be launched several times passing each time a number that select the image in the sequence to be produced. In order to re-launch multiple times Povray there are some nice options that can be added to the *.ini file specially thought for generating animations:

Canland�r�m i�in ba�lat�m dosyas� �rne�i: 

Initial_Clock = 0.0 
Final_Clock = 2.0 
Initial_Frame = 1 
Final_Frame = 200 
Subset_Start_Frame = 51 
Subset_End_Frame = 75

 
  Bir �nceki makalede animasyonlar i�in tan�ma dosya �rnekleri *.ini dosyalar�n� �retebilmek i�in basit bir program �nerdi�imizden dolay�, Povray'in kullan�m�n� kolay ve kullan��l� yapmak, animasyonlar�n �retimeye izin vermek i�in Povray'i g�ncellemeyi izin verir.

Yeni �erit olarak birka� projenin �tesinde payla��lan  bir ek include rehberine sahiptir. '$HOME/dat/pov/include'. Bu kullan�c� k�t�phanelerini yerle�tirmek i�in ideal bir yerdir. 

Pov ver 2.0

Example of an *.ini file: 
-----------------------------------------------8<-----------------

#!/bin/bash
#####################################################################
#  Yazar: Antonio Castro Snurmacher  (Feb-1998)
#
#       pov (ver 2.0)
#
#       Esta versi�n esta dedicada a
su inclusi�n en la
#       revista LinuxFocus  
(freeware)
#
#  Esta version (2.0) incorpora posibilidad de generar animaciones
#
#  Requiere 'xv' e 'imagemagick (convert,animate) '
# 
#  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 traduccion 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. 
# 
#       Bu s�r�m This version is writen for its
inclusion in the              
#       magazine LinuxFocus (freeware)
   
#
#  Bu s�r�m (2.0) animasyonlar� �retebilme yetene�ine sahiptir.         
#
#  'xv' ve  'imagemagick gerektirir. (convert,animate) '
# 
#  Bu program kopya hakk�na sayg� g�sterildi�i s�recec kullan�labilir, da��t�labilir ve de�i�tirilebilir.
#   Bu ba�l�k hi�bir de�i�iklik gerektirmeden her zaman aynen dahil edilecektir.
#   
#
#  �eviriler orijinal ba�l�k metnini korudu�u takdirde bir sonraki �eviriyi ekle. 
#
#  Yazar koddan dolay� her �e�it ekonomik kazan�tan  feragat eder
ve kullan�mdan dolay� t�reyen m�mk�n zararlar i�in sorumlu de�ildir.
# 
#  Elektronik Posta ([email protected])
# 
#####################################################################
uso(){
   echo "Usage: pov <project <size=0..6 <quality=1..11 "
   echo "    [ <Initial_Frame <Final_Frame
<Initial_Clock <Final_Clock"
   echo "      [ <Subset_Start_Frame
<Subset_End_Frame ] ]"
   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 "Projects should be located in a directory within        "
   echo "${HOMEPOV} and the same base name for the directory and
the "
   echo "main *.pov file will be used."
   echo "(STD) Otomatik belirlenen standart ��z�n�rl�kt�r."
   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;;
      *) uso
   esac
}

quality(){
   case $1 in
   1) ;;
   2) ;;
   3) ;;
   4) ;;
   5) ;;
   6) ;;
   7) ;;
   8) ;;
   9) ;;
   10) ;;
   11) ;;
       *) uso
   esac
   export Quality=$1
}

#############################################################
Single(){ 
Cat <<-FIN  ${PREFIX}.ini
   Output_File_Name=${PREFIX}.tga
   Post_Scene_Command=xv ${PREFIX}.tga
FIN
}

#############################################################
SubSet(){
Cat <<-FIN  ${PREFIX}.ini
   Subset_Start_Frame=$Subset_Start_Frame
   Subset_End_Frame=$Subset_End_Frame
FIN
}

#############################################################
Animation(){
Cat <<-FIN  ${PREFIX}.ini
   Output_File_Name=${PREFIX}.tga
   Initial_Frame=$Initial_Frame
   Final_Frame=$Final_Frame
   Initial_Clock=$Initial_Clock
   Final_Clock=$Final_Clock
FIN
if [ $NumParm == 9 ]
   then 
      SubSet
Fi
Cat <<-FIN  ${PREFIX}.ini
   Pre_Scene_Command=rm -f \`ls --color=none
${PREFIX}*.tga.gif\`   
   Pre_Frame_Command=rm -f \`ls --color=none
${PREFIX}*.tga\`   
   Post_Frame_Command=convert %o %o.gif
   Post_Scene_Command=animate -delay $DELAY  \`ls -tr
--color=none ${PREFIX}*.tga.gif\` 
FIN
}

####################### main ##############################
export HOMEPOV=${HOME}/dat/pov
export PROYECT=$1
export PREFIX=${HOMEPOV}/${PROYECT}/${PROYECT}
if [ $# != 3 ] && [ $# != 7 ] && [ $# != 9 ]
   then uso
fi
NumParm=$#
if [ $NumParm -le 3 ] && [ grep Clock ${PREFIX}.pov  /dev/null
2&1 ]
   then 
      echo "No econtrado identificador Clock en el
fuente"
      uso
fi
export POVRAY=/usr/local/apli/povray/povray3
size $2
quality $3
Initial_Frame=$4
Final_Frame=$5
Initial_Clock=$6
Final_Clock=$7
Subset_Start_Frame=$8
Subset_End_Frame=$9

NumClocks=`expr $Final_Clock - $Initial_Clock`
if [ $NumClocks -gt 0 ]
   then if [ $NumClocks -le 40 ]
           then export
DELAY=`expr 4000 / $NumClocks`
           else export
DELAY=100
        fi
   else export DELAY=4000
fi

if [ $SAVE == "yes" ]
   then newversion
fi
cat <<-FIN  ${PREFIX}.ini
   Width=$Width
   Height=$Height
   Quality=$Quality
   Library_Path=${POVRAY}/include
   Library_Path=${HOMEPOV}/include
   Input_File_Name=${PREFIX}.pov
   Output_to_File=on
   Output_File_Type=t
   verbose=on
FIN
if [ $NumParm == 3 ]
   then ## Single image
       Single
   else ## Animation
      Animation
Fi
#montage ${PREFIX}.tga.* ; animate ${PREFIX}.

#   Output_File_Type=t
## Others hight performace options ##
#   Antialias_Depth=3
#   Antialias=On
#   Antialias_Threshold=0.1
#   Jitter_Amount=0.5
#   Jitter=On

# Low nice value just in case you want to run other processes
nice -20 x-povray ${PREFIX}.ini 

if [ $SAVE != "yes" ]
    then echo "!! Dikkat  !! Kopya(backup?) dosya �retilmedi. "
fi

---------------------------8<-----------------------------------
 
  Bazen Povray d���nda harici yararl� sistemler kulland�k. �rne�in; animasyonlar� g�rselle�tirmek i�in imagemagic'den yararl� "animate" ve "convert" '� kulland�k. 

Enrique Zanardi'ye bir keresinde Povray i�in bir modellemenin olup olmad���n� sordu�um zaman,Debian i�in Povray paketinin bak�c�s� ve devaml�la�t�r�c�s� , �unu yazd�: 

ScEd kulland�m.(�stelik Debian'da kullan��l�). Bir kere kulland���n�z zaman �ok basit.Kullan�c��lar kendi "token"(belirti,iz, g�sterge)'lerini tan�mlayabilmeleri nedeniyle, nas�l karma��k oldu�u sorun de�il, bir Scheme yorumlay�c�s� kullan�larak derlenebilir. �nsanlar �stelik Ac3D'yi �nerdiler, fakat �zg�r olmad���na inan�yorum.

Animasyonlar� �retebilmek i�in bir di�er y�ntem vard�r. Bu y�ntemler Povray'in ilk s�r�m�yle beraber �ok tan�d�k oldu, fakat hala ge�erli bir se�enektir. Povray'i birka� kere launch eden bir d�g�y� �reten harici bir programdan olu�ur.D�ng�n�n herbir tekrar yap���nda, program ana kaynakta '#include' ifadesine ekelenen bir dosya �retir, bu dosyalardan herbirisi o anki durumla ilgili bilgi i�erir. 

�kinci y�ntemi g�steren C kodu par�as� �udur: 

 
----------------------8<--------------------------------------------- - 
for(Frame=1; Frame < UltimoFrame; Frame++){
   fi=fopen("pajaro.inc", "w");
   fprintf(fi, "#declare PosX_pajaro1 = %d\n",
FuncionPosX_pajaro1(Frame));
   fprintf(fi, "#declare PosY_pajaro1 = %d\n",
FuncionPosY_pajaro1(Frame));
   fprintf(fi, "#declare AnguloAlas_p1 = %d\n",
FuncionAngAlas_p1(Frame));
   fclose(fi);
   sprintf(comando, "povray -ipajaro.pov -opajaro%04d.tga", Frame);
   system(comando);
}
----------------------8<----------------------------------------------&nb sp;
 

Bir sonraki b�l�mde d�nmelerin ve yer de�i�tirmelerin ayr�ntalar�n� g�steren animasyonlar�n bir �rne�ini test edece�iz. 

3 Boyutlu D�n���mler

Birka� 3 boyutlu d�n���m bir cisim �zerine uygulanabilir. �stelik cisimler bir topluluk olabilir ve ayn� 3 boyutlu d�n���mler toplulu�a bir b�t�n olarak uygulayacak, �rne�im, yer de�i�tirmeler� d�nmeler, �l��leme 

Konum

Bir cismin konumu <x,y,z> koordinatlar�yla belirlenir. Koordinat baslang�c�nda merkezlenmi� cisimleri tan�mlamak genel bir uygulamad�r. 

Her cisim bir translation komutu kullanarak ilk konumundan tan�mlanabilir <x,y,z> b�lgesine ta��nabilir. Yer de�i�imlerinin datas�n� en iyi �ekilde g�sterebilmenin yolu i�in vekt�rler vas�tas�ylad�r. Vekt�rler POVRAY'da �ok s�k kullan�l�r. Bir vekt�r i�in x, y, z bile�enleri ile genel, k�sa bir rakam ve i�aret sistemi <x,y,z>' dir; e�er t�m bile�enler ayn� ise, <24, 24, 24 =<24. olur. POVRAY 3 vekt�r� �nceden tan�mlar: x=<1,0,0 y=<0,1,0 ve z=<0,0,1. Sonra 3*y = <0,3,0  ve -2*x = <-2,0,0. 

Ekranda cisimleri nereye yerle�tirece�imizi planlamak i�in kalem ve silgiyle bereber �a�l�mam�z s�k s�k gereklidir. Deneme ve yan�lmayla cisimler i�in en iyi b�lgeyi belirleyebilelim diye, bir ba�lang�� tahmininden ba�lamk i�in ve d���k ��z�n�rl�kte ve d���k kalitede cisimleri �retmek i�in POVRAY'i kullanmam�za yard�m eder. 

POVRAY'da i�e yarar 3 boyutlu d�n���mler �unlard�r: 

  Rotate <VECTOR 
  scale <VECTOR 
  translate <VECTOR 

Yer de�i�tirmesel ve d�nmesel d�n���mler hem cisimleri karma��k bir ekrnada kurmak(yerle�tirmek manas�nda olabilir) hem de animasyonlar i�in �ok kullan��l�d�r. 

Yer De�i�tirmeler

Her cisim son konumundaki koordinatan ilk konumundaki koordinati ��kartarak hesaplanan bir vekt�r� eklemekle farkl� bir b�lgeye ta��nabilir. Geometrik olarak yer de�i�im vekt�r� bir ilk konumundan son konumuna giden bir vekt�r olarak g�sterilebilir.Bir �rnek: 

Sphere { <2, 2, 2, 10 
    pigment { White } 
    translate <-3           &nb sp;      //  Remember <-3 = <-3, -3, -3 
  } 

Sonu� <-1, -1 -1>'de merkezlenmi� yar��ap� 10 olan bir k�redir. 

D�nme

Cisimler koordinatlar�n merkezine do�ru giden bir eksen boyunca d�nd�r�lebilir. Bu d�nmeleri a��klayabilmek i�in genel bir kullan�md�r ve bu cismin(ba�lang�� noktas�nda merkezlenmi� g�sterilmelidir) ilk olarak uygun bir y�nlendirmeye d�nd�rlmesinden dolay� sonra en son konumuna yer de�i�tirilir. Kar��t i�lem (ilk yerde�i�tirme ve daha sonra d�nme) benzer sonu� vermeyecektir?(yield) 

Bir d�nme bir d�nm ekseni ve bu eksen �zerinde d�nmenin a��s� belirtilerek tan�mlanmak zorundad�r. D�nmenin anlam� sol-el kural�n� izler. ( Sol elini pa�marma��n pozitif ekseni g�sterecek �ekilde kald�r ve sonra yumru�unu kapat. Kapanm�� yumru�un hareketinin y�n� d�nmenin anlam�n�? verir. 

POVRAY'da bir d�nmeyi tan�mlaman�n iki yolu vard�r: "eksen * a��" veya "X, Y ve Z eksenlerindeki 3 d�nmeyi g�steren <n, n, n" . Baz� �rnekler: 

rotate x * 45 = rotate <45, 0, 0 
rotate <45, -30, 20 = rotate x*45 rotate y*-30 rotate z*20 
rotate 20*z = rotate z*20 
rotate y*90 x*90 = rotate <0, 90, 0 rotate <90, 0, 0 
rotate y*90 x*90 != rotate <90, 90, 0 

En son �rnek bir e�itlik de�ildir ve hatalar� s�k s�k ba�g�steren bir durumdur. D�nmenin us�l� �ok �nemlidir. <n,n,n d�nmesini kulland���n�z zaman, d�nmeler X, Y, Z s�ras�nda yerine getirilir. Ve hernezaman farkl� bir d�nme us�l� gerekirse ? . E�er istenirse geli�tirici "radians" fonksiyonunu kullanarak a��lar� radyan cinsinde kullanabilir. POVRAY'da matematiksel aritmeti�in de�erini kolayla�t�ran bir�ok matematiksel fonksiyon vard�r.
 
 
 

�l��leme

Cisimlerin ebatlar� �l��leme d�n���mleriyle de�i�tirilebilir. Bir cismin X,Y veZ y�n�n� �l��lemek i�in 3 say� kullan�l�r. Bu bir cismi yass�la�t�rmaya, boyutunu art�rmaya, azaltmaya izin verir.
 

Burada bir k�re kullanaraktan bir elipsoidi in�a etmenin bir yolu verilmi�tir.

sphere { <0,0,0, 10 
    pigment { White } 
    scale <1,4,10 
  } 
 

3 Boyutlu D�n���mler Hakk�nda Son Notlar.

D�n���m ve �l��leme i�lemleri herhangi bir s�rada yerine getirilebilir. Bununla beraber, bir tek d�nme i�lemleri de�i�ikliklerinin yerine getirilmesi i�lemlerin b�t�nl���n� par�alamak a��s�ndan yeterlidir. ve bu nedenden dolay� s�ra �ok �nemli olmu�tur.Burada 3 boyutlu de�i�imle s�ran�n �enmeini g�stermek i�in basir bir �rnek vard�r. K�renin merkezinde d�nmenin ekseni ufukta az�c�k  k���lm��t�r.( Bu �rnek ?)
 
 
 
 

----------------------------------8<------------------------------&nb sp; 
#include "colors.inc" 
#include "textures.inc" 
//##### To launch animation execute: ###### 
//# pov LF2-PlanetBue 4 9 1 100 1 360 # 
//############################### 
#declare RY1 = clock * 5 
#declare RZ1 = 25 
#declare T1 = <5 ,0 ,0 
#declare RY2 = clock 

camera { 
    location < -5, 5, 15 
    look_at < 0, -2, 0 

light_source { <-15, 15, 15 color White} 

sphere { <0, 0, 0 4 
    texture { Shadow_Clouds } 
    rotate y * RY1 
    rotate z * RZ1 
    translate T1 rotate y * RY2 

----------------------------------8<------------------------------&nb sp;

Animasyonu yerle�tirebilmek i�in 'pov'un yeni s�r�m�n� kullan�r�zve �al���r:

 





pov LF2-PlanetBue 4 9 1 100 1 360 

Bu parametrelerin ne anlama geldi�idir.

  1. (Kaynak dosyas�)Source file $HOME/dat/pov/LF2-PlanetBue/LF2-PlanetBue.pov 
  2. (Ebat)Size 4 = (266x200) 
  3. (Kalite)Quality 9 (en y�ksek) 
  4. Initial frame = 1 
  5. Final frame = 100 
  6. Clock's initial value = 1 
  7. Clock's final value = 360 
�leride animasyonun birka� karesini g�sterece�iz. D�nya gezegeninin ger�ek bir modeli i�in �ok  yeterli de�ildir, fakat bir e�retileme olarak yeterlidir.

Example ../../common/May1998/planetblue.jpg 
 
 

Planeta Azul


 







I��k

I��k kaynaklar� uzayda bir nokta ���k kayna�� olarak tasarland�. Nokta ���k kayna�� boyutsuzdur ve g�r�nmezdir, kamera �����n �zerine  merkezledi�inde hi�bir�ey g�rmeyecektir. Bir ���k kayna�� sadece yan�ndaki cisimler �zerindeki etkileriyle alg�lan�r. Hernekadar benek ���k kayna��n� tan�mlamak m�mk�nsede, hatayla bu nokta  t�m y�nlerde ����� parlat�r. Otomatik se�ilmi� renk beyazd�r ve �stelik bu �zellik ���k kayna��n�n yo�unlu�u ile birlikte de�i�tirilebilir.

Bir g�r�nt� uygun ���klar�ve g�lgeleri �retebilemk i�in bir veya daha fazla ���k kayna�� kulan�labilir. Bununla beraber, ���k kaynaklar�n�n say�s�n�n artmas�, g�r�nt�y� �retmek i�in kullan�lan CPU miktar�n�n artmas� demektir.

Kamera

POVRAY'da kamera, ekranda bir g�r�n��� kolayl�kla belirtebilen bir soyuttur. Parametrelerin say�s� kameray� ve ekran�n g�r���n� kontrol eder: g�r�� alan� ve a��s� ve kameran�n y�n�.POVRAY'da kameray� tan�mlaman�n birka� y�ntemi vard�r, �rneklerimizde kullan�lan bir tanesi �ok esnektir ve kullan�m� kolayd�r. Y�ntemlerin hepsi e�it olarak kullan��l� de�ildir. Y�ntemlerin �o�u �ok sezgisel de�ildir ve sadece eski s�r�mlerle tamamlay�c�l�k a��s�ndan POVRAY'da hala korunmaktad�r.Kameran�n g�r�� alan� ekran�n g�r����n� kontrol eder.


Bu yaz�daki d�zg� (kod) i�in kaynaklar (3342 bayt)

�ngilizce'ye �eviri: Miguel A Sepulveda & Mark Kuchel

© 1998 Antonio Castro
Bu sanaly�renin bak�m� Miguel A Sepulveda taraf�ndan yap�lmaktad�r..