Graficzne modelowanie scen 3D. POV-Ray. Wykład 3



Podobne dokumenty
Graficzne modelowanie scen 3D. POV-Ray. Wykład 3

Ćwiczenia nr 7. TEMATYKA: Krzywe Bézier a

Grafika komputerowa Wykład 8 Modelowanie obiektów graficznych cz. II

Grafika komputerowa Wykład 7 Modelowanie obiektów graficznych cz. I

składa się z m + 1 uporządkowanych niemalejąco liczb nieujemnych. Pomiędzy p, n i m zachodzi następująca zależność:

VI. FIGURY GEOMETRYCZNE i MODELE

Modelowanie krzywych i powierzchni

Grafika 2D. Animacja Zmiany Kształtu. opracowanie: Jacek Kęsik

Techniki wizualizacji. Ćwiczenie 10. System POV-ray tworzenie animacji

Algorytmy i struktury danych. Wykład 4

Techniki animacji komputerowej

Metody numeryczne I Równania nieliniowe

Opis krzywych w przestrzeni 3D. Mirosław Głowacki Wydział Inżynierii Metali i Informatyki Przemysłowej AGH

Interpolacja. Marcin Orchel. Drugi przypadek szczególny to interpolacja trygonometryczna

Przy dużej wielkości głębokości uzyskamy wrażenie nieskończoności: Dla głębokości zerowej uzyskamy tekst płaski:

ZAGADNIENIA PROGRAMOWE I WYMAGANIA EDUKACYJNE DO TESTU PRZYROSTU KOMPETENCJI Z MATEMATYKI DLA UCZNIA KLASY II

(1,10) (1,7) (5,5) (5,4) (2,1) (0,0) Grafika 3D program POV-Ray

Korzystanie z podstawowych rozkładów prawdopodobieństwa (tablice i arkusze kalkulacyjne)

0. OpenGL ma układ współrzędnych taki, że oś y jest skierowana (względem monitora) a) w dół b) w górę c) w lewo d) w prawo e) w kierunku do

W naukach technicznych większość rozpatrywanych wielkości możemy zapisać w jednej z trzech postaci: skalara, wektora oraz tensora.

Programowanie liniowe

10.3. Typowe zadania NMT W niniejszym rozdziale przedstawimy podstawowe zadania do jakich może być wykorzystany numerycznego modelu terenu.

Ruch jednostajnie zmienny prostoliniowy

FUNKCJA LINIOWA - WYKRES

WYKŁAD 10. kodem pierwotnym krzywej jest ciąg par współrzędnych x, y kolejnych punktów krzywej: (x 1, y 1 ), (x 2, y 2 ),...

WYMAGANIA Z WIEDZY I UMIEJĘTNOŚCI NA POSZCZEGÓLNE STOPNIE SZKOLNE DLA KLASY CZWARTEJ H. zakres rozszerzony. Wiadomości i umiejętności

WYMAGANIA EDUKACYJNE Z MATEMATYKI DLA KLASY DRUGIEJ LICEUM OGÓLNOKSZTAŁCĄCEGO ZAKRES PODSTAWOWY

WYMAGANIA EDUKACYJNE NIEZBĘDNE DO OTRZYMANIA PRZEZ UCZNIA POSZCZEGÓLNYCH ŚRÓDROCZNYCH I ROCZNYCH OCEN KLASYFIKACYJNYCH Z MATEMATYKI

Treść wykładu. Układy równań i ich macierze. Rząd macierzy. Twierdzenie Kroneckera-Capellego.

1 Wstęp teoretyczny. Temat: Obcinanie odcinków do prostokąta. Grafika komputerowa 2D. Instrukcja laboratoryjna Prostokąt obcinający

3. Macierze i Układy Równań Liniowych

WYMAGANIA EDUKACYJNE Z MATEMATYKI DLA KLASY TRZECIEJ NA ROK SZKOLNY 2011/2012 DO PROGRAMU MATEMATYKA Z PLUSEM

FUNKCJA LINIOWA - WYKRES. y = ax + b. a i b to współczynniki funkcji, które mają wartości liczbowe

Reprezentacje grafów nieskierowanych Reprezentacje grafów skierowanych. Wykład 2. Reprezentacja komputerowa grafów

Grafika Komputerowa Wykład 5. Potok Renderowania Oświetlenie. mgr inż. Michał Chwesiuk 1/38

Interpolacja, aproksymacja całkowanie. Interpolacja Krzywa przechodzi przez punkty kontrolne

PLAN WYNIKOWY DLA KLASY DRUGIEJ POZIOM PODSTAWOWY I ROZSZERZONY. I. Proste na płaszczyźnie (15 godz.)

INTERPOLACJA I APROKSYMACJA FUNKCJI

Grafika 2D. Animacja Zmiany Kształtu. Wykład przedstawia podstawy animacji zmiany kształtu - morfingu. opracowanie: Jacek Kęsik

WYMAGANIA EDUKACYJNE NA POSZCZEGÓLNE OCENY. (zakres podstawowy) klasa 2

Interpolacja i modelowanie krzywych 2D i 3D

Funkcje liniowe i wieloliniowe w praktyce szkolnej. Opracowanie : mgr inż. Renata Rzepińska

Luty 2001 Algorytmy (7) 2000/2001

Obliczenia iteracyjne

Optymalizacja ciągła

MECHANIKA 2 KINEMATYKA. Wykład Nr 5 RUCH KULISTY I RUCH OGÓLNY BRYŁY. Prowadzący: dr Krzysztof Polko

Struktury danych i złożoność obliczeniowa Wykład 7. Prof. dr hab. inż. Jan Magott

6 Grafika 2D. 6.1 Obiekty 2D

PLAN WYNIKOWY (zakres podstawowy) klasa 2. rok szkolny 2015/2016

Znaleźć wzór ogólny i zbadać istnienie granicy ciągu określonego rekurencyjnie:

PLAN WYNIKOWY Z MATEMATYKI DLA KLASY II TECHNIKUM 5 - LETNIEGO

Metody numeryczne w przykładach

Geometria. Rozwiązania niektórych zadań z listy 2

Metody Numeryczne Wykład 4 Wykład 5. Interpolacja wielomianowa

Wymagania edukacyjne z matematyki w XVIII Liceum Ogólnokształcącym w Krakowie, zakres podstawowy. Klasa druga.

Całkowanie numeryczne przy użyciu kwadratur

Za pierwszy niebanalny algorytm uważa się algorytm Euklidesa wyszukiwanie NWD dwóch liczb (400 a 300 rok przed narodzeniem Chrystusa).

MECHANIKA 2. Prowadzący: dr Krzysztof Polko

Zadanie 1. Zmiana systemów. Zadanie 2. Szyfr Cezara. Zadanie 3. Czy liczba jest doskonała. Zadanie 4. Rozkład liczby na czynniki pierwsze Zadanie 5.

Krzywa uniwersalna Sierpińskiego

Algebra liniowa z geometrią

Kolejny krok iteracji polega na tym, że przechodzimy do następnego wierzchołka, znajdującego się na jednej krawędzi z odnalezionym już punktem, w

9. Podstawowe narzędzia matematyczne analiz przestrzennych

WYKŁAD 3 WYPEŁNIANIE OBSZARÓW. Plan wykładu: 1. Wypełnianie wieloboku

Propozycja szczegółowego rozkładu materiału dla 4-letniego technikum, zakres podstawowy i rozszerzony. Klasa I (90 h)

Mathcad c.d. - Macierze, wykresy 3D, rozwiązywanie równań, pochodne i całki, animacje

Zagadnienia na egzamin poprawkowy z matematyki - klasa I 1. Liczby rzeczywiste

WYMAGANIA EDUKACYJNE Z MATEMATYKI 2016/2017 (zakres podstawowy) klasa 3abc

Metoda określania pozycji wodnicy statków na podstawie pomiarów odległości statku od głowic laserowych

Oświetlenie. Modelowanie oświetlenia sceny 3D. Algorytmy cieniowania.

Całkowanie numeryczne

Przedmiotowy system oceniania wraz z określeniem wymagań edukacyjnych klasa druga zakres rozszerzony

Modelowanie i wstęp do druku 3D Wykład 1. Robert Banasiak

Sponsorem wydruku schematu odpowiedzi jest wydawnictwo

Jolanta Pająk Wymagania edukacyjne matematyka w zakresie rozszerzonym w klasie 2f 2018/2019r.

RÓWNANIA RÓŻNICZKOWE WYKŁAD 15

ANALIZA MATEMATYCZNA

2. ZASTOSOWANIA POCHODNYCH. (a) f(x) = ln 3 x ln x, (b) f(x) = e2x x 2 2.

METODY NUMERYCZNE. Wykład 3. Plan. Aproksymacja Interpolacja wielomianowa Przykłady. dr hab.inż. Katarzyna Zakrzewska, prof.agh. Met.Numer.

Grafika Komputerowa Wykład 6. Teksturowanie. mgr inż. Michał Chwesiuk 1/23

Wymagania edukacyjne z matematyki - klasa III (poziom rozszerzony) wg programu nauczania Matematyka Prosto do matury

Metody iteracyjne rozwiązywania układów równań liniowych (5.3) Normy wektorów i macierzy (5.3.1) Niech. x i. i =1

Definicje i przykłady

Układy równań i nierówności liniowych

Pojęcie funkcji. Funkcja liniowa

PDM 3 zakres podstawowy i rozszerzony PSO

Matematyka do liceów i techników Szczegółowy rozkład materiału Zakres podstawowy

VII. WYKRESY Wprowadzenie

SPOSOBY POMIARU KĄTÓW W PROGRAMIE AutoCAD

Zaawansowane metody numeryczne

MATeMAtyka 3. Propozycja przedmiotowego systemu oceniania wraz z określeniem wymagań edukacyjnych. Zakres podstawowy i rozszerzony

5. Rozwiązywanie układów równań liniowych

Algebra Boole a i jej zastosowania

Rachunek wektorowy - wprowadzenie. dr inż. Romuald Kędzierski

Ekstrema globalne funkcji

XII Olimpiada Matematyczna Juniorów Zawody stopnia pierwszego część korespondencyjna (1 września 2016 r. 17 października 2016 r.)

LI Olimpiada Matematyczna Rozwiązania zadań konkursowych zawodów stopnia trzeciego 3 kwietnia 2000 r. (pierwszy dzień zawodów)

24. CAŁKA POWIERZCHNIOWA ZORIENTOWANA

Wymagania edukacyjne z matematyki w klasie III A LP

PDM 3. Zakres podstawowy i rozszerzony. Plan wynikowy. STEREOMETRIA (22 godz.) W zakresie TREŚCI PODSTAWOWYCH uczeń potrafi:

Transkrypt:

POV-Ray Wykład 3

Krzywa Beziera Krzywa Beziera to krzywa wielomianowa trzeciego stopnia, czyli taka która może być definiowana za pomocą trzech wielomianów z pewnym parametrem t (odpowiednio dla współrzędnych x, y i z). Wielomiany trzeciego stopnia są używane najczęściej, ponieważ wielomiany niższego stopnia są zbyt mało elastyczne, jeśli chodzi o sterowanie kształtem krzywej. Natomiast wielomiany wyższego stopnia wprowadzają niepożądane oscylacje, a ponadto wymagają większej liczby obliczeń. Krzywe trzeciego stopnia są również krzywymi najniższego stopnia, które nie leżą w jednej płaszczyźnie w 3D. Współczynniki wielomianów są tak dobierane, żeby krzywa przebiegała wzdłuż pożądanej ścieżki. Krzywa te została niezależnie opracowane przez Pierre'a Beziera i Paul de Faget de Casteljau, na potrzeby firm Renault i Citroën (z myślą o wykorzystaniu przy projektowaniu samochodów). Krzywa określona jest przez dwa punkty końcowe oraz dwa punkty pośrednie nie należące do krzywej. Krzywa Beziera interpoluje więc oba końcowe punkty i aproksymuje dwa pozostałe. Dzięki swoim zaletom, takim jak łatwość interakcyjnego kształtowania i istnienie sprawnych algorytmów przetwarzania, reprezentacje te obecnie używane powszechnie nie tylko w inżynierskich systemach projektowania wspomaganego komputerem, ale także w wielu innych zastosowaniach graficznych (np. w projektowaniu czcionek).

Punkty należące do krzywej Beziera obliczane są z równań: P. x = (1 t) 3 P 1. x + 3(1 t) 2 tp 2. x + 3(1 t)t 2 P 3. x + t 3 P 4. x P. y = (1 t) 3 P 1. y + 3(1 t) 2 tp 2. y + 3(1 t)t 2 P 3. y + t 3 P 4. y P. z = (1 t) 3 P 1. z + 3(1 t) 2 tp 2. z + 3(1 t)t 2 P 3. z + t 3 P 4. z gdzie: P.x, P.y, P.z - współrzędne x, y i z punktu P t - parametr z przedziału [0,1] określający, w którym miejscu krzywej znajduje się szukany punkt. Przykładowo dla t=0 otrzymujemy punkt P1, a dla t=1 punkt P4. Aby otrzymać obraz (współrzędne punktów) całej krzywej należy zmieniać wartość t z odpowiednio małym krokiem. Przy łączeniu kilku segmentów krzywej Beziera należy dopilnować, aby zachowana była ciągłość w punkcie łączenia dwóch punktów końcowych.

Oznacza to, że wspólny punkt końcowy oraz dwa punkty pośrednie muszą być różne i współliniowe. Krzywe Béziera mają następujące własności: Niezmienniczość afiniczna reprezentacji. Suma wielomianów Bernsteina stopnia n jest równa 1, a zatem dla dowolnego t R punkt p(t) jest kombinacją afiniczną punktów kontrolnych. Ponieważ przekształcenia afiniczna zachowują kombinacje afiniczne więc dla ustalonego przekształcenia afinicznego f i dla każdego t odpowiedni punkt krzywej Béziera reprezentowanej przez punkty kontrolne f(p 0 ),, f(p n ) jest równy f(p(t)). Innymi słowy, aby otrzymać obraz krzywej Béziera w dowolnym przekształceniu afinicznym, wystarczy poddać temu przekształceniu jej punkty kontrolne.

Własność otoczki wypukłej. Dla t [0,1] punkt p(t) jest kombinacją wypukłą punktów kontrolnych (wielomiany Bernsteina są w przedziale [0,1] nieujemne), a więc należy do otoczki wypukłej ich zbioru. Zachodzi interpolacja skrajnych punktów kontrolnych: p(0) = p 0, p(1) = p n Dla t [0,1] krzywa Béziera nie ma z żadną prostą (na płaszczyźnie) albo płaszczyzną (w przestrzeni) większej liczby punktów przecięcia niż jej łamana kontrolna (to się nazywa własnością zmniejszania wariacji). Istnieje możliwość podwyższenia stopnia, czyli znalezienia reprezentacji stopnia n+1. Związek obu reprezentacji wyraża się wzorami n n+1 p(t) = p i B i n (t) = p ib i n+1 (t) i=0 p i = i n + 1 p n + 1 i i 1 + n + 1 p i Podwyższanie stopnia możemy iterować, dostając reprezentacje coraz wyższych stopni. Ciąg łamanych kontrolnych otrzymanych w ten sposób zbiega jednostajnie do krzywej dla t [0,1]. Zbieżność tego ciągu jest jednak zbyt wolna, aby miała praktyczne znaczenie. i=0

Jeśli kolejne punkty kontrolne leżą na prostej, w kolejności indeksów i w równych odstępach, to krzywa Béziera jest odcinkiem sparametryzowanym ze stałą prędkością. Najłatwiej jest udowodnić to rozpatrując reprezentację odcinka w postaci krzywej Béziera stopnia 1 i jego reprezentacje otrzymane przez podwyższanie stopnia. Pochodna krzywej Béziera o punktach kontrolnych p 0,, p n wyraża się wzorem n 1 n 1 p (t) = n(p i+1 p i )B i n 1 (t) = n p i B i n 1 (t) i=0 i=0

Na podstawie własności otoczki wypukłej mamy więc własność hodografu, według której kierunek wektora p (t) t [0,1] jest zawarty w stożku rozpiętym przez wektory P i = p i+1 p i dla i=0,, n-1. Ponadto zachodzą równości p (0) = n(p 1 p 0 ) oraz p (1) = n(p n p n 1 ). Podział krzywej. Punkty p 0 (0),, p0 (n) oraz p0 (n),, pn (0), otrzymane w trakcie wykonywania algorytmu de Casteljau, są punktami kontrolnymi tej samej krzywej, w innych parametryzacjach. Dokładniej, dla dowolnego s R zachodzą równości:

n p(s) = p i B i s (s) = p 0 (i) Bi n ( s t ) i=0 n i=0 (n i) = p n s t i Bi ( 1 t ) Aby narysować krzywą, możemy dzielić ją na,,dostatecznie krótkie łuki i rysować zamiast nich odcinki. Otoczka wypukła łamanej kontrolnej,,całej krzywej jest z reguły znacznie większa niż suma otoczek łamanych kontrolnych kilku jej fragmentów, a zatem przez podział możemy uzyskiwać znacznie dokładniejsze oszacowania położenia krzywej. Algorytm szybkiego obliczania punktu p(t) (o koszcie O(n) zamiast O(n 2 )), jak w przypadku algorytmu de Casteljau) możemy uzyskać, adaptując schemat Hornera. Podstawiając s=1-t, otrzymujemy n i=0

Krzywe B-sklejane Określenie krzywych B-sklejanych Modelowanie figur o skomplikowanym kształcie wymagałoby użycia krzywych Béziera wysokiego stopnia, co oprócz niewygody (z punktu widzenia użytkownika programu interakcyjnego) sprawiałoby różne kłopoty implementacyjne (bardzo duże wartości współczynników dwumianowych, wysoki koszt algorytmów obliczania punktu). Dlatego często stosuje się krzywe kawałkami wielomianowe w reprezentacji B-sklejanej; jest ona uogólnieniem reprezentacji Béziera krzywych wielomianowych. Rys. Porównanie krzywej Béziera z krzywą B-sklejaną

Krzywa B-sklejana jest określona przez podanie: stopnia n, ciągu N+1 węzłów u 0,, u N (ciąg ten powinien być niemalejący, a ponadto N powinno być większe od 2n), oraz N-n punktów kontrolnych d 0,, d N n 1.Wzór, który jest definicją krzywej B-sklejanej ma postać: N n 1 s(t) = d 1 N i n (t) i=0 t [u n, u N n ] We wzorze tym występują funkcje B-sklejane N n i stopnia n, które są określone przez ustalony ciąg węzłów. Istnieje kilka definicji funkcji B-sklejanych, które różnią się stopniem skomplikowania, a także trudnością dowodzenia na podstawie takiej definicji różnych własności tych funkcji (w zasadzie więc wychodzi na jedno, której definicji użyjemy, jeśli chcemy dowodzić twierdzenia, to trudności nie da się uniknąć). Ponieważ w tym wykładzie ograniczamy się do praktycznych aspektów zagadnienia, więc przytoczę rekurencyjny wzór Mansfielda-de Boora- Coxa, który w książkach o grafice chyba najczęściej pełni rolę definicji: N 0 i (t) = { 1 dla t [u i, u i+1 ] 0 przewiwnym razie N i n (t) = t u i u i+n u i N i n 1 (t) + u i+n+1 t u i+n+1 u i+1 N i+1 n 1 (t) dla n > 0

Podstawowe własności krzywych B-sklejanych Własności krzywych B-sklejanych najbardziej istotne w zastosowaniach związanych z grafiką komputerową, są takie: Jeśli wszystkie węzły od u n do u N n są różne (tworzą ciąg rosnący), to krzywa składa się z N-2n łuków wielomianowych. W przeciwnym razie (jeśli występują tzw. węzły krotne), to liczba łuków jest mniejsza. Algorytm de Boora dokonuje liniowej interpolacji kolejno otrzymywanych punktów (liczby α i (j) należą do przedziału [0,1]) stąd wynika silna własność otoczki wypukłej: wszystkie punkty łuku dla t [u k,, u k+1 ] leżą w otoczce wypukłej punktów d k n,, d k. Mamy też afiniczną niezmienniczość tej reprezentacji krzywej. W celu otrzymania jej obrazu w dowolnym przekształceniu afinicznym, wystarczy zastosować to przekształcenie do punktów kontrolnych d 0,, d N n 1. Rys. Silna własność otoczki wypukłej

Lokalna kontrola kształtu. Ponieważ punkt s(t) dla t [u k,, u k+1 ] zależy tylko od punktów d k n,, d k więc zmiana punktu d i powoduje zmianę fragmentu krzywej dla t [u i, u i+n+1 ]. Pochodna krzywej B-sklejanej stopnia n jest krzywą stopnia n-1 N n 2 s n (t) = (d u i+n+1 u i+1 d i )N n 1 i+1 (t) i+1 i=0 Jeśli dwa sąsiednie węzły są n-krotne, to łuk krzywej między nimi jest krzywą Béziera

Powierzchnie Béziera i B-sklejane Płaty tensorowe Do określenia powierzchni potrzebne są funkcje dwóch zmiennych. Najczęściej wykorzystuje się iloczyn tensorowy przestrzeni funkcji jednej zmiennej. Użycie go prowadzi do wzorów, które opisują odpowiednio płat powierzchni Béziera i płat powierzchni B-sklejanej stopnia (n,m). W przypadku płata B-sklejanego, nawet jeśli stopień ze względu na każdy parametr jest taki sam, można podać inny ciąg węzłów określających funkcje bazowe. p(u, v) = n m i=0 j=0 p ij B n i (u)b m j (v) s(u, v) = N n 1 M m 1 d ij N n i (u)n m j (v) i=0 j=0 Rys. Płat B-sklejany

Dziedziną płata Béziera jest zwykle kwadrat jednostkowy. Dziedziną płata B- sklejanego jest prostokąt [u n, u N n ] [v m, v M m ]. Często dziedzinę otrzymuje się przez odrzucenie fragmentów takiego prostokąta wówczas mamy wtedy płat obcięty. Rys. Obcięty płat Béziera Punkty kontrolne płata każdego z tych rodzajów dla wygody kształtowania przedstawia się w postaci siatki. Wyróżniamy w niej wiersze i kolumny. Wyznaczenie punktu na powierzchni, dla ustalonych parametrów u i v można sprowadzić do wyznaczania punktów na krzywych (Béziera albo B-sklejanych): p(u, v) = n m i=0( j=0 p ij B m j (v)) B n i (u) = n i=0 q i B n i (u)

Wszystkie działania wykonujemy na kolumnach siatki, traktując je tak, jakby to były łamane kontrolne krzywych. Punkty tych krzywych, odpowiadające ustalonemu v, są punktami kontrolnymi krzywej stałego parametru u leżącymi na płacie. Można też postąpić w odwrotnej kolejności i najpierw przetwarzać wiersze, a potem kolumnę otrzymanych punktów. Zasada przetwarzania reprezentacji płata w celu podwyższenia stopnia, podziału na kawałki, wstawienia węzła i obliczenia pochodnych cząstkowych jest identyczna. Płaty trójkątne Dziedziną trójkątnego płata Béziera jest zwykle trójkąt, którego wierzchołki stanowią układ odniesienia układu współrzędnych barycentrycznych r, s, t. Suma tych współrzędnych jest równa 1, wewnątrz trójkąta mają one wartości dodatnie. Płat jest określony wzorem, w którym występują wielomiany Bernsteina trzech zmiennych stopnia n i punkty kontrolne r, s, t będące wierzchołkami siatki kontrolnej płata trójkątnego. p(r, s, t) = p ijk B n ijk (r, s, t) i,j,k 0 i+j+k=n

Rys. Trójkątny płat Béziera i jego siatka kontrolna Płaty Béziera w praktyce Bicubic_patch jest zakrzywioną powierzchnią 3D utworzoną z siatki trójkątów. POV-Ray obsługuje typ Bicubic o nazwie patch Beziera. Funkcja bicubic_patch jest zdefiniowana w następujący sposób bicubic_patch { type t // 0 lub 1 (0 - mniej pamięci) [u_steps nu] // liczba wierszy w siatce końcowej [v_steps nv] // liczba kolumn w siatce końcowej [flatness f] // test gładkości <x1, y1, z1> <x2, y2, z2> <x16, y16, z16> // punkty kontrolne

[(opt.)] } Parametry u_steps i v_steps przyjmują wartości całkowite, które określają ile wierszy i kolumn trójkątów zostanie minimalne użytych do utworzenia zdefiniowanej powierzchni. Maksymalną liczbę poszczególnych kawałków plastra, które są testowane przez POV- Ray można obliczyć z następującego równania: 2 u_steps 2 v steps. Przykład Powierzchnia rozpięta pomiędzy 16-oma zdefiniowanymi punktami.

Powierzchnia uzyskana poprzez odpowiednie obrócenia i przesunięcia 6-ciu obiektów typu plat

Krzywe Béziera w praktyce

Program generuje gotowy kod do POV-Ray a (daje możliwość wyboru pomiędzy lathe a prism)

Przykład

Przykład

Przykład połącznia dwóch osobno opracowanych elementów.

Siatka (mesh) Obiekty mesh są bardzo przydatne ponieważ pozwalają nam na tworzenie obiektów zawierających setki lub tysiące trójkątów. W praktyce oznacza to możliwość utworzenia niemal dowolnej bryły konstrukcji (bardziej złożone kształty oraz duża dokładność odwzorowywanego elementów wiążą się z zastosowaniem dużej liczby trójkątów). Wszystkie tekstury, których chcemy zastosować wewnątrz siatki musimy zdefiniować przed jej utworzeniem. Tekstury (w tym parametr color) nie może być określony wewnątrz siatki ze względu na niską wydajność pamięci. 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).

Przykład

Tworzenie filmów animacji W ramach programu POV-Ray nie ma możliwości bezpośredniego tworzenia animacji. Jednak istnieje możliwość wygenerowania określonej liczby kolejnych scen, z których za pośrednictwem innego programu (np. bmp2avi) można zmontować film (animację). Do wygenerowania określonej liczby scen wykorzystuje się zmienną clock, która domyślnie zmienia swoją wartość od 0 do 1 z wartością kroku uzależnioną od liczby zdefiniowanych klatek (scen). W ramach podstawowego zastosowania programu POV-Ray (quickres.ini) liczbę klatek definiuje się następująco: -j +kffx gdzie x jest liczbą klatek jakie mają zostać wygenerowane. Należy zwrócić uwagę na rozmiar oraz parametry generowanych scen (im większa scen tym dłuższy czas generowania co ma duże znaczenie w przypadku generowania większej liczby scen).

Ponieważ zmienna clock domyślnie przyjmuje kolejne wartości z zakresu od 0 do 1 dlatego należy opracować metodę umożliwiającą jej wykorzystanie do zmiany płożenia ruchomych obiektów w ramach danej sceny. Przykład (animacja przykładu z wykładu 2) Przyjęte założenia: poruszająca się w kierunku górnego prawego rogu bramki piłka uderzona z 20 metra (z punktu (0,0,-20)), poruszająca się za piłką kamera, interweniujący bramkarz.

Przykład (animacja przykładu z laboratorium 1) Przyjęte założenia: obejście budynku dookoła (360 stopni, wzrok skierowany na budynek) wejście przez drzwi wejściowe a następnie odwiedzenie kuchni i dużego pokoju (płynne zmiany kierunku i miejsca na który skierowany jest wzrok - kamera).

Ponieważ budynek o wymiarach (20,15,6) był utworzony od współrzędnych (0,0,0) to przed procesem projektowania animacji należy go wyważyć względem punktu ciężkości na płaszczyźnie XY (translate<-10, 0, -7.5>).

Położenie budynku ma duże znaczenie wobec zastosowania funkcji rotate, za pośrednictwem której zrealizowano okrążenie budynku.

Pliki konfiguracyjne (*.ini) Tak jak pokazały powyższe przykłady domyślna wartość zmiennej clock [0,1] w praktycznym zastosowaniu wymaga obróbki (przemnożenia przez odpowiednią wartość). Jednak istnieje możliwość zdefiniowania własnych parametrów generowanej sceny (w tym zakresu zmiennej clock) za pośrednictwem własnego pliku konfiguracyjnego (domyślna ścieżka to C:\Users\nazwa_konta\Documents\POV-Ray\v3.7\ini).

W plikach konfiguracyjnych możemy zdefiniować różne właściwości dotyczące renderingu. [nazwa pliku, dane informacyjne] Height/Width wysokość/szerokość wynikowego obrazu, Oputput_File_Type typ obrazu wynikowego (C TGA z kompresja, T TGA bez kompresji, N PNG, P PPM, S BMP), Quality jakość renderingu liczba ze zbioru {0,...,11} (domyślnie 9),

Antialias wygładzanie krawędzi (on włączony, off wyłączony). Antialias_Threshold współczynnik wygładzania, Initial_Clock wartość początkowa zmiennej clock, Final_Clock wartość końcowa zmiennej clock, Initial_Frame numer pierwszej klatki, Final_Frame numer ostatniej klatki (Final_Frame - Initial_Frame = liczba klatek do wyrenderowania), Dodatkowo: Input_File_Name nazwa skryptu, którego dotyczy plik ini, Output_File_Name nazwa wynikowego obrazu, Antialias_Depth opisuje głębie antialiasu (wartości 1 do 9) W sytuacji jeżeli któreś sceny źle wyrenderują się (ew. chcemy coś w nich zmodyfikować) wówczas nie musimy całego procesu powtarzać od początku tylko możemy zdefiniować zakres scen, które mają zostać ponownie wygenerowane. Subset_Start_Frame numer sceny od której rozpocznie się proces renderowania, Subset_End_Frame numer sceny na której skończy się proces renderowania.

W przykładzie (moj_plik_konfiguracyjny.ini) wartość początkowa clock to 1 a końcowa 140 co przy 140 klatkach (od 1 do 140) oznacza, że wartość clock będzie przyjmowała kolejne wartości całkowite: 1, 2, 3,,139, 140. Zmodyfikowany przykład (laboratorium 1)