You are on page 1of 20

Podstawy POV-Raya

Krzysztof Gdawiec

Uniwersytet lski

POV-Ray (Persistence of Vision Raytracer) jest jzykiem opisu sceny sucym do tworzenia trjwymiarowej graki o wysokiej jakoci. Aby otrzyma wysok jako graki POV-Ray wykorzystuje algorytm ledzenia promieni (ang. Ray Tracing). Algorytm ten oblicza kolor i natenie owietlenia oddzielnie dla kadego punktu sceny zgodnie z zycznymi prawami rozchodzenia si wiata. POV-Ray jest cakowicie darmowy, dziaa na rnych systemach (Windows, Linux, MacOS) i mona go cign ze strony http://www.povray.org/

Ukad wsprzdnych

Y Z

rdo wiata, kamera (podstawy)


rdo wiata
1 2 3 4 5

light_source { <x, y, z> // polozenie zrodla swiatla color <r, g, b> // kolor swiatla [(opt.)] }

rdo wiata, kamera (podstawy)


rdo wiata
1 2 3 4 5

light_source { <x, y, z> // polozenie zrodla swiatla color <r, g, b> // kolor swiatla [(opt.)] }

Inne sposoby podawania koloru (poszczeglne skadowe koloru musz by liczbami z [0, 1])
rgb <r, g, b> color red r green g blue b

na pocztku pliku ze skryptem zamieszczamy instrukcj wczajc plik z denicjami kolorw


#include "colors.inc"

W pliku znajduj si denicje kolorw, do ktrych moemy si odwoywa po ich nazwach np. Red, Orange, SummerSky, itp.

Kamera
1 2 3 4 5

camera { location <x, y, z> // polozenie kamery look_at <x, y, z> // punkt, na ktory kamera patrzy [(opt.)] }

Wicej szczegowych informacji na temat rde wiata i kamery podamy na jednych z dalszych zaj.

To, paszczyzna
To
1 2 3

background { <r, g, b> // kolor tla }

Paszczyzna
1 2 3 4 5 6

plane { <x, y, z>, // wektor normalny d // przesuniecie plaszczyzny od poczatku ukl. // wspol. w kierunku wektora normalnego [(opt.)] }

Czsto paszczyzna jest prostopada do osi ukadu wsprzdnych dlatego te zdeniowano odpowiednie stae: x, y, z, ktre podajemy w miejsce wektora normalnego.

Podstawowe prymitywy graczne


Sfera
1 2 3 4 5

sphere { <x, y, z>, // wspolrzedne srodka sfery r // promien sfery [(opt.)] }

Podstawowe prymitywy graczne


Sfera
1 2 3 4 5

sphere { <x, y, z>, // wspolrzedne srodka sfery r // promien sfery [(opt.)] }

Walec
1 2 3 4 5 6 7

cylinder { <x1, y1, z1>, // srodek dolenj podstawy <x2, y2, z2>, // srodek gornej podstawy r // promien [open] // walec bez podstaw [(opt.)] }

city stoek
1 2 3 4 5 6 7 8

cone { <x1, y1, z1>, // srodek dolnej podstawy r1, // promien dolnej podstawy <x2, y2, z2>, // srodek gornej podstawy r2 // promien dolnej podstawy [open] // stozek bez podstaw [(opt.)] }

city stoek
1 2 3 4 5 6 7 8

cone { <x1, y1, z1>, // srodek dolnej podstawy r1, // promien dolnej podstawy <x2, y2, z2>, // srodek gornej podstawy r2 // promien dolnej podstawy [open] // stozek bez podstaw [(opt.)] }

Prostopadocian
1 2 3 4 5

box { <x1, y1, z1>, // lewy dolny wierzcholek <x2, y2, z2> // prawy gorny wierzcholek [(opt.)] }

Torus
1 2 3 4 5

torus { r1, // promien r2 // promien [(opt.)] }

r2 r1 X

Trjkt
1 2 3 4 5 6

triangle { <x1, y1, z1>, // wierzcholki trojkata <x2, y2, z2>, <x3, y3, z3> [(opt.)] }

Trjkt
1 2 3 4 5 6

triangle { <x1, y1, z1>, // wierzcholki trojkata <x2, y2, z2>, <x3, y3, z3> [(opt.)] }

Wielokt
1 2 3 4 5 6 7

polygon { n, // liczba wierzcholkow <x1, y1, z1>, // wierzcholki ... <xn, yn, zn> [(opt.)] }

Dysk
1 2 3 4 5 6 7

disc { <x, y, z>, <nx, ny, nz>, r [, r1] [(opt.)] }

// // // //

wspolrzedne srodka wektor normalny promien proimien otworu

Podstawowe transformacje
Transformacje obiektw umieszcza si w sekcji opcjonalnej. Naley pamita, e kolejno wykonywania transformacji ma znaczenie!

Podstawowe transformacje
Transformacje obiektw umieszcza si w sekcji opcjonalnej. Naley pamita, e kolejno wykonywania transformacji ma znaczenie! Translacja
1

translate <tx, ty, tz>

Podstawowe transformacje
Transformacje obiektw umieszcza si w sekcji opcjonalnej. Naley pamita, e kolejno wykonywania transformacji ma znaczenie! Translacja
1

translate <tx, ty, tz>

Rotacja
1

rotate <rx, ry, rz>

Kty podawane s w stopniach.

Podstawowe transformacje
Transformacje obiektw umieszcza si w sekcji opcjonalnej. Naley pamita, e kolejno wykonywania transformacji ma znaczenie! Translacja
1

translate <tx, ty, tz>

Rotacja
1

rotate <rx, ry, rz>

Kty podawane s w stopniach. Skalowanie


1

scale <sx, sy, sz>

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31

#include "colors.inc" light_source {<0, 10, 10> color White} camera { location <0, 5, -5> look_at <0, 0, 0> } sphere { <1, 0, 0>, 1 pigment{rgb <1, 0, 0>} } cylinder { <0, -0.5, 0>, <0, 0.5, 0>, 1 translate <3.3, 0, 0> pigment{Cyan} } box { <-0.5, -0.5, -0.5> <0.5, 0.5, 0.5> scale <1.3, 1.3, 1.3> translate <-0.75, 0, 0> pigment{Yellow} } torus { 1, 0.25 translate <-3, 0, 0> pigment{color red 1 green 1 blue 1} }

You might also like