POV-Ray 6 - Uniwersytet Śląski
Transkrypt
POV-Ray 6 - Uniwersytet Śląski
Podstawy POV-Ray’a Diana Domańska Uniwersytet Śląski Pliki konfiguracyjne (*.ini) W plikach konfiguracyjnych możemy ustawić różne właściwości dotyczące renderingu. Przykładowe właściwości: 1 2 3 4 5 6 7 Input_File_Name = "nazwa.pov" Height = 512 Width = 512 Output_File_Type = N Output_File_Name = "nazwa" Quality = 10 Antialias = on – nazwa skryptu, którego dotyczy plik ini, – wysokość/szerokość wynikowego obrazu, Oputput_File_Type – typ obrazu wynikowego (C – TGA z kompresją, T – TGA bez kompresji, N – PNG, P – PPM, S – BMP), Output_File_Name – nazwa wynikowego obrazu, Quality – jakość renderingu liczba ze zbioru {0, . . . , 11} (domyślnie 9), Antialias – wygładzanie krawędzi. Input_File_Name Height/Width Generowanie klatek animacji W celu automatycznego generowania kolejnych klatek animacji należy użyć zmiennej clock, która zmienia się od 0.0 do 1.0. Zmiennej tej używamy w skrypcie z opisem sceny, umieszczając ją przy obiektach, które mają się poruszać z klatki na klatkę. Generowanie klatek animacji W celu automatycznego generowania kolejnych klatek animacji należy użyć zmiennej clock, która zmienia się od 0.0 do 1.0. Zmiennej tej używamy w skrypcie z opisem sceny, umieszczając ją przy obiektach, które mają się poruszać z klatki na klatkę. W pliku konfiguracyjnym dla naszego skryptu musimy dodać linie definiujące liczbę klatek do wyrenderowania 1 2 Initial_Frame = 1 Final_Frame = 20 Jeśli chcemy zmienić zakres zmienności zmiennej linie 1 2 Initial_Clock = 0.0 Final_Clock = 2.0 clock dodajemy Jeśli chcemy zmienić zakres zmienności zmiennej linie 1 2 clock dodajemy Initial_Clock = 0.0 Final_Clock = 2.0 Jeżeli któreś ramki źle się wyrenderują, to możemy je ponownie wyrenderować bez konieczności renderowania wszystkich klatek 1 2 Subset_Start_Frame = 5 Subset_End_Frame = 10 Płaty Béziera 1 2 3 4 5 6 7 8 9 10 bicubic_patch { type t // [u_steps nu] // [v_steps nv] // [flatness f] // <x1, y1, z1> // ... <x16, y16, z16> [(opt.)] } typ = 0 lub 1 (0 - mniej pamieci) liczba wierszy w siatce koncowej liczba kolumn w siatce koncowej test gładkości punkty kontrolne P3 P2 P1 P4 P6 P7 P5 P10 P11 P9 P14 P13 P8 P12 P15 P16 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 #include "colors.inc" #include "textures.inc" camera { location <-4, 3, -9> look_at <0, 0, 0> angle 50 } light_source { <0, 10, 0> color White } bicubic_patch { type 0 u_steps 4 v_steps 4 <-2, -1, 2>, <-1, 0, 2>, <1, 0, 2>, <2, -1, 2>, <-2, 0, 1>, <-1, 2, 1>, <1, 2, 1>, <2, 0, 1>, <-2, 0, -1>, <-1, 2, -1>, <1, 2, -1>, <2, 0, -1>, <-2, -1, -2>, <-1, 0, -2>, <1, 0, -2>, <2, -1, -2> texture{Cork} } Siatki 1 2 3 4 5 6 7 8 9 10 11 12 13 mesh { triangle { <x1, y1, z1>, <x2, y2, z2>, <x3, y3, z3> [(opt.)] } triangle { <x1, y1, z1>, <x2, y2, z2>, <x3, y3, z3> [(opt.)] } ... [inside_vector <x, y, z>] [(opt.)] } Siatki 1 2 3 4 5 6 7 8 9 10 11 12 13 mesh { triangle { <x1, y1, z1>, <x2, y2, z2>, <x3, y3, z3> [(opt.)] } triangle { <x1, y1, z1>, <x2, y2, z2>, <x3, y3, z3> [(opt.)] } ... [inside_vector <x, y, z>] [(opt.)] } W przypadku gdy siatka jest zamknięta to możemy jej użyć do CSG, ale musimy podać inside_vector (wektor definiujący kierunek do wewnątrz). Drugi rodzaj siatki stosowany jest najczęściej przy wczytywaniu siatki z zewnętrznego pliku 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 mesh2 { vertex_vectors { n, // liczba wierzcholkow <x1, y1, z1>, ... <xn, yn, zn> } texture_list { n, // liczba tekstur texture { tex1 }, ... texture { texn } } face_indices { n, // liczba scianek <ind1_a, ind1_b, ind1_c> [, tex_ind [, tex_ind, tex_ind]], ... <indn_a, indn_b, indn_c> [, tex_ind [, tex_ind, tex_ind]] } [inside_vector <x, y, z>] [(opt.)] } Mapa wysokości Mapa wysokości służy do tworzenia m.in. terenów. Wczytywany jest plik z mapą wysokości (kolor piksela jest przeliczany na wysokość czyli liczbę z [0, 1]). 1 2 3 4 5 6 7 8 9 height_field { [typ] // exr, gif, hdr, iff, jpeg, pgm, png, pot, // ppm, sys, tga, tiff "nazwa" // nazwa pliku z mapa wysokosci [smooth] // wygladzanie siatki [water_level w] // poziom ponizej ktorego teren bedzie // uznawany pod woda (liczba z [0, 1]) [(opt.)] } Mapa wysokości Wyrenderowany teren