Podstawy POV-Ray a Diana Domańska Uniwersytet Śląski
Kolory i proste wzory Jednolity kolor Jest to sposób jaki do tej pory używaliśmy do podawania koloru czyli 1 pigment{rgb <r, g, b>}
Kolory i proste wzory Jednolity kolor Jest to sposób jaki do tej pory używaliśmy do podawania koloru czyli 1 pigment{rgb <r, g, b>} Do takiego koloru możemy również dodać przeźroczystość / przepuszczanie światła 1 rgbf <r, g, b, f> 2 rgbt <r, g, b, t> 3 rgbft <r, g, b, f, t> Składowa f (filter) czyli ilość filtrowanej przeźroczystości substancji, wartość 1 oznacza całkowitą przeźroczystość, a światło przechodzące ma kolor tego pigmentu. Składowa t (transmit) czyli ilość niefiltrowanego światła, światło jest przepuszczane jako niezmienione.
Proste wzory W POV-Ray u zdefiniowano trzy rodzaje wzorów: 1 pigment{brick [color <r, g, b>, color <r, g, b>]} 2 pigment{checker [color <r, g, b>, color <r, g, b>]} 3 pigment{hexagon [color <r, g, b>, color <r, g, b>, color <r, g, b>]} Jeśli nie podamy kolorów jakie należy użyć do wzoru, to zostaną użyte kolory domyślne.
1 #include "colors.inc" 2 #include "textures.inc" 3 camera { 4 location <-4, 3, -30> 5 look_at <0, 0, 0> 6 } 7 light_source {<20, 25, -20> color White} 8 light_source {<-20, 25, -20> color White} 9 plane { y, -2 pigment{hexagon color <0.1, 0.1, 0.44>, color <1, 0.62, 0>, color <0.5, 0.5, 0>}} 10 box { 11 <-2, -2, -2>, 12 <2, 8, 2> 13 pigment{checker color <1, 1, 1>, color <0.5, 1, 0>} 14 rotate <0, 30, 0> 15 translate <-8, 0, -12> 16 } 17 cylinder { 18 <0, -2, 0>, 19 <0, 7, 0>, 20 6 21 pigment{brick} 22 rotate <0, 45, 0> 23 translate <5, 0, -5> 24 }
Mapy kolorów, pigmentów Mapy kolorów służą do określenia źródła kolorów dla bardziej skomplikowanych wzorów niż brick, checker, hexagon. Każdy wzór ma swój opis matematyczny za pomocą funkcji, która przyjmuje współrzędne x,y,z i w wyniku daje liczbę z przedziału [0, 1]. Na podstawie tej liczby dobierany jest kolor z mapy kolorów.
Mapy kolorów, pigmentów Mapy kolorów służą do określenia źródła kolorów dla bardziej skomplikowanych wzorów niż brick, checker, hexagon. Każdy wzór ma swój opis matematyczny za pomocą funkcji, która przyjmuje współrzędne x,y,z i w wyniku daje liczbę z przedziału [0, 1]. Na podstawie tej liczby dobierany jest kolor z mapy kolorów. 1 color_map { 2 [wartosc kolor] 3 [wartosc kolor] 4... 5 } wartosc liczba z [0,1], kolor definicja koloru. W przypadku map kolorów nawiasy kwadratowe nie oznaczają argumentów opcjonalnych!
1 #include "colors.inc" 2 camera { 3 location <0, 0, -6> 4 look_at <0, 0, 0> 5 } 6 light_source {<20, 25, -20> color White} 7 light_source {<-20, 25, -20> color White} 8 sphere { 9 <0, 0, 0>, 2 10 pigment { 11 gradient x // rodzaj wzoru 12 color_map { 13 [0.1 color Red] 14 [0.3 color Yellow] 15 [0.6 color Blue] 16 [0.6 color Green] 17 [0.8 color Cyan] 18 } 19 } 20 }
Oprócz wzoru gradient możemy używać wielu innych rodzajów wzorów: bozo, marble, agate, granite, leopard, spotted, wood, radial, ripples, spiral1, spiral2, waves, wrinkles i inne. Szczegółowych informacji na temat parametrów poszczególnych wzorów należy szukać w dokumentacji POV-Ray a.
Oprócz wzoru gradient możemy używać wielu innych rodzajów wzorów: bozo, marble, agate, granite, leopard, spotted, wood, radial, ripples, spiral1, spiral2, waves, wrinkles i inne. Szczegółowych informacji na temat parametrów poszczególnych wzorów należy szukać w dokumentacji POV-Ray a. W podobny sposób jak mapy kolorów tworzy się mapy pigmentów 1 pigment_map { 2 [wartosc pigment] 3 [wartosc pigment] 4... 5 }
1 #include "colors.inc" 2 camera { 3 location <0, 0, -8> 4 look_at <0, 0, 0> 5 } 6 light_source {<20, 25, -20> color White} 7 light_source {<-20, 25, -20> color White} 8 #declare mapa = color_map { 9 [0.1 color Red] 10 [0.3 color Yellow] 11 [0.6 color Blue] 12 [0.6 color Green] 13 [0.8 color Cyan] 14 }; 15 sphere { <0, 0, 0>, 2 16 pigment { 17 bozo 18 frequency 10 19 turbulence 0.8 20 color_map{mapa} 21 } 22 translate <-2.5, 0, 0> 23 } 24 sphere { <0, 0, 0>, 2 25 pigment { 26 spiral2 6 27 color_map{mapa} 28 } 29 translate <2.5, 0, 0> 30 }
Normale Wszystkie obiekty w POV-Ray u mają gładką powierzchnię. Do zaburzenia gładkości, dodania efektu chropowatości służą zaburzenia normala. Definicję normali umieszczamy po pigment, ale przed finish. W definicji tej umieszczamy w jaki sposób chcemy zaburzyć normale, w tym celu używamy wzorów: bumps, dents, wrinkles, ripples, waves itp. 1 normal{ definicja }
1 #include "colors.inc" 2 camera { 3 location <0, 0, -8> 4 look_at <0, 0, 0> 5 } 6 light_source {<20, 25, -20> color White} 7 light_source {<-20, 25, -20> color White} 8 sphere { 9 <0, 0, 0>, 10 3 11 pigment { 12 color <0.46, 1, 0.44> 13 } 14 normal { 15 bumps 1 16 scale 0.2 17 } 18 }
Podobnie jak w przypadku kolorów i pigmentów również dla normali można definiować mapy normali. 1 normal_map { 2 [wartosc normal] 3 [wartosc normal] 4... 5 }
Podobnie jak w przypadku kolorów i pigmentów również dla normali można definiować mapy normali. 1 normal_map { 2 [wartosc normal] 3 [wartosc normal] 4... 5 } Przykład: 1 normal { 2 gradient y 3 frequency 3 4 turbulence 0.5 5 normal_map { 6 [0 granite] 7 [0.25 spotted turbulence 0.35] 8 [0.5 marble turbulence 0.5] 9 [0.75 bozo turbulence 0.25] 10 [1 granite] 11 } 12 }
Odbicia Do kontroli jak światło oddziałuje na powierzchnię obiektu służą parametry ambient, diffuse polecenia finish.
Odbicia Do kontroli jak światło oddziałuje na powierzchnię obiektu służą parametry ambient, diffuse polecenia finish. Parametr ambient służy do symulowania światła otaczającego, zaś parametr diffuse określa ile światła, które widzimy pochodzi ze źródeł światła (ilość światła rozproszonego).
Odbicia Do kontroli jak światło oddziałuje na powierzchnię obiektu służą parametry ambient, diffuse polecenia finish. Parametr ambient służy do symulowania światła otaczającego, zaś parametr diffuse określa ile światła, które widzimy pochodzi ze źródeł światła (ilość światła rozproszonego). W większości przypadków wartości ambient pomiędzy 0.1 a 0.2 oraz wartości diffuse pomiędzy 0.5 a 0.7 dają najlepsze efekty. Wyjątkiem są powierzchnie całkowicie przeźroczyste z wysokimi wartościami odbicia, dla których niskie wartości obu parametrów są najlepsze.
Dla powierzchni bardzo błyszczących definiujemy stopień odbicia. Służy do tego parametr reflection. Dla powierzchni metalicznych dodatkowo możemy użyć parametru metallic zarówno dla finish i reflection.
1 #include "colors.inc" 2 camera { 3 location <0, 0, -8> 4 look_at <0, 0, 0> 5 } 6 light_source {<20, 15, -10> color White} 7 plane {y, -2 pigment {checker}} 8 sphere { 9 <-2, 0, -3>, 1.5 10 pigment { color <1, 0.4, 0.8> } 11 finish { 12 ambient 0.1 13 diffuse 0.2 14 } 15 } 16 sphere { 17 <2, 0, 0>, 1.5 18 pigment { color <1, 0.85, 0> } 19 finish { 20 ambient 0.2 21 diffuse 0.6 22 metallic 23 reflection {0.5 metallic} 24 } 25 }