Bu makalenin farkl� dillerde bulundu�u adresler: English Castellano Deutsch Francais Russian Turkce |
taraf�ndan Antonio Castro Yazar hakk�nda: Ben bir bilgisayar uzman�y�m ve bir�ok Unix t�revi ile �al��ma �ans�m oldu.Ayr�ca yaz�l�m tasar�m�ndan sistem y�neticili�ine kadar pek�ok konu ile u�ra�t�m. ��erik: |
�zet:
Bu makalede nas�l kaplama kullan�laca��na bakaca��z. Daha �nceki say�larda kaplamalar� zaten teorik d�zeyde anlatm��t�k. (I, II, III).
Povray'de bir nesne yarat�rken birbirinden farkl� iki �ey hakk�nda karar vermeliyiz:
Renk �r�nt�lerini ve y�zeylerin de�i�ik �ekilde bitirilmi� formlar�n�n �r�nt�lerini kullanmak konusunda Povray'in �ok y�nl�l���n� g�rm��t�k, ama dahas� da var.
|
Kaplamalar�n kullan�m�ndaki de�i�ik y�ntemleri g�stermek i�in pek �ok etmen tan�t�ld�. Resim kullanarak yass�, silindirik ve k�resel nesneleri kaplamas�n� ��renece�iz.
Yeni olas�l�klar� ke�fetmek icin yard�m sayfalar�na bakmak her zaman kullan��l�d�r. S�z konusu durumda ba�ka bir �ekil t�r� de vard�r. Bunlar kendi �zel fonksiyonlar�na sahiptirler. Bu fonksiyonlar, hen�z kullanmad���m�z ve pek s�k kullan�lmayan ama �nceden bahsi ge�en t�rlerden herhangi biri kadar kullanmasi kolay olan burulmal�(spiral) nesneleri ele alirlar.
Nesneleri resimlerle kaplama tekni�inin �ok g��l� oldu�una dikkat edilmelidir. Geni� bir kaplanm�� resim repertuar� ile hemen hemen her�ey yap�labilir. Ki�i, kaplama tekni�i olarak hep ���nc� ki�ilerce yarat�lm�� resimleri kullanma yoluna gidebilir. Ancak bu �ekilde kaplama dizayn� konusunda Povray'in sa�lad��� yarat�c� esnekli�ine sahip olunamaz. Ba�kal��� sa�layan ba��ms�z desenler, renk da��l�mlar�, ak�� �e�itleri ak��lar�n yo�unlu�u gibi etmenlerdir.
Tarifleri �ekillerle destekleyece�iz. Sahnenin yarat�lmas�nda kullan�lan t�m resimleri ve sahnenin pov-kodlar�n�n tamam�n� buradan tar.gz bi�iminde elde edebilirsiniz.
�imdi ise sahnenin de�i�ik a��lar�n� ve ayr�nt�lar�n� anlataca��z.
|
Ana kod-listesinden bir b�l�m |
---|
#declare Papel = object { box { <0,0,0,> <1,1,1> } texture { pigment{ image_map { gif "gifs/hoja.gif" } } finish { ambient 0.4 diffuse 0.6 } } rotate x*90 scale <12, 0.001, 20> |
�rnek: Disquete.inc |
#declare TamDisquete = 5; #declare PortadaDisquete = "gifs/disquete1.gif" #include "Disquete.inc" object { Disquete rotate x*90 translate <80, -10, 147> } |
Disquete.inc |
#declare Epsil = 0.0001; #declare Disquete = object { box { <0, 0, 0> <1,1,1> texture { pigment{ image_map { gif PortadaDisquete once } } } translate <-0.5,-0.5,-0.5> } //Primero centrar el cubo en <0,0,0> translate <-0.5, -0.5, -0.5> scale <TamDisquete,TamDisquete, TamDisquete/10 > } // end 'Disquete.inc'; |
�rnek: Libro.inc |
#declare LargoLibro = 20; #declare AnchoLibro = 12; #declare GruesoLibro = 3.5; #declare PortadaLibro = "scan_gif/bookp2.gif" #declare LomoLibro = "scan_gif/bookl2.gif" |
Libro.inc |
#declare Epsil = 0.0001; #declare TextureLibro = texture { pigment { gradient z color_map { [0.0 colour White ] [0.1 colour Gray90 ] [0.2 colour White ] [0.3 colour Gray95 ] [0.4 colour White ] [0.5 colour Gray80 ] [0.6 colour White ] [0.6 colour Gray95 ] [0.8 colour White ] [0.9 colour Gray90 ] [1.0 colour Gray85 ] } // end colourmap; } // end pigment; finish { ambient 0.3 diffuse 0.7 } scale <1, 1, 0.3> } // end Texture; #declare Libro = object { union { box { <0, 0, 0> <1,1,1> texture { TextureLibro } translate <-0.5, -0.5, -0.5> } // Portada del libro; box { <0,0, 0> <1, 1, 1> texture { pigment{ image_map { gif PortadaLibro once } } } translate <-0.5, -0.5, -0.5> scale <1-Epsil, 1-Epsil, 1+Epsil> } // end box; // Lomo del libro; box { <0,0,0 > <1 ,1 ,1 > texture { pigment{ image_map { gif LomoLibro once } } } translate <-0.5, -0.5, -0.5> scale <1-Epsil, 1-Epsil, 1+Epsil> rotate y*90 } // end box; } // end union translate <-0.5, -0.5, -0.5> // Centrar el cubo en <0,0,0>; scale <AnchoLibro,LargoLibro, GruesoLibro> } // end 'Libro.inc'; |
Bu b�l�mde kutuya benzer t�m �ekillerin kaplanmas�nda �ok kullan��l� olan bir y�ntemden bahsedece�iz. Bizim sahnemizde bir sayfa ka��t tamam�yla yass� bir kutu gibi d���n�lebilir. Disketler birkac milimetrelik kal�nl�klar� ile ger�ek birer kutu gibi alg�lanabilir.
Her iki durumda da nesneyi kaplamak i�in tek bir resim kullanaca��z. Hepsinde de yass� nesneler i�in yans�tma kullan�lacakt�r. Bir kitap s�z konusu oldu�unda kapak i�in bir ve arkas� i�in de ba�ka bir resim kullanaca��z. Bu nesnelerin herbirinin yap�lanmas�n� a��klayaca��z.
Bir sayfa ka��t i�in bir k�p tan�mlamak gerekli de�ildir. Resim yukar� do�ru de�il de kameraya do�ru yans�t�l�r (projekte edilir). K�p� x ekseninde 90 derece d�nd�rd�k. B�ylece resmin geri kalan k�sm� yukar� do�ru �evrilmi� ve do�ru oranlara sahip olmu� oldu. Sayfaya bir kal�nl�k verdik.
Disketler include ifadesi ile yap�lan nesnelerdir. Disketin boyutlar�n� ve resmini kurmak i�in parametre olarak kullanaca��m�z de�erlere ba�lang�� de�erlerini vermek gereklidir.
Sol tarafta "Disquete.inc"i liste olarak g�rebilirsiniz.
Daha cok parametreye gereksinim duydu�umuz i�in kitap tasarlamak biraz daha kar���k hale gelecek.
Kitab�n arka y�zeylerini temsil etmek i�in bir yerden bir yere giderken renk da��l�m� olan bir �r�nt� kullanmam�z gerekir.
Kitab� merkezi <0,0,0> olan d�zg�n bir k�reymi� gibi yap�land�rarak arzu edilen boyutlar� veriyoruz. Bu �ekilde k�p�n �n�ne yerle�tirilecek olan arkan�n ve kapa��n konumunu hesaplamak daha kolay olur. Arka ve kapak sanki �ok ince kutularm�� gibi birbirine eklenmi� oldu.
|
Epsil'i insan g�z� ile g�r�lemeyecek kadar k���k bir b�y�kl�k olarak tan�mlad�k. Ayn� zamanda s�f�ra b�lmeye e� olmayacak ya da de�i�ik neslerin ayn� yeri kaplayan yass� y�zeylerinde garip etkilere neden olmayacak kadar b�y�k tutulmal�d�r.
Sol tarafta kitaplar icin kullan�lan include dosyas�n� g�r�yorsunuz. Her kenar� i�in ayr� olmak �zere alt� resim alan daha genel bir nesne yap�land�r�lmas�n� okuyucuya al��t�rma olarak b�rak�yoruz.
A�a��da �izgili baz� desenler g�r�yorsunuz.Bunlar y�zeyin kabartmas�n� temsil ediyor ve cam�, kesme cam gibi dekore etmek i�in kullanaca��z. Resmi, nesnenin de�i�ik noktalar� �zerinde normal bile�eni de�i�tirmek i�in bir �r�nt� olarak kullan�yoruz. Daha fazla ayr�nt� i�in resimleri t�klayabilirsiniz.
|
Cam bardak i�inde sa� ucu su hizas�nda biten daha dar ba�ka bir boru olan konik bir boruya benzetilebilir. Yani kristal ve su ayn� �ey gibi davran�r. B�yle olmas�n�n nedeni basitle�tirmek i�in su ve cam�n ayn� k�r�lma sabitesine sahip oldu�unu varsaymam�zd�r. Sonu� tek bir materiyalin geometrik formudur. K�r�lma indislerinin �ok yak�n olmas�ndan dolay� su ile dolu cam g�r�nmez oldu�undan bu �ok uygundur.
Su �i�esi biraz daha incelikle haz�rlanmal� ��nk� pek �ok basit �eklin (silindirler, borular, k�re kesimleri) birle�mesinden olu�ur. Ancak bu makale i�in bu y�n� ile ilgilenmiyor; �imdilik sadece cam bardakta kullan�lan yolun biraz daha karma����n�n kullan�ld���n� s�ylemekle yetinece�iz.
Bazen haz�r bir resim ve povray ile yarat�lm�� bir �r�nt� aras�nda se�im yapma �ans�na sahip olabiliriz. Uygun bir renk haritas� ile duvarlar yumru t�r�nde �r�nt� kullanarak m�kemmel bir �ekilde temsil edilebilir.
Kaplamay� k��enin iki duvar� �zerine projekte etmemiz gerekti�inden kaplamay� y eksenine g�re 45 derece d�nd�r�yoruz. Bu da �l�ekte �arp�kl�klara neden olacakt�r. �l�e�i kaplamaya uygun olarak d�zeltecek olmam�z�n nedeni budur.
Bu detaylar sahnenin son kod listesinde g�r�lebilir.
Nesneyi yap�land�rmak ilk bak��ta g�r�ld���nden daha kolayd�r. Di�er �rnekte rengi projekte ettik. Ancak yans�tma k�resel cisimler i�in de uygundur. 'map_type 1' fi�(socket) bronz, taban ise a�a�. Povray'in olu�turulmu� kaplama katalo�una bakarak en �ok istedi�iniz a�ac� se�ebilirsiniz.Burada biz 'DMFDarkOak' kulland�k.
Her ne kadar evren basit formlarla yap�lsa da hangi s�rada olu�turuldu�unu g�rmek ilgin�. Bilinen �u ki nesneleri herhangi bir s�rada birle�tirmek ayn� �ey de�ildir. Bu �rnekte, b�l�mleri do�ru d�zg�n yerle�tirmek i�in pek �ok eksen var.
T�m bunlar� sondaki tam kod listesinde g�rebilirsiniz.
|
Sahnedeki su barda��, kalem, zemin, masa gibi daha fazla nesne hakk�nda konu�ulabilir. Ancak yeni bir�eyler ��kmaz. Sadece masa i�in, parlakl���n� ve yans�t�c�l���n� sahnede g�r�ld��� hale getirmek i�in bir kaplama kulland���m�z ve onu i�ledi�imiz s�ylenilebilir.
Bir kez t�m elemanlar yerle�tirildi mi cose(Common Open Software Environment)a geri d�n�p de�i�ik ���kland�rma varyasyonlar�n� deneme zahmetine katlanmaya de�er. Tavan ve merkez aras�na yerle�tirilmis genel bir ayd�nlatma kulland�k.
Sahnenin son resmine t�klayarak daha parlak ve b�y�k halini g�rebilirsiniz.
Makaleyi bitirirken sahnenin kodlar�n� tam olarak yeniden veriyoruz.
Final Listing Estudio.pov | |
---|---|
//////////////////////////////////////////// // // Autor: Antonio Castro Snurmacher // //////////////////////////////////////////// #include "colors.inc" #include "textures.inc" #include "glass.inc" #declare Plastico = finish { ambient 0.4 diffuse 0.45 reflection 0.15 phong 0.3 phong_size 20 } #declare Camera_pl_general = camera { location <0,45, -20> look_at <80, -20, 200> angle 20 } #declare Camera_detalle_vaso = camera { location <0,45, -20> look_at <97,-6, 170> angle 3.2 } #declare Camera_detalle_botella = camera { location <0,45, -20> look_at <45,0, 190> angle 8 } #declare Camera_detalle_papel = camera { location <0,45, -20> look_at < 85, -10, 145> angle 10 } //camera { Camera_detalle_botella } //camera { Camera_detalle_vaso } //camera { Camera_detalle_papel } camera { Camera_pl_general } // Fuente de luz blanca en el techo light_source { <0, 40, 90> color White } // Fuente de luz tenue de mesa light_source { <0, 40, 190> color White spotlight radius 8 falloff 12 tightness 10 point_at // < 70, -10, 160> < 65, -10, 155> } #declare Cubilete = object { intersection { cylinder { <0,0,0> <0,6,0> 2 } cylinder { <0,1,0> <0,6.5,0> 1.9 inverse } } } #declare GloboTierra = object { union{ union{ sphere { <0,0,0> 1 texture { pigment{ image_map { gif "gifs/geoideok.gif" map_type 1 // Esfera } } finish { Plastico } } interior{ I_Glass} //rotate y*25 rotate y*-25 } cylinder { <0,-1.28, 0> <0, 1.28, 0> 0.1 texture { Bronze_Metal } interior{ I_Glass} } intersection { sphere { <0,0,0> 1.28 } box { <0,-1.5,-0.06> <1.5, 1.5, 0.06> } sphere { <0,0,0> 1.1 inverse } texture { Bronze_Metal } interior{ I_Glass} } rotate z*-20 } union{ // pie cylinder { <0, -1.1, 0> <0, -1.8, 0> 0.15 texture { Bronze_Metal } interior{ I_Glass} } cone { <0, -1.8, 0> 1 <0, -1.6, 0> 0.7 texture { pigment { DMFDarkOak } scale <0.3, 0.3, 0.3> } interior{ I_Glass} } } } translate <0, 1, 0> scale <7,7,7> } #declare VasoAgua = object { intersection { cone { <0, 0, 0> 2.5 <0,7,0> 2.9 } cone { <0, 4, 0> 2.45 <0,7.5,0> 2.8 inverse } } texture { Glass2 normal { bump_map { gif "gifs/vaso_norm.gif" map_type 2 // Clindro bump_size 0.5 } } scale <7,7,7> } interior{ I_Glass} } #declare BotellaAgua = object { union { intersection { merge { cylinder { < 0, 18.1, 0> < 0, 20 , 0> 0.9 } cone { < 0, 14 , 0> 2.9 < 0, 18.1, 0> 0.9 } sphere { < 0, 12.5, 0> 3.3 } cylinder { < 0, 0 , 0> < 0, 12 , 0> 3.2 } } merge { cylinder { < 0, 18 , 0> < 0, 20.1, 0> 0.8 } cone { < 0, 13.9, 0> 2.8 < 0, 18.0, 0> 0.8 } sphere { < 0, 12.4, 0> 3.2 } cylinder { < 0, 6 , 0> < 0, 12.5, 0> 3.1 } inverse } texture { Glass2 normal { bump_map { gif "gifs/botella_norm.gif" map_type 2 // Clindro bump_size 1 } } scale <15, 15, 15> } interior{ I_Glass} } |
cylinder { < 0, 20, 0> < 0, 19, 0> 1.1 // Tapon texture { pigment {Blue} finish { Plastico } } // fin Tapon interior{ I_Glass} } } } #declare Papel = object { box { <0,0,0,> <1,1,1> } texture { pigment{ image_map { gif "gifs/hoja.gif" } } finish { ambient 0.4 diffuse 0.6 } } interior{ I_Glass} rotate x*90 scale <12, 0.001, 20> } #declare RadLapiz = 0.3; #declare Lapiz = object { union { cylinder { <0,0,0> <0,7.5,0> RadLapiz texture { pigment { DMFDarkOak }} interior{ I_Glass} } cylinder { <0,7.5,0> <0,8.5,0> RadLapiz texture { Gold_Metal } } cone { <0,0,0>RadLapiz <0,-0.8,0> 0.1 texture { pigment { White_Wood } } interior{ I_Glass} } cone { <0,-0.8,0> 0.1 <0,-1, 0> 0 texture { pigment { Black } } interior{ I_Glass} } } } #declare Paredes = object { box { <-100,-50, -50> <100,80, 200> } texture { pigment{ image_map { gif "gifs/gotelet.gif" } } finish { ambient 0.3 diffuse 0.6 } rotate y*45 scale <5, 7, 5> } interior{ I_Glass} } #declare TextuSuelo = texture { pigment { checker color Black color Blue} } #declare Suelo = object { plane { y, -49.9 } texture { PinkAlabaster } interior{ I_Glass} } #declare Mesa = object { union { box { < -80, -10.001, 140> < 100, -13 , 200> } box { < -79, -50, 141> < -75, -10, 145> } box { < 99, -50, 199> < 95, -10, 195> } box { < -79, -50, 199> < -75, -10, 195> } box { < 99, -50, 141> < 95, -10, 145> } } texture { EMBWood1 rotate y*90 rotate x*90 scale <5,5,5> finish { ambient 0.1 diffuse 0.1 specular 1 reflection 0.2 roughness .1 } } interior{ I_Glass} } object {GloboTierra translate <90, -4, 190> } object { Paredes } object { Suelo } object { Mesa } object { Lapiz rotate z*10 translate < 70, -10, 165> } object { Cubilete translate < 70, -10, 165> texture { pigment { White_Wood } } interior{ I_Glass} } object { VasoAgua translate <97,-10, 170> } object { BotellaAgua translate <45,-10, 190> } object { Lapiz rotate z*90 translate < 80, -10+(RadLapiz/2), 155> } object { Papel rotate y *-30 translate < 85, -10, 145> } // ***** Libro LinuxBible ***** #declare LargoLibro = 20; #declare AnchoLibro = 12; #declare GruesoLibro = 4.5; #declare PortadaLibro = "gifs/bookp2.gif" #declare LomoLibro = "gifs/bookl2.gif" #include "Libro.inc" object { Libro rotate x*90 rotate y *-60 translate <36, -10, 165> } // ***** Varios Libros ***** #declare LargoLibro = 20; #declare AnchoLibro = 12; #declare GruesoLibro = 13; #declare PortadaLibro = "gifs/bookp1.gif" #declare LomoLibro = "gifs/bookls1.gif" #include "Libro.inc" object { Libro rotate x*90 rotate y *-90 translate <55, -10, 195> } #declare TamDisquete = 5; #declare PortadaDisquete = "gifs/disquete1.gif" #include "Disquete.inc" object { Disquete rotate x*90 translate <80, -10, 147> } #declare TamDisquete = 5 ; #declare PortadaDisquete = "gifs/disquete2.gif" #include "Disquete.inc" object { Disquete rotate x*90 rotate y*30 translate <90, -10, 165> } // vim: set sw=2 ts=2 et : |
|
G�rsely�re sayfalar�n�n bak�m�, LinuxFocus Edit�rleri taraf�ndan yap�lmaktad�r
© Antonio Castro, FDL LinuxFocus.org Buray� klikleyerek hatalar� rapor edebilir ya da yorumlar�n�z� LinuxFocus'a g�nderebilirsiniz |
�eviri bilgisi:
|
2001-03-17, generated by lfparser version 2.9