plik


ÿþgrafika 3d WspaniaBy [wiat POV-Raya Krzysztof Garus en artykuB pokazuje, czym jest PrzykBadowo, nasz oBówek (Listing 1 POV-Ray  jeden z bardziej i Rysunek 1) to cylinder, od którego odjto znanych programów do two- du|e sfery (ka|da sfera na jedno "stru- Trzenia grafiki trójwymiaro- gnicie"). Je[li chcemy mie oBówek "kan- wej metod [ledzenia promieni (ang. ray ciaty", odejmujemy od niego kilka pBasz- tracing). Jest to ciekawa propozycja dla czyzn. To jest najczstsze wykorzysta- tych, którzy maj du|o czasu, lubi prac nie prymitywów nieograniczonych typu twórcz i maj odrobin wyobrazni. plane (pBaszczyzna) czy poly (powierzch- Praca z POV-Rayem przypomi- nia okre[lona wielomianem n-tego stop- na programowanie: opisujemy w spe- nia). Co ciekawe, te obiekty maj swoje cjalnym jzyku [wiat, który ma "wntrze", np: plane {y, 0} jest pBasz- zosta pokazany, a nastpnie odpa- czyzn skierowan "do góry" i wszystko lamy program, który czyta zapisany poni|ej jest w jej wntrzu  warto o tym w pliku opis, wykonuje ray tracing pamita, gdy robimy cz[ wspóln. CD/DVD i  wypluwa grafik. Na samo hasBo Po uruchomieniu dystrybu- "specjalny jzyk" wiele osób krzywi si. Wygld cji Linux+ Live CD/DVD mo|na Nic dziwnego  wiele rzeczy mo|na Sam ksztaBt obiektu to za maBo. Bdzie on korzysta z POV-Raya. zrobi szybciej i lepiej w takich pro- zrobiony z jakiego[ materiaBu (material), gramach, jak Blender, gdzie wida na który okre[la "skórk" (texture), a je[li jest Na pBycie CD/DVD bie|co to, co si tworzy. Bawic si ona chocia| miejscami przezroczysta, to Na pBycie CD/DVD znajduj si programem POV-Ray (pomijam stosowa- warto okre[li wntrze (interior). pakiety zródBowe i binarne POV- nie Kpovmodeller, o którym pózniej), Tekstur mo|e by kilka np.: Raya, jak równie| przykBad oma- wiany w artykule. Aby wygene- u|ywa si wyobrazni i papieru w kratk. rowa oBówki, nale|y skopiowa texture{T_metal} katalog Linux+/Grafika/povray/ Podstawy texture{T_lakier} olowek na dysk twardy i wykona CaBy [wiat, który widzimy (zwany scen), texture{T_kurz} w nim make. Bezpo[rednio u|y- skBada si z takich elementów, jak obiekty, wajc POV-Raya: povray +io- [wiatBa, kamera (okre[la, jak i skd na co[ Ma to sens, o ile pigmenty tych tek- lowek.pov +FN +oolowek.png patrzymy) oraz efekty atmosferyczne. stur maj przezroczysto[ci. W powy|- +D +w320 +h240 +Q8 +a0.2 Zajmijmy si obiektami. W wielu szym przykBadzie tekstura T_kurz jest +am2 +j0.3 +r3, gdzie +i - plik innych programach s one zbudowane po niemal caBkowicie przezroczysta czy z opisem sceny, +o - plik wyj- prostu z wielu trójkcików. POV-Ray jest [ciowy, +FN - format: PNG, +D bardziej wyrafinowany  mo|e korzysta  pokazuje rendering, +w +h - rozmiar rysunku, +a +am +j +r z prawdziwych bryB geometrycznych. - opcje polepszajce jako[. Obiekt posiada przede wszystkim ksztaBt. Aby go stworzy, mamy do dyspo- O autorze zycji podstawowe bryBy (ang. primitives), Autor pracuje jako administrator takie jak kula, torus, pBaszczyzna itd. na Uniwersytecie Aódzkim. Linuk- oraz zestaw operacji CSG, które mo|na sem zajmuje si od 5 lat, a pro- na nich wykonywa. Te operacje to: gramem POV-Ray jeszcze dBu|ej. Kontakt z autorem: Bczenie (union), scalenie (merge), cz[ autorzy@linux.com.pl. wspólna (intersection) oraz odejmowanie Rysunek 1. PrzykBadowa scenka  oBówki (difference). 34 lipiec 2004 pov-ray grafika 3d póBprzezroczysta, a gdzieniegdzie jest Listing 1. PrzykBadowa scenka z oBówkami widoczna jaka[ kropka. Pod spodem #include "colors.inc" #macro olowek(kolor, s) bdzie T_lakier  niemal jednolity, ale #include "textures.inc" #local wys=6; miejscami z przezroczystymi zadra- difference { paniami. Spod niego wyBania si goBy camera { cylinder { metal. location <-4, 6.2, -9> 0, // punkt 0,0,0 - "dóB" oBówka Sama tekstura ma kilka elemen- look_at y*2 y*wys // <0,6,0> - "góra oBówka tów: pigment (kolor+przezroczysto[), } 1 // [rednica finish (sposób odbijania [wiatBa, l[nienie, light_source {y*400, White} //(przed obskrobaniem) poBysk, odbijanie) oraz normal (symula- light_source {<-1, 4, -2>*100, White} } cja nierówno[ci). light_source {<3, 2, -3>*100, White} // strugamy czubek Tekstury nie musz by jednolite. sky_sphere { Mog si (tak jak pigment/normal/finish) pigment { #local c=0; zmienia w przestrzeni z jednej na drug. gradient y #while (c<1) Do tego mo|e posBu|y wzór (pattern). color_map { sphere { Prostym wzorem jest szachownica (chec- [0 .4 color Black color Brown] y*wys, ker). Dzieli ona przestrzeD na sze[ciany, [.4 color Brown] wys które maj naprzemiennie raz jedn, raz [.45 color Orange] rotate x*75 drug tekstur (pigment/normal/finish), [.58 1 color LightBlue color Blue] translate y*(wys+0.2*rand(s)) np.: S } rotate y*(c*360 S translate -y/2 + (rand(s)-0.5) * 20) texture { checker texture{T_Wood_3A}, scale <1,2,1> } texture{Stone12} } turbulence 0.03 #declare c = c+1/6; } #end Du|o ciekawsze s wzory, które ka|- } texture {White_Wood scale .3 demu punktowi w przestrzeni przypo- plane { translate y*rand(s)} rzdkowuj liczb od 0 do 1. W przy- y, 0 texture {T_rysik} kBadowej scenie z oBówkami u|yBem pigment { } wzoru cylindrical, który punktom na bumps #end osi Y przypisuje warto[ 1.0, a dalej, color_map { w miar oddalania si od tej osi, war- [0 Brown] #macro olowek_kanciaty(kolor, s) to[ maleje równomiernie a| do 0.0 [.4 Gray] difference { w odlegBo[ci 1 od tej osi. Jeszcze dalej, [1 DarkGreen] olowek(kolor, s) pozostaje 0. WykorzystaBem to do usta- } // obcinamy boczki lenia koloru rysika: } #declare c=0; finish {diffuse 0.4} #while (c<1) pigment { S } plane {z, -0.8 texture cylindrical S #declare T_rysik = texture { {T_lakier(kolor)} color_map { pigment { rotate c*y*360} [0 Clear] cylindrical #declare c = c+1/6; [.5 Clear] color_map { #end [.5 Black] [0 Clear] } [1 Black] [.5 Clear] #end } S [.5 Black] object {olowek_kanciaty(Red, } [1 Black] seed(1)) translate x*-2} S } object {olowek_kanciaty(Yellow, Clear to brak barwy  przezroczysto[. } seed(2)) translate x*0} Zauwa|my, |e od przezroczystego do S finish { object {olowek_kanciaty(Green, czarnego mamy zerowy przedziaB, wic reflection 0.1 seed(3)) translate x*2} granica midzy nimi jest ostra. Dziki S phong 0.2 object {olowek_kanciaty(Gray, wykorzystaniu tego wzoru oBówek jest } seed(4)) translate x*4} w [rodku czarny, a dalej przezroczysty };  prze[wituje spod niego poprzednia tek- #macro T_lakier(kolor) stura: drewno. pigment {kolor} Domy[lnie materiaB to czarny pla- finish {/*specular 0.2*/ stik z pustym wntrzem. Na pocztek nie reflection 0.03} musimy wszystkiego okre[la  wystar- #end czy sam pigment. Nie trzeba te| pisa wszystkich szczebli caBej struktury: 35 www.lpmagazine.org grafika 3d Listing 2. Skrypt tworzcy plik Makefile dla renderingu równolegBego #!/bin/bash num=$1 srcfiles='test.pov' S povopts="+itest.pov +oframe.png +w400 +h300 +kfi1 +kff$num" anim="anim: " echo all: anim echo "POV=povray $povopts" for n in $(seq -w 1 $num); do anim="$anim frame$n.png" S echo -e "frame$n.png: $srcfiles\n\t\$(POV) +sf$n +ef$n\n" done echo $anim sphere { 0,1 S material {texture {pigment{ color Rysunek 2. POV-Ray Modeler Yellow}}} } object{ Pionek translate jakie[_miejsce } wiszcej wysoko  niech jej zaczep bdzie S bo mo|na to upro[ci do: object{ Pionek translate w punkcie <0,0,0>. Dopiero potem mo|na jakie[_inne_miejsce } j sobie wygodnie "powiesi": sphere { 0,1 Powy|szy sposób jest dobry do obiek- object {lampa translate y*wys_pokoju} pigment{ Yellow } tów identycznych, ale nie nadaje si, je[li } zadeklarowany obiekt mo|e ró|ni si Co wicej, je[li chcemy j rozbuja jakim[ szczegóBem, np. kolorem emalii (a obroty s zawsze wokóB pocztku Inne elementy w kredce. Wtedy przydaje si makro ukBadu wspóBrzdnych), to wystarczy: Musimy okre[li kamer (camera), czyli  mo|e ono mie parametry, które przy S poda informacj, z którego miejsca wywoBaniu zostan wstawione w miej- object {lampa rotate z*bujniecie i w które miejsce (lub w jakim kierun- sce swoich nazw. Trzeba na to uwa|a, translate y*wys_pokoju} ku) patrzymy. Podajemy tu te| pro- np. mamy makro do obliczania dBugo[ci porcje ekranu. Co ciekawe, rozmiar przeciwprostoktnej: Dyrektywa #include powoduje wBczenie wynikowego pliku graficznego, który w to miejsce innego pliku zródBowego przy kwadratowych pikselach defi- #macro przeciwp(a,b) sqrt(a*a + b*b) #end  dziki temu mo|emy sobie dzieli du|y niuje nam te proporcje, wskazujemy plik na mniejsze lub tworzy pliki wyko- w wywoBaniu programu opcjami + w które przy wywoBaniu przeciwp(1,3+4) rzystywane wielokrotnie (biblioteki). i +h. rozwinie si do sqrt(1*1 + 3+4*3+4). Warto si zainteresowa standardowy- Aby byBo cokolwiek wida, potrzeb- PrawidBowo zdefiniowane makro ma mi plikami bibliotecznymi  mo|na tam ne jest o[wietlenie  light_source (nie posta: znalez du|o gotowych rzeczy do wyko- liczc samo[wiecenia obiektów, okre[la- rzystania. Te pliki s dokBadnie opisane S nego w finish). #macro przeciwp(a,b) sqrt((a)*(a) + w dokumentacji. (b)*(b)) #end Dyrektywy Wszystko, co zaczyna si od # w kodzie To makro rozwija si w wyra|enie zródBowym, jest dyrektyw  odpo-  mo|emy go u|ywa jak funkcji. Inne wiednik dyrektywy preprocesora makra mog rozwija si w obiekty czy w jzyku C. Za pomoc dyrekty- tekstury, tak jak w przykBadzie. wy declare mo|emy zadeklarowa Przy okazji, cenna rada dotyczca sobie zmienn rzeczywist, wektor, deklarowania obiektów: powinien on si obiekt czy tekstur, a potem si znajdowa w [rodku ukBadu wspóBrzd- nim wygodnie posBugiwa, np. dekla- nych, a dopiero potem w trakcie korzy- rujemy pod nazw Pionek figur sza- stania z obiektu mo|emy go sobie prze- chow, a potem u|ywamy jej wielo- sun. PrzykBadowo, mamy lamp wisz- Rysunek 3. Plik POV-Raya w edytorze VIM krotnie: c u sufitu. Nie deklarujmy jej od razu jako 36 lipiec 2004 pov-ray grafika 3d // 1 - to co 1 Ciekawostki #macro hustawka(faza) Dla tych, którzy nie lubi plików teksto- ... wych, powstaB program POV-Ray Mode- #end ler (Rysunek 2). Program pokazuje to, co si stworzyBo  mamy okienko z caBym Je[li nagle postanowimy, |e nasza hu[- "drzewem sceny": obiekty zrobione tawka bdzie waha si nie raz, a 3 razy, z podobiektów, z naBo|onymi teksturami, to wystarczy zmieni hustawka(clock) na które skBadaj si z prostszych elemen- hustawka(3*clock). tów itd. Osobi[cie nie korzystam z tego typu narzdzi, poniewa| efekty osiga Rysunek 4. Strona projektu Internet Movie si na ogóB wolniej (tak, tak, przy odro- Losowo[ binie wprawy sceny w POV-Rayu pisze Project Powtarzalno[ i regularno[ nie wygl- si caBkiem sprawnie), nie ma skompli- da zbyt naturalnie (jak sBoje drewna kowanej elastycznej parametryzacji oraz Animacje w naszych oBówkach), wic warto wpro- animacji. Program nie tworzy plików Avi/Mpeg, wadzi odrobin chaosu, np. sam tek- Istnieje projekt o nazwie Internet natomiast generuje sekwencje obra- stur mo|na przesun wzdBu| oBówka Movie Project  grupa osób postanowi- zów. Ruch na tych obrazach tworzy si o pewn warto[  wtedy wygld bdzie Ba stworzy peBnometra|owy film ani- w bardzo prosty sposób: mamy do dys- odmienny. mowany u|ywajc do tego programu pozycji zmienn clock, która dla ka|dej Dodatkowo, na Rysunku 1 wida, |e POV-Raya, a animacje renderowa klatki ma inn warto[: zaczyna (domy[l- kredki nie s zaostrzone równo, a ka|de w sposób rozproszony w Internecie (na podobieDstwo projektu Seti@Home). nie) od zera, a koDczy na jedynce. Ma "machnicie no|em" jest w jaki[ sposób Je[li Czytelnik nabierze odrobiny znaczenie, czy robimy animacj zwykB losowe. sprawno[ci w posBugiwaniu sie progra- czy cykliczn (parametr +KC). Dla 5 klatek Do losowania sBu| dwie funkcje, sto- mem, a do tego ma troch talentu i pomy- animacji zwykBej zmienna clock przyjmie sowane w taki sposób: sBowo[ci, mo|e wzi udziaB w konkursie kolejno warto[ci: 0 0.25 0.5 0.75 1, a przy dla amatorów na stronie www.irtc.org. S cyklicznej: 0 0.2 0.4 0.6 0.8. #declare s = seed(1234); dwie konkurencje: na najlepsz grafik Zmienn clock mo|na wykorzysta w #declare v1 = rand(s); oraz animacj. Prace wykonane w POV- dowolny sposób  jeste[my tylko ograni- #declare v2 = rand(s); Rayu pokazuj si tam dosy czsto. czeni pomysBowo[ci i znajomo[ci mate- #declare v3 = rand(s); matyki. Prosty obrót obiektu robimy tak: #declare v4 = rand(s); jednocze[nie. Potrzebny mu plik Make- rotate y*clock Funkcji seed() przekazujemy zarodek file mo|na wygenerowa przy pomocy losowania. Z tego samego zarodka kolej- skryptu mkmake.sh (Listing 2), podajc a przesunicie z punktu A do punktu B ne wylosowane warto[ci od v1 do v4 liczb klatek animacji: tak: (z przedziaBu 0.0 - 1.0) bd te same. Ta cecha jest przydatna w animacjach, ./mkmake.sh 40 >Makefile translate A+(B-A)*clock np. dziury w serze niech bd porozpra- szane, ale ich ukBad nie mo|e si zmienia Wtedy, majc do dyspozycji 4 proceso- Zdecydowanie odradzam posBugiwanie z klatki na klatk. ry (np. 2 x Xeon), spokojnie odpalamy 6 si  goB zmienn clock  wygodniej zadaD na raz: $ make -j6. jest tworzy makra z parametrem "faza", Obliczenia równolegBe który zawsze bdzie miaB zmienia si od Prac polegajc na wyrenderowaniu SBowo na koniec 0 do 1, np.: obrazka czy caBej animacji Batwo jest Zamie[ciBem tutaj krótki przegld tego, podzieli na kawaBki i liczy równole- co oferuje POV-Ray. Polecam jego doku- // 0 - odchylenie w jedn gle. Ka|d klatk mo|na wyrenderowa mentacj, która jest Badnie usystematyzo- // 0.5 - odchylenie w drug niezale|nie  nawet jedn scen mo|na wana i nie trzeba od razu wszystkiego podzieli na kawaBki, wyrenderowa i na czyta  mo|na potem w razie potrzeby koDcu je poskleja. Batwo znalez interesujcy fragment. Program jest uruchamiany z linii poleceD (wszelkie ustawienia wpisujemy W Internecie: w parametry), wic dosy Batwo mo|na to  uskryptowi . Na komputerze wielo- " Oficjalna strona programu POV-Ray: http://www.povray.org/ procesorowym lub na klastrze mo|na by " Grupy dyskusyjne na temat POV- odpali wiele programów na raz, ka|dy Raya (w tym international, na której liczcy jedn klatk. Gdy jeden z nich mo|na pisa po polsku): skoDczy prac, to odpalamy nastpny, http://news.povray.org/groups/ który liczy kolejn klatk. Mo|na sko- " Konkurs grafiki 3D dla amatorów: rzysta z programu make i jego opcji Rysunek 5. Strona gBówna programu http://www.irtc.org/ -j mówicej, ile zadaD mo|e uruchomi 37 www.lpmagazine.org

Wyszukiwarka

Podobne podstrony:
2004 07 K 3D [Grafika]
Ogranicz 2004 07 08
2004 07 Konsolowa przeglądarka plików graficznych [Programowanie]
Wspaniały świat Kombi
2004 03 GIMP 2 0 [Grafika]
2004 03?obe Photoshop i Linux [Grafika]
rozp min zdr z 07 01 2004 ws badań lekarskich kierowców ( )
Magazine Asimov s Science Fiction 2004 Issue 07 July (v1 0) [txt]
Åšwiat w chaosie Nasz Dziennik, 2011 03 07
HTML język znaczników Vademecum dla początkujących 07 2004
2004 narkotyki Swiat Nauki
07 rozp próbki wyrobów budowlanych Dz U 2004 nr130poz1387
64 ROZ szkolenia w dziedzinie BHP [M G P ][27 07 2004][Dz

więcej podobnych podstron