[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輅rece?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軻kleme

ノ??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輅n 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軋 ula?abilirler veya okuyuculara g?r?nt?ler ?zerinde oynama ve de?i?tirme yapma hakk? verilmi?tir

E?er okuyucular Povray段 hen?z sistemlerine y?klememi?se, l?tfen kaynaklar?n yeri, y?kleme ve POVRAY 段n bi輅mlendirilmesi 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輅n eksiksiz bir tekniktir. Pahal? olmayan manada en ger軻k輅k輅lik i軻risinde 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軻kten 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軻k kameram?z?n teorik, foto?rafa duyarl? film i軻risindeki bir noktan?n kar??l??? olur.Herbir nokta daha sonra birbirinden ba??ms?z i?lenir.Povray段,g?r?nt?y? in?a etmek i輅n yap?land?rd?k ve daha sonra harici bir g?r?nt?leyiciyle g?zlenebilir.Povray段 SVGA i輅n 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軋s?ndan ba?lanarak yap?l?r, soldan sa?a, yukar?dan a?a??ya.Bu istek e? zamanl? de?ildir. Povray i輅n en genel yap? bu istek i軻risinde tam olarak in?a edilmi? TGA 24 bittir.

E?er herhangi biri, SVGA i輅n Povray段 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段n 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輅n renderer ???k ?zerindeki etkileri ???k kayna??n?n rengine ve konumuna bakarak hesap eder. Cismin y?zeyi ile ilgili olarak cismin ger軻k konumu .......Bu hesaplaman?n sonucu, cisim i軻risindeki noktalar?n yogunlu?unu ve rengini tan?mlayan ?? de?erli RGB i輅nde belirtilmi?tir.

Bir ?zet dolamba輙? yol

24 bitlik TGA yap?s? 輟k 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輅n:

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輅n:

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輙? Yolun Sonu

Ger軻k kameranin filmi i軻risinde herhangi bir noktadan ayrilan isinlar ayrilir, fakat son rengi hesaplamak i輅n herbir isin, perdedeki herhangi bir cismi kesip kesmedigini belirler.Eger bunu yapiyorsa isin izleri algoritmasi isinin ulastigi b?lge i軻risindeki cismin ?zelliklerini 銹z?mlemeye devam eder.Sonra,karmasik cisimlerin tasarimi i輅n 輟k etkili bir (optimization?) teknik meydana gelir.Bu birinci karmasik cismi ihtiva eden yeni bir g?r?nmez cismin tan?mlanmasindan olusur.Genelde en 輟k 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軻k g?ky?z?" yerine pahali olmayan bir dekorasyon i軻risinde g?r?lebilir.
  3. Deniz y?zeyi bazi dalgalari g?sterir, fakat 輟k ince d?z bir y?zey kullanarak yapilmistir.Sinirin dalga ?ariltilari olmaksizin d?z bir 輅zgiyi g?stermek i輅n 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 軻sit 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輅n 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軻kten a輅klayamayiz.Bu ?rnekle bizim konumuz okuyucuya isin izlerinin dogal ortami taklit etmek i輅n atilimlarini g?stermektir, fakat fizigin dogal kanunlariyla her zaman b?t?n olarak bir yakinma vardir.ヌ?nk? ger軻gin daha b?y?k de?erleri i輅n olusum s?reci yerine ?denecek b?y?k bir bedle vardir.Bazi teknikler digerleriyle ?retilen kusurlari saptamak i輅n en iyileridir.En kesin sonu輹 ve olusum s?reci arasinda bir denge bulmak i輅n en ?nemlidir.

Povray Dili

Povray hakkindaki bu seriler, imkaninin bir y?zeysel gezisinin ?tesine ge軻mez. Povray dili, seriler i軻risinde derin olarak el alinmak i輅n 輟k genistir.Bu sebepten dolayi su anda dilin en ?nemli ?zeelikleri ?zerinde sadece birka? g?r?s belirleyebiliriz.

Povray sik sik benzer sonu輙arin ?stesinden gelebilmek i輅n 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軻k s?zdizimi son derece s?r?mden s?r?me degisir.Su an ki s?zdizim t?m?yle onaylanmis ve belki gelecekte 輟k degisiklige ugramayacaktir.Bagdasabilir sebepler i輅n 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軻nekleri vardir.

ヨrnek:

Benzer dosya yapilari i軻risinde, 1 , 2 veya 3. S?r?mlerden kullanmak i輅n 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輅n gelistiricilere izin verir.

Povray hakkinda bir 輟k iyi kilavuz vardir, l?tfen bunu tercih edin.Burada 輟k ?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軻risinde konumlanir. */

# isareti ile ba?layan ?geler Dil Y?nergesi olarak bilinir.En 輟k 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 軻?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輅n
Library_Path=${HOMEPOV}/include //kullan?c? include dosyalar? i輅n

Bu, uygun tan?ma dosyas?n? olusturmak i輅n, '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輅n 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輅ren y?nergelere sahiptir. Povray'in ilk s?r?m? d?ng?ler ve ko?ullara ba?l? ifadeler i輅n y?nergelerden yoksundur. Bundan ba?ka, ekrandaki ??elerin tanimlamasi herhangi bir s?rada ortaya ??kabilir ve sonu輻a 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 軻?itlerin sabitleri, mant?kl? i?letmenler, ba?lant? i?letmenleri, vekt?rler i輅n i?letmenler, ?nceden tan?mlanm?? fonksiyonlar vb. gibi di?er programlama dilleriyle 輟k benzer dil ?zelliklerini tart??may? atlayaca??m.

Dilin ay?rt?lm?? kelimlerinden onlar? ay?rmak i輅n 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 軋l??t???n?z zaman bu ?zellikle do?rudur.Herbir genel d???nceyi bollukla resimlemeye 軋l??aca??z, aksi halde, okuyucu bu makaleyi izleyebilmek i輅n kendi ?rneklerini kullanarak a??klamalar? test etmek i輅n kod yazmaya zorlayacakt?r. Bu Povray dizileri i軻risinde 輟k g?r?nt? dahil edebilmek i輅n 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輅n kendi kendini k?s?tlar. Bu noktada, sadece 輟k basit bir ?rnekle ilgilenece?iz. I??n zerresini uyum i輅nde ?retebilemk i輅n 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輅n 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輅n tan?ma dosya ?rnekleri *.ini dosyalar?n? ?retebilmek i輅n basit bir program ?nerdi?imizden dolay?, Povray'in kullan?m?n? kolay ve kullan??l? yapmak, animasyonlar?n ?retimeye izin vermek i輅n 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輅n 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軛ir de?i?iklik gerektirmeden her zaman aynen dahil edilecektir.
#  
#
# ヌeviriler orijinal ba?l?k metnini korudu?u takdirde bir sonraki 軻viriyi ekle. 
#
# Yazar koddan dolay? her 軻?it ekonomik kazan輻an feragat eder
ve kullan?mdan dolay? t?reyen m?mk?n zararlar i輅n sorumlu de?ildir.
# 
# Elektronik Posta (acastro@ctv.es)
# 
#####################################################################
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輅n imagemagic'den yararl? "animate" ve "convert" '? kulland?k.

Enrique Zanardi'ye bir keresinde Povray i輅n bir modellemenin olup olmad???n? sordu?um zaman,Debian i輅n 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 輟k 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輅n bir di?er y?ntem vard?r. Bu y?ntemler Povray'in ilk s?r?m?yle beraber 輟k tan?d?k oldu, fakat hala ge軻rli bir se軻nektir. 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軻rir.

ンkinci y?ntemi g?steren C kodu par軋s? ?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輅n vekt?rler vas?tas?ylad?r. Vekt?rler POVRAY'da 輟k s?k kullan?l?r. Bir vekt?r i輅n 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輅n kalem ve silgiyle bereber 軋?l?mam?z s?k s?k gereklidir. Deneme ve yan?lmayla cisimler i輅n en iyi b?lgeyi belirleyebilelim diye, bir ba?lang?? tahmininden ba?lamk i輅n ve d???k 銹z?n?rl?kte ve d???k kalitede cisimleri ?retmek i輅n 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輅n 輟k 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?軋p? 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輅n 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? 輟k ?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輟k 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輅n 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軋lamak a??s?ndan yeterlidir. ve bu nedenden dolay? s?ra 輟k ?nemli olmu?tur.Burada 3 boyutlu de?i?imle s?ran?n ?enmeini g?stermek i輅n 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輅n 'pov'un yeni s?r?m?n? kullan?r?zve 軋l???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軻k bir modeli i輅n 輟k 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軛ir?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輅lmi? 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輅n 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輅n 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 輟k esnektir ve kullan?m? kolayd?r. Y?ntemlerin hepsi e?it olarak kullan??l? de?ildir. Y?ntemlerin 輟?u 輟k 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輅n kaynaklar (3342 bayt)

ンngilizce'ye 軻viri: Miguel A Sepulveda & Mark Kuchel

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

AltStyle によって変換されたページ (->オリジナル) /