Professional Documents
Culture Documents
Ocena:
Wrocaw 2002
Streszczenie
Niniejsza praca ma na celu przedstawienie niezalenej od systemw do grafiki fotorealistycznej biblioteki, zawierajcej funkcje suce do symulacji zjawisk rzeczywistych przy uyciu tekstur proceduralnych. Opracowany zosta system do szybkiej i prostej edycji zoonych tekstur proceduralnych wykorzystujcy stworzon bibliotek. System zosta zintegrowany z pakietem do grafiki fotorealistycznej LightWorks.
Abstract
The aim of this work is to present library that is independent on photorealistic graphics systems which contains functions used to simulate real-world phenomena by means of procedural texturing. The system using defined library have been designed that allows for quick and easy edition of complex procedural textures. The system have been integrated with LightWorks photorealistic graphics package.
Spis treci
1. 2. WSTP ......................................................................................................................................................... 7 ELEMENTY GRAFIKI KOMPUTEROWEJ.......................................................................................... 9 2.1. PODSTAWOWE POJCIA GRAFIKI KOMPUTEROWEJ................................................................................. 9 2.2. HISTORIA TEKSTUR PROCEDURALNYCH .............................................................................................. 11 2.3. DEFINIOWANIE TEKSTUR PROCEDURALNYCH...................................................................................... 13 2.3.1. Definiowanie bibliotek tekstur proceduralnych............................................................................. 13 2.4. JAKO TEKSTUR PROCEDURALNYCH ................................................................................................. 14 3. PRZEGLD STOSOWANYCH METOD SYMULACJI ZJAWISK NATURALNYCH .................. 17 3.1. KATEGORIE TEKSTUR PROCEDURALNYCH ROZWAANE W PRACY ....................................................... 17 3.2. TECHNIKI ZAAWANSOWANE................................................................................................................ 21 3.2.1. Szum Perlina ................................................................................................................................. 21 3.2.2. Wzory kamiennych murw............................................................................................................. 22 3.2.3. Wzory na skrze ssakw ................................................................................................................ 23 3.2.4. Komrkowe funkcje bazowe tekstur (cellular texture basis function) ........................................... 26 3.2.5. Podsumowanie .............................................................................................................................. 29 3.3. DOSTPNE KOMERCYJNIE BIBLIOTEKI DO TWORZENIA WZORW PROCEDURALNYCH ......................... 29 4. METODY I TECHNIKI WYKORZYSTANE W PRACY.................................................................... 33 4.1. FUNKCJA TEKSTURUJCA JAKO ZOENIE FUNKCJI BAZOWYCH ......................................................... 33 4.2. DRZEWA CIENIOWANIA ....................................................................................................................... 35 4.3. OPIS ZAIMPLEMENTOWANYCH ALGORYTMW .................................................................................... 35 4.3.1. Odwzorowanie nierwnoci powierzchni...................................................................................... 35 4.3.2. Szum Perlina ................................................................................................................................. 37 4.3.3. Podzia przestrzeni wedug diagramu Voronoi ............................................................................. 40 4.4. AUTOMATYZACJA POSZUKIWANIA UYTECZNYCH WZORW PROCEDURALNYCH ............................... 49 4.4.1. Losowe parametry ......................................................................................................................... 49 4.4.2. Przeszukiwanie domeny parametrw ............................................................................................ 49 5. BIBLIOTEKA DO TWORZENIA TEKSTUR PROCEDURALNYCH TEXLIB.............................. 50 5.1. ARCHITEKTURA .................................................................................................................................. 50 5.1.1. Interfejs ......................................................................................................................................... 50 5.1.2. Moduy funkcjonalne systemu renderujcego ............................................................................... 50 5.1.3. Biblioteka ...................................................................................................................................... 50 5.1.4. Interfejs graficzny.......................................................................................................................... 51 5.2. IMPLEMENTACJA - DIAGRAM KLAS...................................................................................................... 51 5.2.1. Diagramy klas ............................................................................................................................... 51 5.2.2. Opisy najwaniejszych klas ........................................................................................................... 56 5.3. PROCESU RENDERINGU Z WYKORZYSTANIEM INTERFEJSU BIBLIOTEKI TEXLIB ................................... 58 5.3.1. Fazy procesu renderingu w bibliotece TexLib............................................................................... 59 5.4. INTERFEJS PROGRAMISTYCZNY-ROZSZERZANIE BIBLIOTEKI O NOWE WZORY...................................... 63 5.5. ZAWARTO KONTEKSTU CIENIOWANIA W POPULARNYCH SYSTEMACH GRAFIKI FOTOREALISTYCZNEJ 64 5.5.1. 3dsMAX release3........................................................................................................................... 65 5.5.2. LightWorks .................................................................................................................................... 66 5.5.3. RenderMan .................................................................................................................................... 67 5.5.4. LightWave...................................................................................................................................... 68 5.5.5. Kontekst w bibliotece TexLib......................................................................................................... 68 5.6. WYBRANE SZCZEGY IMPLEMENTACYJNE ........................................................................................ 70 5.6.1. Wzory definiowane w bibliotekach DLL........................................................................................ 70 5.6.2. Ewaluacja drzewa cieniowania..................................................................................................... 71 5.6.3. Zapobieganie cyklom..................................................................................................................... 72 5.7. INTEGRACJA Z PAKIETEM LADS DO RENDERINGU FOTOREALISTYCZNEGO ......................................... 73 5.7.1. System do renderingu fotorealistycznego LightWorks................................................................... 73 5.7.2. Wykorzystanie biblioteki TexLib w procesie cieniowania systemu LightWorks ............................ 76 5.7.3. Przykadowa implementacja shadera LADS wykorzystujcego TexLib ........................................ 77
6.
EDYTOR DRZEW CIENIOWANIA ...................................................................................................... 80 6.1. FUNKCJONALNO APLIKACJI EDYTORA ............................................................................................ 80 6.2. INTERFEJS UYTKOWNIKA .................................................................................................................. 81 6.2.1. Dodawanie i usuwanie wzorw i wartoci .................................................................................... 81 6.2.2. Tworzenie pocze midzy wzorami ............................................................................................ 84 6.2.3. Waciwoci wzorw...................................................................................................................... 86 6.2.4. Rendering ...................................................................................................................................... 87 6.2.5. Serializacja drzew cieniowania..................................................................................................... 89 6.3. WYBRANE SZCZEGY IMPLEMENTACYJNE ........................................................................................ 89 6.3.1. Opis scen trjwymiarowych .......................................................................................................... 90 6.3.2. Rendering ...................................................................................................................................... 90
7.
BADANIA EKSPERYMENTALNE........................................................................................................ 91 7.1. CEL I ZAKRES EKPERYMENTW........................................................................................................... 91 7.2. SYMULACJE ZJAWISK WYSTPUJCYCH W NATURZE .......................................................................... 91 7.2.1. Skra salamandry.......................................................................................................................... 92 7.2.2. Cienie kaustyczne .......................................................................................................................... 93 7.2.3. Skra wyprawiona......................................................................................................................... 95 7.2.4. Skra wa..................................................................................................................................... 97 7.2.5. Spkana ziemia.............................................................................................................................. 99 7.2.6. Twrczo H.R.Gigera............................................................................................................... 100 7.3. OCENA EFEKTYWNOCI .................................................................................................................... 102 7.3.1. Warunki eksperymentu ................................................................................................................ 102 7.3.2. Czynniki wpywajce na czas generowania obrazu..................................................................... 103 7.3.3. Rezultaty liczbowe ....................................................................................................................... 104 7.4. OCENA JAKOCI - PORWNANIA........................................................................................................ 107 7.5. PODSUMOWANIE ............................................................................................................................... 109
8. 9.
PODSUMOWANIE................................................................................................................................. 110 LITERATURA......................................................................................................................................... 112 A.1. INSTRUKCJA DLA STUDENTW................................................................................................................. 113 A.1.1. Cel wiczenia............................................................................................................................... 113 A.1.2. Wprowadzenie - tekstury proceduralne....................................................................................... 113 A.1.3. Biblioteka do tworzenia drzew cieniowania ................................................................................ 113 A.1.4. Edytor drzew cieniowania ........................................................................................................... 118 A.1.5. Zadania ....................................................................................................................................... 118 A.1.6. Sprawozdanie .............................................................................................................................. 120 A.1.7. Literatura .................................................................................................................................... 121 A.2. ZALECENIA DLA PROWADZCEGO ........................................................................................................... 121 A.2.1. Ocena .......................................................................................................................................... 121 A.2.2. Moliwe modyfikacje wiczenia .................................................................................................. 122
DODATEK B. FORMAT PLIKU ZAPISU DRZEWA CIENIOWANIA (*.TREE) .................................. 123 B.1.1. B.1.2. B.1.3. B.1.4. Format pliku *.tree...................................................................................................................... 123 Definicja wzorw......................................................................................................................... 123 Definicja wartoci ....................................................................................................................... 123 Definicja powiza...................................................................................................................... 124
Spis ilustracji
RYSUNEK 2-1 SHADE TREE REALIZUJCE MODEL OWIETLENIA ............................................................................ 12 RYSUNEK 3-1 WZORY NA SKRZE ZWIERZT ........................................................................................................ 18 RYSUNEK 3-2 SKRA I PAPIER ............................................................................................................................... 18 RYSUNEK 3-3 KORA I DREWNO .............................................................................................................................. 19 RYSUNEK 3-4 PIANA I STYROPIAN.......................................................................................................................... 19 RYSUNEK 3-5 KAMIENNE MURY, WYSCHNITA ZIEMIA, KRA ................................................................................. 20 RYSUNEK 3-6 CIENIE KAUSTYCZNE RZUCANE PRZEZ WOD................................................................................... 20 RYSUNEK 3-7 WZORY ABSTRAKCYJNE .................................................................................................................. 20 RYSUNEK 3-8 ZASTOSOWANIE SZUMU PERLINA DO GENERACJI TEKSTUR. OD LEWEJ: POWIERZCHNIA PLANETY, SZUM JAKO FUNKCJA PRZECZAJCA, MARMUR, DREWNO. ........................................................................ 21 RYSUNEK 3-9 KEN PERLIN. SZUM UYTY Z TECHNIK ODWZOROWANIA NIERWNOCI DO WIZUALIZACJI NIERWNOCI POWIERZCHNI. ....................................................................................................................... 22 RYSUNEK 3-10 K. MIYATA POCZENIA MIDZY KAMIENIAMI MURU ................................................................ 22 RYSUNEK 3-11 K.MIYATA TEKSTURA MURU ......................................................................................................... 22 RYSUNEK 3-12 K. MIYATA EDO CASTLE. ZASTOSOWANIE TECHNIKI GENEROWANIA POWIERZCHNIOWEJ TEKSTURY MURU. ......................................................................................................................................... 23 RYSUNEK 3-13 G. TURK. WZORY WYPRODUKOWANE ZA POMOC NAKADANIA KILKU SYSTEMW REACTION DIFFUSION. ................................................................................................................................................... 24 RYSUNEK 3-14 G. TURK. WZORY REACTION DIFFUSION NA OBIEKTACH ............................................................. 24 RYSUNEK 3-15 M. WALTER. TEKSTURY WYGENEROWANE METOD CELL DIVISION I ICH NATURALNE ODPOWIEDNIKI. ............................................................................................................................................ 26 RYSUNEK 3-16 S. WORLEY PRZYKAD WYKORZYSTANIA KOMRKOWEJ FUNKCJI BAZOWEJ ............................. 27 RYSUNEK 3-17 DIAGRAM VORONOI ...................................................................................................................... 27 RYSUNEK 3-18 S. WORLEY - PRZYKADY TEKSTUR UZYSKANYCH DZIKI ZASTOSOWANIU RNYCH KOMBINACJI LINIOWYCH FUNKCJI FN................................................................................................................................ 28 RYSUNEK 3-19 J. KUKLA - TEKSTURY SKRY........................................................................................................ 29 RYSUNEK 3-20 OBRAZ WYGENEROWANY PRZY POMOCY BIBLIOTEKI PIXELLOOM ................................................ 30 RYSUNEK 3-21 PRZYKADY TEKSTUR KOMRKOWYCH WYGENEROWANYCH ZA POMOC CORELTEXTURE ...... 31 RYSUNEK 4-1 PRZYKADY POCZE MIDZY FUNKCJAMI BAZOWYMI ................................................................ 34 RYSUNEK 4-2 GEOMETRIA ODWZOROWANIA NIERWNOCI POWIERZCHNI ........................................................... 36 RYSUNEK 4-3 PSEUDO MODEL OWIETLENIA ......................................................................................................... 37 RYSUNEK 4-4 OBLICZANIE SZUMU PERLINA 2D METOD GRADIENTOW ............................................................. 38 RYSUNEK 4-5 WYKRES FUNKCJI SMOOTHSTEP(X).................................................................................................. 38 RYSUNEK 4-6 PRZYKADY SZUMU FRAKTALNEGO ................................................................................................ 39 RYSUNEK 4-7 WYNIKI DZIAANIA FUNKCJI NOISEV. PRZEKRJ PRZEZ PRZESTRZE R3......................................... 41 RYSUNEK 4-8 TYPY WYNIKW ZWRACANYCH PRZEZ FUNKCJ NOISEV................................................................. 42 RYSUNEK 4-9 ILUSTRACJA FRAKTALNEGO PODPODZIAU PRZESTRZENI ................................................................ 44 RYSUNEK 4-10 WPYW ZASTOSOWANIA RNYCH METRYK ODLEGOCI ............................................................ 47 RYSUNEK 6-1 WIDOK OGLNY EDYTORA DRZEW CIENIOWANIA ........................................................................... 81 RYSUNEK 6-2 MENU KONTEKSTOWE DODAWANIA WZORW I WARTOCI .............................................................. 81 RYSUNEK 6-3 OKIENKO DIALOGOWE DODAWANIA NOWEGO WZORU ..................................................................... 82 RYSUNEK 6-4 OKIENKO DIALOGOWE DODAWANIA NOWEJ WARTOCI STAEJ ....................................................... 82 RYSUNEK 6-5 WACIWOCI WARTOCI STAYCH ................................................................................................ 83 RYSUNEK 6-6 WACIWOCI WARTOCI STAYCH ZWIZANE Z LOSOWOCI (WACIWOCI WARTOCI TYPU FLOATARRAY). ............................................................................................................................................ 84 RYSUNEK 6-7 PROCES TWORZENIA POCZENIA MIDZY PARAMETRAMI WYBIERANIE PARAMETRU WEJCIOWEGO .............................................................................................................................................. 85 RYSUNEK 6-8 PROCES TWORZENIA POCZENIA MIDZY PARAMETRAMI WYBIERANIE PARAMETRU WYJCIOWEGO .............................................................................................................................................. 85 RYSUNEK 6-9 WIDOK WACIWOCI WZORW. 1-PARAMETRY WEJCIOWE, 2-PARAMETRY WYJCIOWE .............. 86 RYSUNEK 6-10 MENU PARAMETRW SCENY.......................................................................................................... 87 RYSUNEK 6-11 OKIENKO DIALOGOWE Z USTAWIENIAMI PARAMETRW SCENY ..................................................... 87 RYSUNEK 6-12 MENU RENDERINGU ....................................................................................................................... 88 RYSUNEK 6-13 OKIENKO DIALOGOWE Z PARAMETRAMI RENDERINGU .................................................................. 88 RYSUNEK 6-14 WIZUALIZACJA POSTPU PROCESU RENDERINGU ........................................................................... 89 RYSUNEK 9-1 PRZYKADOWY DIAGRAM FUNKCJI BAZOWYCH ............................................................................ 114 RYSUNEK 9-2 PRZYKADOWY DIAGRAM DRZEWA CIENIOWANIA ........................................................................ 119 RYSUNEK 9-3 RYBIA USKA ................................................................................................................................ 120 RYSUNEK 9-4 PIANA NA POWIERZCHNI PIWA ....................................................................................................... 120
Spis diagramw
DIAGRAM 2-1 PRZEBIEG PROCESU RENDERINGU DLA OWIETLENIA LOKALNEGO .................................................... 9 DIAGRAM 2-2 PRZEBIEG PROCESU CIENIOWANIA ................................................................................................... 10 DIAGRAM 3-1 LIBTEX EWALUACJA TEKSTUR PRZESTRZENNYCH ...................................................................... 30 DIAGRAM 5-1 ARCHITEKTURA BIBLIOTEKI TEXLIB (MODUY FUNKCJONALNE).................................................... 50 DIAGRAM 5-2 DIAGRAM KLAS TYPW WARTOCI .................................................................................................. 52 DIAGRAM 5-3 DIAGRAM KLAS ZWIZANYCH ZE WZORAMI .................................................................................... 53 DIAGRAM 5-4 DIAGRAM KLAS FUNKCJI ZARZDZAJCYCH WZORAMI ................................................................... 54 DIAGRAM 5-5 DIAGRAM KLAS PODSTAWOWYCH IMPLEMENTACJI ALGORYTMW SZUMW .................................. 55 DIAGRAM 5-6 FAZA CIENIOWANIA Z UWZGLDNIENIEM BIBLIOTEKI TEXLIB ........................................................ 58 DIAGRAM 5-7 PRZYKAD KOLEJNOCI EWALUACJI PARAMETRW DRZEWA CIENIOWANIA ................................... 72 DIAGRAM 5-8 ARCHITEKTURA SYSTEMU LADS.................................................................................................... 73 DIAGRAM 5-9 ARCHITEKTURA PROCESU RENDERINGU W SYSTEMIE LADS........................................................... 74 DIAGRAM 5-10 PRZEBIEG PROCESU EWALUACJI WASNOCI POWIERZCHNI W SYSTEMIE LADS ........................... 75
1. Wstp
Grafika komputerowa cigle zyskuje na znaczeniu w wielu dziedzinach ycia, poczwszy od rozrywki, reklamy, po architektur, medycyn, projektowanie wspomagane komputerowo. Szczegln rol odgrywa grafika fotorealistyczna, ktra stara si jak najwierniej zasymulowa zjawiska naturalne. Spotykamy si z ni na kadym kroku. Staa si ona w dzisiejszych czasach na tyle doskonaa, e czasem nie zdajemy sobie nawet sprawy z tego, jaka cz obrazw, ktre widzimy w kinie, gazetach, czy ulicznych reklamach, powstaa dziki niej. Coraz czciej spotykamy si z penometraowymi filmami stworzonymi bez uycia standardowych kamer, scenografii ani ywych aktorw, penymi scen zawierajcych rozlege, zapierajce dech krajobrazy, bd bliskie ujcia twarzy, wystroju wntrz, czy szczegw przedmiotw. Wizualizacje architektoniczne trudno odrni od zdj, dziki temu, e zawieraj dokadne symulacje faktur materiaw budowlanych, rolinnoci, nieba. Wikszo z tych realistycznych efektw grafiki fotorealistycznej uzyskuje si dziki proceduralnym technikom opisu wasnoci paszczyzny. Stosujc te metody moemy zasymulowa wygld niemal kadego materiau i powierzchni, od stosowanych w architekturze kamieni naturalnych, po fantastyczne obrazy planet widocznych z przestrzeni kosmicznej. Celem pracy jest opracowanie spjnej metody generowania moliwie szerokiej klasy wzorw, zbadanie jej wasnoci i moliwoci zastosowa praktycznych oraz implementacja w postaci uniwersalnej biblioteki, ktr bdzie mona zintegrowa z dowolnym pakietem oprogramowania do tworzenia grafiki fotorealistycznej udostpniajcym interfejs programistyczny wspomagajcy programowanie tekstur proceduralnych. Przykadami badanych zjawisk mog by kamienie naturalne, rne rodzaje skry zwierzt, skra ludzka, kora drzewa. Wspln cech tych zjawisk jest to, e przy pewnej dozie wyobrani, mona je uoglni i zaklasyfikowa do grupy tzw. wzorw komrkowych, dzielcych powierzchni na mniej lub bardziej regularne siatki. Celem pracy nie jest symulacja poprawna fizycznie. (cho nie wyklucza si zastosowania podstaw fizycznych). Jest nim jedynie stworzenie wzorw jak najbardziej przypominajcych naturalne, reprodukcj ich waciwoci wizualnych. Patrzc z tej perspektywy, mona proces tworzenia tekstur proceduralnych porwna do procesu tworzenia realistycznego obrazu. Artysta malarz prawie nigdy nie posuguje si wiedz na temat fizyki odtwarzanego obiektu. Interesuje go tylko to, w jaki sposb dzieo zostanie odebrane przez publiczno i w jaki sposb kontrolowa proces, aby doprowadzi do podanego efektu. Na uytek bada proponowanych metod zosta stworzony interaktywny program pozwalajcy na atwe tworzenie szerokiej klasy wzorw oraz eksperymentowanie z nimi. W oparciu o t aplikacj opracowano metod automatycznego generowania wzorw proceduralnych poprzez zestawianie rnych wartoci parametrw procedur generujcych wzr. Na bazie opracowanych i zbadanych technik oraz zrealizowanego oprogramowania opracowano rwnie wiczenie laboratoryjne do laboratorium Zaawansowanych Metod Grafiki Komputerowej zapoznajce studentw z moliwociami zastosowania proceduralnych technik teksturowania. Rozdzia 2 stanowi wprowadzenie do procesu renderingu, przypomina rol oraz histori proceduralnych technik teksturowania. W Rozdziale 3 zawarty jest przegld zaawansowanych technik symulacji zjawisk naturalnych. Zawarte s w nim wybrane techniki, ktre daj najlepsze rezultaty w dziedzinie interesujcych nas typw wzorw.
Opis opracowanych metod tworzenia wzorw przebadanych i zaimplementowanych w stworzonym oprogramowaniu umieszczono w Rozdziale 4. Znajduj si tam dokadne opisy zastosowanych algorytmw oraz ich analiza. Opisano rwnie i przeanalizowano wprowadzone przez autora usprawnienia metod zaczerpnitych z literatury. Rozdzia 5 opisuje uniwersaln bibliotek TexLib stworzon na potrzeby tej pracy. Opisane zostao rodowisko jej dziaania, interfejs do komunikacji z systemami do renderingu, oraz niektre szczegy implementacyjne. Nastpny, 6 rozdzia prezentuje system stworzony na bazie biblioteki TexLib, umoliwiajcy tworzenie realistycznych wzorw przy posiadaniu minimum wiedzy na temat technik grafiki komputerowej i teksturowania proceduralnego. System wykorzystuje profesjonalne narzdzie do budowy aplikacji wykorzystujcych grafik trjwymiarow LightWorks Application Development System. Rozdzia 7 jest powicony badaniom eksperymentalnym oraz ocenie wynikw. Ocenie podlegaj zarwno wartoci wizualne budowanych wzorw jak i wydajno algorytmw i procesu ich tworzenia. Podsumowanie w Rozdziale 8 zawiera ocen wynikw pracy, opis potencjalnych kierunkw dalszego rozwoju systemu, sposoby na wykorzystanie osignitych rezultatw. W Dodatku A znajduje si propozycja wiczenia laboratoryjnego na zajcia z zaawansowanych metod grafiki komputerowej. wiczenie wykorzystuje opracowany system i proponuje uczestnikom zaj wykonanie moduw rozszerzajcych go. Opis zawiera wstp teoretyczny oraz wskazwki na temat implementacji. Dodatek B przedstawia format opisu drzew cieniowania zapisywany i odczytywany przez bibliotek TexLib.
Proces tworzenia obrazu podzielony jest na 2 niezalene czci. Pierwsz jest przygotowanie geometrii, druga to cieniowanie. Geometria sceny moe by opisana w rny sposb: za pomoc trjktw, wieloktw, paszczyzn okrelonych rwnaniami parametrycznymi, bry opisanych proceduralnie. Definiowanie obiektw sceny odbywa si zwykle w ich lokalnym ukadzie wsprzdnych. Faza przeksztace modelowania okrela przeksztacenia wszystkich elementw geometrii opisanych za pomoc hierarchii, podlegajcych znieksztaceniom wynikajcym z animacji itd. Tutaj jest uywany globalny ukad wsprzdnych. Nastpujca po tym faza przeksztace rzutowania przechodzi za pomoc transformacji zalenej od zdefiniowanego wczeniej widoku na ukad wsprzdnych widoku. W trakcie tej fazy geometria jest obcinana do piramidy widzenia zalenej od aktualnego widoku. Fragmenty, ktre nie bd widoczne na wygenerowanym obrazie s usuwane z dalszego procesu (oczywicie s sytuacje wyjtkowe, zwizane z pewnymi zagadnieniami owietlenia globalnego, jak np.: odbicia). Faza rasteryzacji operuje na trjwymiarowym ukadzie wsprzdnych ekranu. W tym ukadzie odbywa si okrelenie powierzchni widocznych (algorytmy okrelania powierzchni widocznych ang. visibility processing wynikaj z metody renderingu i rni si dla metod scanline, Z-buffer, raytracing itd.). Po obciciu wieloktw (w tej fazie geometria skada si z wieloktw, wszystkie paszczyzny opisane parametrycznie, bryy proceduralne itp. zostay ju zamienione na wieloktny) do piramidy widzenia, algorytm rasteryzacji okrela ktre paszczyzny znajd si w kolejnych pikselach obrazu. Nastpujce po tym cieniowanie jest odpowiedzialne za przygotowaniu kontekstu oraz obliczeniu waciwoci powierzchni dla prbek (liczba prbek zaley np. od tego czy renderer uywa nadprbkowania, iloci paszczyzn widocznych przez obliczany piksel obrazu itp.).
Z naszego punktu widzenia jest to najbardziej interesujcy proces. Poniszy diagram pokazuje relacje moduu cieniujcego z moduem okrelania powierzchni widocznych. modu rasteryzacji i cieniowania okrelanie widocznoci (visibility processor) tworzenie kontekstu cieniowania
Kontekst cieniowania jest zbiorem informacji identyfikujcych i opisujcych aktualnie cieniowan prbk (prbka nie koniecznie jest jednoznaczna z pikselem, jako, e na jeden piksel moe by pobieranych kilka prbek z kilku paszczyzn na si skadajcych). Kontekst cieniowania jest przekazywany algorytmowi odpowiedzialnemu za okrelenie wasnoci cieniowanej powierzchni i wynikajcego z nich koloru, ktry stosuje odpowiedni model cieniowania. Model cieniowania opisuje midzy innymi model owietlenia. Jest on wyraony w postaci rwnania owietlenia uwzgldniajcego w swojej najbardziej popularnej postaci skadowe owietlenia pochodzce ze wszystkich rde znajdujcych si na scenie w nastpujcy sposb [Foley]:
i I = I a k a + I ip * k d ( N * Li ) , gdzie: i
i indeks rda wiata, Ia natenie wiata otoczenia (rwne dla wszystkich obiektw), ka wspczynnik odbicia wiata rozproszonego (z przedziau [0..1]), Ip natenie wiata (wiato) rda wiata, kd wspczynnik odbicia rozproszonego dla danego materiau, N wektor normalny do danej paszczyzny (znormalizowany) L wektor okrelajcy kierunek do rda wiata (znormalizowany) Warto koloru jest zwracana jako wynik, ktry, zalenie od algorytmu rasteryzacji, zostanie umieszczony bezporednio na obrazie lub wykorzystany jako cz skadowa koloru aktualnie cieniowanego piksela. Obliczenie koloru dla danego kontekstu cieniowania moe by bardzo zoonym procesem, co wicej, w nowoczesnych systemach grafiki fotorealistycznej jest faz zajmujc najwicej zasobw systemu. Zasoby te to gwnie czas jednostki obliczeniowej, ale nie tylko. Czynnikiem wpywajcym na zwikszenie zajtoci pamici przez t faz jest denie do uzyskania jak najbardziej realistycznych obrazw poprzez wykorzystanie dobrej jakoci tekstur. Oryginalne znaczenie tekstury to ukad wkien w materiale. Tekstura w grafice komputerowej to wzr opisany na obiekcie, definiujcy atrybuty powierzchni (takie jak kolor, przezroczysto, poyskliwo). Szczeglnym rodzajem tekstur s tekstury proceduralne, ktre mona okreli jako funkcje wsprzdnych ukadu odwzorowania tekstury s,t lub wsprzdnych ukadu lokalnego obiektu P, bd globalnego Pw, okrelajce lokalne wartoci atrybutw powierzchniowych. 10
czasie tworzenia obrazu stosowania przeksztacenia do wsprzdnych (s, t), a take animacje (4wymiarowy noise, przy czym 4. wymiar opisuje czas). Odkd tekstury proceduralne udowodniy swoj uyteczno, zaczto tworzy jzyki opisu funkcji je generujcych, tzw. shading languages. Powstay te systemy, ktre umoliwiay definiowanie funkcji teksturujcych (shaders) do opisu rnych waciwoci powierzchni, atmosfery, definicji wiate itp. Najbardziej znanym przykadem jest system drzew cieniowania shade trees R. L. Cooka na podstawie ktrego powsta potem system grafiki fotorealistycznej RenderMan. Shade trees daway midzy innymi moliwo przypisywania powierzchniom wasnych procedur opisujcych kolor, przezroczysto, model cieniowania itp. Rysunek 2-1 przedstawia przykadowe shade tree Cooka realizujce prosty model owietlenia (plastic):
Niewtpliwie zaletami tradycyjnych, skanowanych bd tworzonych rcznie, tekstur s atwo wykonania i realistyczny wygld. Postp w grafice komputerowej sprawi jednak, e realizm obrazw proceduralnych jest czsto na tyle duy, e nie sposb ich odrni od naturalnych odpowiednikw. Poza tym obrazy skanowane rzadko maj dobr jako. Chodzi tutaj nie tylko o ostro czy czysto kolorw, ale warunki owietlenia w czasie robienia zdj (na powierzchniach chropowatych mog wystpowa cienie pochodzce od bocznych wiate), wpyw otoczenia na wasnoci powierzchni (np. odbicia przedmiotw znajdujcych si w pobliu). Koszty stworzenia funkcji, ktre je generuj s oczywicie zwykle bardzo due w porwnaniu z dostarczeniem zdj, jednak dziki kilku wyrniajcym je cechom ich stosowanie jest opacalne. Najwikszymi zaletami teksturowania proceduralnego s: niezaleno od docelowej rozdzielczoci wikszo procedur potrafi wygenerowa dowoln ilo detali wraz z przyblianiem si obserwatora do powierzchni, moliwo generowania tekstur wielowymiarowych przy adresowaniu standardowych tekstur, np. obrazw skanowanych, nastpuje przeksztacenie z trjwymiarowej 12
przestrzeni sceny do dwuwymiarowej przestrzeni obrazu co jest przyczyn znieksztace naniesionych na obiekty tekstur; problem znika jeli tekstura jest zdefiniowana w odpowiedniej przestrzeni, co umoliwia wanie teksturowanie proceduralne may rozmiar definicji (w porwnaniu ze skanowanymi obrazami w wysokiej rozdzielczoci lub teksturami trjwymiarowymi) parametryczny interfejs umoliwiajcy generacj wielu rnicych si obrazw za pomoc jednej procedury.
13
warto umieci w bibliotece, aby unikn wielokrotnego ich definiowania i zwikszy czytelno nowo powstajcych tekstur. Funkcje bazowe mog by definiowane na rnym poziomie. Najprostszym przykadem takiej funkcji moe by sin(x). Rwnie dobrze jednak mona funkcj bazow nazwa dwuargumentow funkcj generujc dwuwymiarow szachownic: chess(x, y). Idc jeszcze dalej, mona zada, aby funkcja zwracaa urednion warto koloru z pewnej powierzchni, tak, aby unikn aliasingu, np. chess(x, y, dx, dy), gdzie dx, dy to rozmiary prostokta otaczajcego punkt x, y i wyrwnanego do osi zdefiniowanych przez ukad wsprzdnych tekstury s, t. Aby zapewni przenaszalno biblioteki takich funkcji midzy systemami do renderingu naley stosowa si do kilku regu: Funkcje nie mog korzysta z adnych danych ani funkcji, ktre s uywane, bd udostpniane za porednictwem jzyka teksturowania, przez renderer. S dwa tego powody. Po pierwsze, nie jest to zwykle moliwe technicznie (np. w systemie RenderMan funkcje zdefiniowane zewntrznie nie maj dostpu do zmiennych globalnych ani funkcji shadeops). Po drugie, aby zapewni odpowiedni uniwersalno, nie mona stosowa wartoci udostpnianych przez system, poniewa te s zwykle podawane w inny sposb dla kadego programu. Na przykad antialiasing tekstur powierzchniowych jest przeprowadzany w RenderManie przy pomocy wartoci pochodnych powierzchni w punkcie, ktry jest cieniowany ( Du, Dv ), 3dStudioMAX dostarcza bezporednio zakres u i v w ktrym naley policzy kolor redni, LightWave posuguje si pojedyncz wartoci ( spotSize ), natomiast LightWorks potrafi obliczy wielokt, ktry powstaje przez rzut aktualnie obliczanego piksela na cieniowan powierzchni. Nie moemy zakada, jakimi dokadnie moliwociami dysponuje renderer i przy budowie funkcji naley przyj jakie zaoenia. Wynika to z poprzednich spostrzee na temat sposobu realizacji antialiasingu. W celu udostpnienia informacji o kontekcie cieniowania naley zbudowa odpowiedni adapter. Danymi wejciowymi adaptera bdzie kontekst cieniowania systemu renderujcego, danymi wyjciowymi za parametry odpowiednich funkcji zdefiniowanych w bibliotece. Kolejny adapter przyjmie wyniki zwrcone przez funkcj i umieci je w odpowiednich zmiennych systemu.
Obliczanie wartoci niezmiennych. Czsto istniej wartoci, ktre mona obliczy na podstawie parametrw wejciowych, a ktre pozostaj niezmienne w trakcie caego procesu renderingu. Moliwo wykorzystania tego spostrzeenia istnieje w wikszoci dostpnych systemw udostpniajcych interfejs teksturowania proceduralnego. Optymalizacje na poziomie jzyka programowania. Optymalizacje algorytmu. Te optymalizacje s oczywicie zalene od konkretnych tekstur, ale generaln zasad jest stosowanie cacheowania tam, gdzie jest to moliwe. Cz wartoci obliczanych wewntrz funkcji teksturujcej moe by niezmienna dla kilku kolejnych wywoa jeli odbywaj si one dla punktw pooonych blisko siebie (a mona zaoy, e tak jest w wikszoci przypadkw). Czasem warto porwnywa aktualne parametry wejciowe z poprzednimi i w miar moliwoci odzyskiwa wyniki poprzednich oblicze.
Jako wygenerowanego obrazu, a szczeglnie sekwencji obrazw tworzcych animacj, zaley w duej mierze od tego, jak rozwizany zosta w teksturze problem aliasingu. W rzeczywistoci to zagadnienie traktowane jest czsto jako mao istotne. Generalnie metody antialiasingu (czyli przeciwdziaania artefaktom) mona podzieli na: realizowane przez system renderujcym niezalene od funkcji teksturujcej, jak nadprbkowanie, realizowane przez funkcje teksturujce: o redukcja wysokich czstotliwoci w obrazie realizowana za pomoc rozmywania ostrych krawdzi z uyciem staego filtra o adaptacyjna redukcja wysokich czstotliwoci, w ktrej wielko filtra jest uzaleniona od oszacowania wielkoci projekcji piksela do przestrzeni tekstury o antialiasing analityczny, w ktrym oszacowywany jest kolor redni tekstury na obszarze bdcym projekcj cieniowanego piksela do przestrzeni tekstury Algorytmy renderingu potrafi do pewnego stopnia korygowa artefakty powstajce z powodu aliasingu za pomoc technik nadprbkowania, co sprzyja ignorowaniu tego zjawiska na poziomie tworzenia tekstury. Poleganie na nadprbkowaniu prowadzi do kocowej nieefektywnoci mimo tego, e sam algorytm produkcji tekstury bez wbudowanego mechanizmu antialiasingu bdzie najczciej dziaa duo szybciej ni wersja z antialiasingiem. Przyczyn jest to, e aby uzyska obraz dobrej jakoci renderer bdzie najprawdopodobniej nadprbkowywa piksele caego obrazu zamiast tylko te zajte przez tekstur. Ponadto nawet wysoki stopie nadprbkowania moe w pewnych przypadkach nie by wystarczajcy. Tekstury proceduralne obliczaj zwykle kolor powierzchni dla danego punktu w przestrzeni. Stosowanie antialiasingu analitycznego wie si zazwyczaj ze znacznym nakadem obliczeniowym i wymaga dostarczenia przez renderer pewnych dodatkowych informacji o wielkoci obszaru dla ktrego maj si odby obliczenia. Rnica stopnia skomplikowania tekstur generujcych te same wzory z zastosowaniem antialiasingu analitycznego i bez niego czsto jest bardzo dua, na niekorzy tych pierwszych. Mimo tego jednak dodatkowy wysiek woony w implementacj procedur produkujcych wysokiej jakoci antialiasowane obrazy w wikszoci przypadkw jest opacalny. Oprcz ju wymienionych czynnikw wpywajcych na ocen tekstury proceduralnej istnieje jeszcze jeden, ktrego znaczenie byo przez dugi czas niedoceniane a ktry ma bardzo due znaczenie dla tekstur pisanych z myl o udostpnianiu szerokiemu gronu uytkownikw. Jest nim atwo obsugi. atwo obsugi tekstur zaley od ich parametryzacji. Tekstura powinna dawa uytkownikowi du swobod w kontroli efektw, nie przytaczajc jednoczenie nadmiernym skomplikowaniem. Zoono funkcji cieniujcych ronie jednak czsto do tego stopnia, e 15
spotyka si tekstury kontrolowane za pomoc kilkudziesiciu parametrw. Parametry s przewanie wyraane liczbami, ktre niedowiadczonym uytkownikom (czyt.: wszystkim poza autorem procedury) mog sprawia kopoty. Dobranie waciwych wartoci parametrw w takich przypadkach jest trudne, o ile nie zna si algorytmw zastosowanych w konkretnym przypadku i nie wie jak kady z parametrw na nie wpywa. Poniewa korzysta maj z tekstur ludzie, ktrzy nie chc powica wiele czasu na poznawanie fizycznych czy jakichkolwiek innych podstaw dziaania procedury (czsto bd to artyci, nie majcy wielkiego pojcia o zasadach dziaania technik proceduralnych), to parametry powinny by intuicyjne i nie powinno ich by wiele. Problem polega na tym, e redukujc liczb parametrw tracimy elastyczno procedury. Posugujc si za Kentonem Musgrave [T&M 1998] pojciem wielowymiarowej przestrzeni estetycznej, mona powiedzie, e tracimy kolejne stopnie swobody. Aby pogodzi atwo obsugi z zachowaniem odpowiedniej elastycznoci czsto ukrywa si przed uytkownikiem cz parametrw przyjmujc jakie ustalone wartoci i dostarczajc procedur w kilku wersjach. Jeli nadto algorytm posuguje si mao intuicyjnymi parametrami, mona je zastpi takimi, ktre odpowiadaj intuicji i konwertowa wewntrz procedury (zastpujc na przykad kilka parametrw majcych wpyw na ilo detali jednym, opisanym jako stopie szczegowoci). Powysze kryteria ocena zostan zastosowane w czasie projektowania tekstur oraz do ich kocowej oceny.
16
17
jaguar
leopard
ocelot
pantera
w
Rysunek 3-1 Wzory na skrze zwierzt
yrafa
skra
Rysunek 3-2 Skra i papier
zmity papier
18
piana styropian
gbka symulacja
19
kamienny mur
kamienny mur
kra lodowa
20
Rysunek 3-8 Zastosowanie szumu Perlina do generacji tekstur. Od lewej: powierzchnia planety, szum jako funkcja przeczajca, marmur, drewno.
21
Rysunek 3-9 Ken Perlin. Szum uyty z technik odwzorowania nierwnoci do wizualizacji nierwnoci powierzchni.
Ze pomoc tej metody nie mona wygenerowa wikszoci wzorw komrkowych, jednak z powodzeniem mona jej uywa do produkcji np. granitu, czy powierzchni styropianu, widzianych z dostatecznie duej odlegoci (tzn. takiej, z ktrej nie mona dostrzec wyranych szczegw).
Rozwizanie Miyaty posiada cztery podstawowe wady: Tekstura jest zdefiniowana na powierzchni, wic jest naraona na znieksztacenia zwizane z przeksztaceniami do dwuwymiarowej przestrzeni parametrw tekstury st. Nie jest moliwa poprawna wizualizacja styku oddzielnych powierzchni (dla ktrych odwzorowanie w przestrze s,t jest zdefiniowane oddzielnie). Jest to widoczne na Rysunek 3-12 na rogu budynku kamienie na ssiednich cianach s od siebie niezalene, gdy tymczasem po obu stronach powinny by widoczne czci tych samych kamieni. Dwuetapowy sposb generacji tekstury wymaga znacznego nakadu oblicze przed rozpoczciem renderingu.
22
Generacja struktury pocze odbywa si w sposb explicite, wic dla ustalonej wielkoci i szczegowoci muru. Miyata nie przedstawia innych zastosowa tej techniki, wic jej uniwersalno nie jest dua.
Rysunek 3-12 K. Miyata Edo Castle. Zastosowanie techniki generowania powierzchniowej tekstury muru.
23
2. Kadej komrce przypisywana jest pocztkowa zawarto morfogenw i przeprowadzana jest symulacja ReactionDiffusion. W trakcie symulacji zawartoci substancji w komrkach zmieniaj si zgodnie z zasadami dyfuzji (przechodzenie zwizkw do komrek zawierajcych mniejsze ich stenia) oraz reakcji (na przykad wysoka zawarto pewnego zwizku chemicznego moe spowodowa zniszczenie zwizku, ktry wystpuje w mniejszym steniu). 3. Po zakoczeniu symulacji i uzyskaniu stabilnych zawartoci morfogenw, koncentracja jednego z nich decyduje o zabarwieniu komrki. Kocowy kolor w kadym punkcie jest kolorem rednim ssiadujcych komrek. Systemy ReactionDiffusion produkuj z reguy bardzo proste wzory (Rysunek 3-13, grny rzd). Turk wprowadzi moliwo generacji take bardziej skomplikowanych wzorw (np. wzr rozetkowy leoparda, siatka na yrafie, wzory na wach, rybach) stosujc szereg systemw. Pierwszy system tworzy wzr wyjciowy. Pewne komrki zostaj zablokowane (tzn. zawarto zwizkw chemicznych w nich nie moe si ju zmienia) i przeprowadzana jest kolejna symulacja, ktra wprowadza dodatkowe szczegy. Teraz znowu pewne komrki mog zosta zablokowane i proces moe by powtarzany. Przykady wzorw powstaych w ten sposb widoczne s na Rysunek 3-13 (dolny rzd).
Rysunek 3-13 G. Turk. Wzory wyprodukowane za pomoc nakadania kilku systemw reaction diffusion.
24
Problemem zwizanym z systemami ReactionDiffusion ograniczajcym ich szerokie zastosowanie jest dua ilo parametrw. Uzyskanie podanego wzoru nie jest dziki temu zadaniem trywialnym. Nie istnieje te jeden model ReactionDiffusion pozwalajcy na uzyskanie wszystkich wzorw. Do generacji wzorw przypominajcych ctki stosowany jest przez Turka inny model ni do generacji paskw zebry. Z kolei dopiero poczenie obydwu modeli pozwala na stworzenie wzoru skry yrafy. ReactionDiffusion s take bardzo wymagajce obliczeniowo. Zoono obliczeniowa zaley od iloci komrek na ktrych przeprowadzana jest symulacja, a skada si na ni gwnie symulacja numeryczna ukadu rwna rniczkowych czstkowych (w rozwizaniu Turka dodatkowe koszty wnosz podzia powierzchni na komrki oraz obliczanie wynikowego koloru z przylegych komrek).
Cell Division
Walter zaproponowa model Cell Division [Walter 1998]. Jest to nastpny model inspirowany obserwacjami biologicznymi. W ReactionDiffusion kolor jest kontrolowany za pomoc zwizkw chemicznych, w Cell Division wzory odzwierciedlaj sposb uoenia komrek. Kolory wosw s rezultatem rnych typw komrek. Ten model zosta stworzony do generacji powtarzajcych si ctkowanych wzorw wystpujcych w przypadku kilku gatunkw ssakw (due koty, zebry i yrafy). Oto zaoenia algorytmu: 1. Pocztkowo model pokrywany jest komrkami 2. Komrki rni si liczb pochodnych lub szybkoci reprodukcji 3. Komrki, ktrym przypisane s ciemniejsze kolory maj wiksz prdko reprodukcji ni te janiejsze 4. Komrki mog zmienia swj rodzaj (kolor). Ilo zmian moe by ograniczona. 5. Nowo podzielone komrki rozszerzaj si tak, aby kada moga zaj tak sam powierzchni, jak poprzednio Atrakcyjno tego podejcia polega na tym, e w ten sposb mona wygenerowa du liczb wzorw zwierzcych stosujc niewielk liczb parametrw. Jest to dua zaleta w porwnaniu z Reaction-Diffusion. Walter w swoim referacie opisuje system, w ktrym uywa 2 parametrw do produkcji wzorw wikszoci zwierzt z rodziny kotw. Do produkcji ctkw jaguara i leoparda (tzw. rozety, ang. rosette) Walter uywa dodatkowych 5 parametrw. Parametry te s jednak mao intuicyjne podobnie jak w przypadku Reaction-Diffusion trudno je dobra tak, aby otrzyma wzr jakiego konkretnego zwierzcia. Ich wpyw na wynikowy wzr jest trudny do przewidzenia, a co za tym idzie przydatno samej metody maleje. Trzeba przyzna, e efekty s zaskakujco dobre dla zwierzt nalecych do rodziny kotw, oraz dla yraf (Rysunek 3-15). Podane przez autorw wyniki numerycznych porwna wzorw wygenerowanych z naturalnymi pokazuj 7% bd.
skra naturalna wzr wygenerowany
jaguar
25
yrafa
Rysunek 3-15 M. Walter. Tekstury wygenerowane metod Cell Division i ich naturalne odpowiedniki.
Implementacja opisana przez Waltera i Fourniera w [Walter 1998] ogranicza si do produkcji kwadratowych tekstur powierzchniowych.
Podsumowanie
Istnieje jeszcze wiele modeli tumaczcych powstawanie wzorw na skrach zwierzt. Model mechaniczno-chemiczny wyjania powstawanie wzorw siami dziaajcymi na komrki. Wzory ssakw s take generowane za pomoc automatw komrkowych. Wszystkie wspomniane metody generowania wzorw na skrze ssakw uywaj podstaw, ktre s uwaane za zgodne z naturalnymi (a przynajmniej za prawdopodobnie zgodne). Wynikajcy std sposb dziaania algorytmw praktycznie dyskwalifikuje je w naszych zastosowaniach. Zarwno Reaction-Diffusion, Cell Division jak i pozostae metody dziaaj w sposb explicite, ewoluujc wzr przed rozpoczciem renderingu. Turk w swojej implementacji Reaction-Diffusion unika rzutowania paskiego obrazu na model przeprowadzajc proces ewolucji tekstury na samej geometrii. To oczywicie podwysza jako wynikw, ale wprowadza dodatkowe koszty obliczeniowe (podzia geometrii na komrki). Wprowadza take dodatkowe wymagania co do systemu, w ktrym przeprowadzany jest rendering. Renderer musi by bowiem zdolny do dostarczenia geometrii teksturowanego modelu. Zarwno Reaction-Diffusion, jak i Cell Division s bardzo wymagajce obliczeniowo. Przykadowe tekstury autorw generowane byy na wysokiej wydajnoci wieloprocesorowych maszynach.
26
Funkcja nie posiada wad rozwizania Miyaty, to znaczy nie wymaga dugiej fazy oblicze wstpnych i nie przeprowadza oblicze w sposb explicite. Jest take wydajna i stosunkowo nieskomplikowana. Dziaanie funkcji jest oparte na podziale przestrzeni wedug diagramu Voronoi. Majc dany zbir S n punktw przestrzeni R d , diagram Voronoi jest podziaem przestrzeni R d na n wielociennych obszarw vo( p), p S . Kady obszar vo( p) , zwany komrk Voronoi, jest zdefiniowany jako zbir punktw w R d , ktre s od p w odlegoci mniejszej ni kady inny punkt nalecy do S [Fukuda 2000]. vo( p) = {x R d | dist ( x, p ) dist ( x, q)q S p} Rysunek 3-17 przedstawia przykadowy diagram Voronoi w przestrzeni R 2 .
Sposb dziaania funkcji komrkowej Worleya dla R 3 : Przestrze dzielona jest na kostki. Podzia przestrzeni na kostki suy dalej optymalizacji poszukiwa n najbliszych punktw. W kadej kostce umieszczana jest w losowych pozycjach pewna ilo punktw (ilo punktw jest obliczana na podstawie prawdopodobiestwa o rozkadzie 27
Poissona, liczba losowa jest otrzymywana na podstawie wsprzdnych kostki (i, j, k)). Zbir wszystkich wylosowanych punktw to S Obliczanie wartoci funkcji dla punktu X: o Obliczanych jest n punktw nalecych do S lecych najbliej X o W zalenoci od potrzeb zwracany jest identyfikator n-tego najbliszego punktu, kierunek do niego itp.
Worley eksperymentuje z rnymi funkcjami oceniajcymi odlego punktu X od punktw nalecych do S . Funkcja wynikajca z definicji diagramu Voronoi poszukuje pierwszego najbliszego punktu uywajc metryki Euklidesowej. Autor podaje przykady zastosowania innych funkcji, np. Fn podajc n-ty najbliszy punkt, oraz kombinacje liniowe rnych funkcji Fn . Przykady tych eksperymentw znajduj si na Rysunek 3-18.
Rysunek 3-18 S. Worley - Przykady tekstur uzyskanych dziki zastosowaniu rnych kombinacji liniowych funkcji Fn
Funkcje bazowe Worleya daj moliwo atwej rozbudowy. Mog by, podobnie jak szum Perlina, atwo skadane z innymi funkcjami (np. pooenie punktw nalecych do S moe by kontrolowane za pomoc innych funkcji teksturujcych, albo te wyjcie funkcji komrkowych moe by wykorzystywane przez inne funkcje teksturujce) oraz nakadane warstwami. Mona te wyobrazi sobie zastosowanie innych ni wedug diagramu Voronoi, podziaw przestrzeni. Metoda Worleya doczekaa si wielu implementacji (np. [Legakis]). Sposb generacji tekstur komrkowych Worleya zosta zaadoptowany przez Jamesa M. Kukla i Edwarda J. Bedwell ([Kukla]) do produkcji realistycznych wzorw skry. Przeksztacili oni oryginalne funkcje dzielce przestrze uzyskujc bardzo dobre wyniki symulacji m.in. naskrka ludzkiego. Wyniki niektrych ich prac znajduj si na Rysunek 3-19.
28
3.2.5. Podsumowanie
Z reguy te metody generacji, ktre uywaj podstaw fizycznych s w stanie tworzy ograniczon liczb wzorw. Nam chodzi o symulacj szerokiego krgu zjawisk fizycznych, ktrych jedynymi wsplnymi cechami s waciwoci wizualne podzia przestrzeni na komrki. Reaction-diffusion oraz Cell Division osigaj bardzo dobre wyniki w symulacji skry zwierzt. Autorzy mwi o innych potencjalnych zastosowaniach, ale nie podaj adnych konkretnych rezultatw. Przede wszystkim za te algorytmy dziaaj w sposb explicite i s mao wydajne. Pozostae sposoby generacji tekstur, czyli szum Perlina, metoda Miyaty oraz tekstury komrkowe Worleya nie tumacz podstaw powstawania adnych zjawisk. Miyata pokazuje jednak bardzo ograniczone zastosowanie swojej techniki. Techniki mao wydajnej i rwnie nie speniajcej oczekiwa stawianych przed tworzonym systemem. Szum Perlina bdzie wykorzystywany na pewno jako funkcja skadana z innymi. Sam nie jest jednak wystarczajcy, poniewa nie jest w stanie produkowa wikszoci wzorw komrkowych. Najbardziej obiecujce, bo posiadajce najszersze moliwoci zastosowania i rozbudowy wydaj si funkcje Worleya. Przykady podane przez autora oraz inne, ktre bazuj na tym sposobie podziau przestrzeni udowadniaj, e lista moliwych do uzyskania efektw jest duga. Funkcje te s stosunkowo wydajne i atwo poddaj si optymalizacji (przez obliczanie pewnych wartoci przed rozpoczciem renderingu, zastosowanie cache, itp.).
LIBTEX
LIBTEX [Walter 1992] to niezaleny od aplikacji zbir funkcji umoliwiajcych zastosowanie technik teksturowania w systemach do renderingu. Zakres obsugiwanych efektw jest bardzo may (istniej 3 rodzaje tekstur przestrzennych), aczkolwiek biblioteka moe by rozbudowywana. Architektura biblioteki jest bardzo prosta system dostarcza wsprzdnych punktu, ktry jest aktualnie cieniowany, a na jego podstawie obliczany zostaje kolor wynikowy. Sposb ewaluacji tekstur przestrzennych pokazuje Diagram 3-1.
29
W przypadku tekstur proceduralnych LIBTEX nie korzysta z adnych dodatkowych informacji o kontekcie cieniowania. Biblioteka przeprowadza te, co prawda, odwzorowanie nierwnoci powierzchni, gdzie korzysta z wartoci normalnej do cieniowanej powierzchni, jednak ta operacja oraz teksturowanie 2D nie wykorzystuj technik proceduralnych, a jedynie tradycyjne tekstury w postaci obrazw 2D lub map nierwnoci. LIBTEX przeprowadza prbkowanie punktowe. Nie posiada moliwoci antialiasingu tekstur.
PixelLoom
To najbardziej interesujca, bo posiadajca najwiksze moliwoci, biblioteka. Jest ona jednak produktem komercyjnym, dlatego nie ma na temat jej architektury ani sposobu dziaania wielu informacji. Rysunek 3-20 przedstawia obraz wygenerowany przy uyciu tekstur proceduralnych wchodzcych w skad biblioteki.
30
PixelLoom jest bibliotek suc jako baza do budowy aplikacji generujcych tekstury fotorealistyczne. Miaa si pod postaci TextureGenerator ukaza jako modu rozszerzenia do 3D Studio MAX, Lightwave i SoftImage. Nie wiadomo jednak jakimi moliwociami integracji z systemami do renderingu dysponuje. PixelLoom jest wykorzystywany przez kilka programw do generacji paskich tekstur. Jednym z nich jest CorelTEXTURE. CorelTEXTURE umoliwia tworzenie tekstur za pomoc techniki nakadania kolejnych warstw. Kada z warstw jest generowana przez jeden z wbudowanych algorytmw. Z interesujcej nas grupy zjawisk mona tam znale algorytm Komrki generujcy wiele rodzajw prostych tekstur komrkowych. Rysunek 3-21 przedstawia przykady moliwych do uzyskania efektw. CorelTEXTURE generuje jedynie paskie tekstury.
papier
chropowaty kamie
kamienie
wzr abstrakcyjny
Podsumowanie
Wikszo bibliotek tekstur jest zorientowana na konkretny system do renderingu. Przykadami s IFW Procedural Textures (http://www.shaders.org) duy zbir tekstur dla LightWave/Inspire Shades project (http://amber.rc.arizona.edu/lw/shades/) zbir tekstur dla LightWave, gwnie konwertowane z shaderw RenderMan RenderMan Repository (http://www.renderman.org) - zbir procedur teksturujcych pisanych w jzyku Shading Language 31
Wynika to z rnic midzy interfejsami proceduralnymi, ktre wystpuj midzy systemami. Uycie biblioteki z kadym nowym systemem wymaga stworzenia interfejsu poredniczcego adaptujcego bibliotek do konkretnego systemu. Pociga to za sob dodatkow komplikacj algorytmw i moe pocign spadek wydajnoci.
32
Funkcja przypisujca punktowi P jeden z dwch podanych kolorw. Tworzy wzr trjwymiarowej szachownicy.
identyfikator parametru
P scale white black color
opis
WEJCIA punkt w przestrzeni, dla ktrego obliczy kolor skala wzoru (wartoci > 1 powoduj zmniejszenie wzoru, (1, 1, 1) wartoci <1 jest powikszenie) (1, 1, 1) kolor pl parzystych (0, 0, 0) kolor pl nieparzystych WYJCIA kolor dla podanego punktu P
Tabela 4-1 Specyfikacja funkcji Checker
33
Skadanie funkcji bazowych odbywa si przy zastosowaniu pewnych regu: 1. Kademu z wej mona przypisa wyjcie innej funkcji bazowej jeli jest ono tego samego typu. Niech bd dane funkcje bazowe F i G takie, e
(o1, o2, ..., on) = F(p1, p2, ..., pn) o = G(pg1, pg2, ..., pgn), p1, p2, ..., pn parametry wejciowe, o, o1, o2, ..., on wyjcia wartoci produkowane przez funkcj
gdzie:
Wtedy przypisanie wyjcia funkcji G i-temu wejciu funkcji F mona zinterpretowa jako zoenie funkcji w ktrym uzyskujemy nastpujc posta funkcji F:
(o1, o2, ..., on) = F(p1,...,p(i-1), G(pg1, pg2, ..., pgn), ...,pn)
przy czym white3 i black3 mog by produktami jakich innych funkcji bazowych, natomiast white2 i black2 s wartociami domylnymi. 2. Wejcie bez przyporzdkowanego wyjcia innej funkcji bazowej ma warto sta rwn jego wartoci domylnej. 3. Po trzecie, jeli przyjmiemy, e funkcje bazowe to zbir wzw V grafu G=(V, E), a poczenia parametrw wejciowych z wyjciowymi s zbiorem jego krawdzi E, przy czym poczenie z dowolnym wejciem lub wyjciem funkcji bazowej f jest traktowane jak poczeniem z t funkcj to G musi by grafem zorientowanym, acyklicznym. Poprawne jest zatem poczenie na rysunku Rysunek 4-1 A, natomiast przypadek B jest niepoprawny i niemoliwy do obliczenia ze wzgldu na cykl prosty.
Kade wejcie i wyjcie moe by opisane jednym ze zdefiniowanych typw. Tabela 4-2 zawiera opisy wszystkich dostpnych typw.
34
charakterystyka
warto cakowita warto zmiennoprzecinkowa wsprzdne punktu, tablica 3 wartoci typu Float wektor, tablica 3 wartoci typu Float kolor RGB, tablica 3 wartoci typu Float (r, g, b), przy czym r, g, b le w przedziale [0..1] tablica wartoci typu Color tablica wartoci typu Float
Funkcja obliczajca zmodyfikowany wektor normalny do paszczyny majca dan funkcj wysokoci. Uwaga: Funkcja wymusza obliczenie wartoci height_func kilkukrotnie, przez to wszystkie wzory poczone w drzewie cieniowania pod wykorzystujcy je parametr height_func bd ewaluowane kilka razy dla rnych wartoci punktu P.
35
identyfikator parametru
typ
warto domylna
opis
(0, 0, 0) (0, 0, 1) 0
WEJCIA Parametry cieniowanego punktu (opis patrz punkt...). Uwaga: System wykorzystujcy bibliotek musi poprawnie wypeni struktur sample. Nie wszystkie systemy udostpniaj potrzebne informacje. punkt w przestrzeni, dla ktrego obliczy kolor normalna do paszczyzny w punkcie cieniowania funkcja wysokoci
Amplituda nierwnoci. Im wiksza tym bardziej odchylane 0.1 s normalne tym wyraniejsze nierwnoci na paszczynie. WYJCIA Nowy wektor normalny do paszczyzny
DPdv DPdu
Na rysunku: N normalna do paszczyzny N zmodyfikowana normalna dPdu, dPdv pochodne punktu w kierunkach osi parametrw u, v paszczyzny Majc dan funkcj wysokoci height_func, wektory U oraz V s obliczane jako height _ func P (N ) U = u v height _ func P V = (N ) v u Wektor U ley wic w tej samej paszczynie co dPdu, a jego dugo jest rwna zmianie height_func w kierunku wektora u. Wektor V ley w paszczynie dPdv i ma dugo rwn zmianie height_func w kierunku v. Suma tych dwch wektorw daje odchylenie D. Nowa warto N = N+D.
36
height _ func height _ func oraz funkcja oblicza wartoci height_func u v w punkcie P, oraz punktach P + u * i P + v * .
Aby zbada wartoci Do renderingu obrazka widocznego w metryce funkcji uyto realistycznego modelu owietlenia. Ciekawostk jest, e mona osign interesujce efekty pseudo-owietlenia traktujc kierunek normalnej jako kolor. Rysunek 4-3 jest przykadem takiego zastosowania funkcji CalculateNormal.
I ( i +1, j ) = G( i +1, j ) * (( x, y ) (i + 1, j )) I ( i , j +1) = G( i , j +1) * (( x, y ) (i, j + 1)) I ( i +1, j +1) = G( i +1, j +1) * (( x, y ) (i + 1, j + 1))
37
Wartoci te interpolujemy z wagami zalenymi od odlegoci punktu (x, y) od poszczeglnych wzw siatki, oznaczonych dalej jako Sx waga dla wymiaru x, oraz Sy waga dla wymiaru y.
(i, j)
G(i, j)
G(i+1,j)
+1 ,
1)
(i+1, j)
j)
, j+ V(i
i ,j) V(
V( i+1
(x, y)
, j+ 1)
V(i
(i, j+1)
G(i,j+1)
(i+1, j+1)
G(i+1, j+1)
0.5
0.5
38
Tak obliczona funkcja noise moe atwo by wykorzystana do generacji wzorw fraktalnych. Dodajc do siebie wartoci noise o rnych czstotliwociach uzyskujemy ciekawe efekty fraktalnego szumu bd tzw. turbulencji. Przykadowe obrazy s widoczne na Rysunek 4-6.
A - fraktalny szum
B - fraktalna turbulencja
Kolejne warstwy szumu posiadaj czstotliwo d razy wiksz. Zwykle d=2, a wic i-ta warstwa ma czstotliwo 2i. Szum z i-tej warstwy posiada take di razy mniejsz amplitud. Turbulencje uzyskuje si sumujc wartoci absolutne funkcji noise. Dodawanie szumu w celu uzyskania szumu i turbulencji fraktalnych zachodzi wic w nastpujcy sposb: octaves noise(d i P) fractal ( P, octaves, d ) = di i =0
turbulence( P, octaves, d ) =
octaves
i =0
abs (
noise(d i P) ) di
Implementacja
W bibliotece zostaa zaimplementowana abstrakcyjna klasa CNoise, ktra definiuje zachowanie szumu. Posiada ona midzy innymi funkcje pobierajce jednowymiarowe i trjwymiarowe wartoci szumu dla punktu w przestrzeni R1 i R3. S one wirtualne i abstrakcyjne i maj nastpujce deklaracje:
virtual virtual virtual virtual FLOAT FLOAT Point Point Get(FLOAT x) = 0; Get(Point &p) = 0; Get3D(FLOAT x) = 0; Get3D(Point &p) = 0;
Zarwno szum Perlina jak i opisane dalej inne rodzaje szumw s zdefiniowane w klasach pochodnych CNoise (CNoisePerlin itp.). Dodatkowo istnieje specjalna klasa pochodna CNoise o nazwie CNoiseFractal implementujca algorytm uzyskiwania szumu fraktalnego. Klasa ta jest sparametryzowana instancj klasy pochodnej CNoise (np. klasy CNoisePerlin, albo nawet CNoiseFractal) oraz nastpujcymi wartociami:
39
Typ int
Nazwa fractal
Opis
int float
octaves persistence
0 szum 1 szum fraktalny 2 turbulencja fraktalna Okrela maksymaln liczb warstw szumu Okrela czstotliwo kadej nastpnej warstwy i jest odpowiednikiem 1/d w opisywanym algorytmie
Funkcja bazowa
Funkcja bazowa NoisePerlin, ktra wykorzystuje opisane zaimplementowane w bibliotece TexLib ma nastpujce wasnoci:
NoisePerlin
powyej
algorytmy
Produkuje wartoci szumu Perlina. Zalenie od tego, jakie parametry wyjciowe s wykorzystywane, dla danego punktu P zwraca wartoci jedno lub trjwymiarowe. Potrafi take oblicza szum fraktalny, bd turbulencj fraktaln. Obrazek widoczny obok powsta przez wizualizacj trjwymiarowych wartoci szumu jako kolorw.
identyfikator parametru P fractal octaves typ warto domylna opis
persisten ce
float
min, max
float
float color
float color
WEJCIA Punkt, dla ktrego obliczy warto 0 szum, 1 szum fraktalny, 2 turbulencja fraktalna Maksymalna ilo oktaw (warstw) szumu Czstotliwo oktawy i+1 fi+1 jest rwna fi+1= fi * (1/persistence), natomiast amplituda a 0.5 ai+1 = ai*persistence Wartoci mniejsze powoduj may wpyw dalszych oktaw szumu, wartoci wiksze - duy. Standardowo szum zwraca wartoci z przedziau [-1..1]. Te parametry pozwalaj zmieni t charakterystyk przez ustalenie wartoci minimalnej i maksymalnej. -1, 1 Naley zwrci uwag na to, e jeli liczony jest szum fraktalny, otrzymywane wartoci kocowe nie bd si prawdopodobnie mieciy w zadanym przedziale. WYJCIA jednowymiarowa warto szumu trjwymiarowa warto szumu (0, 0, 0) 0 3
Tabela 4-4 Specyfikacja funkcji bazowej NoisePerlin
budowana jest 3-wymiarowa siatka wsprzdne kadego z wzw dyskretnej siatki (i, j, k) s przesuwane o pewien losowy wektor o dugoci z przedziau [0..1]. Zbir przeksztaconych punktw to S. dla punktu P(x, y, z), wsprzdne siatki (i, j, k) s obliczane dla kadego wymiaru jako najwiksze liczby cakowite mniejsze od odpowiedniej wsprzdnej (x, y, z) szukanych jest n najbliszych P punktw ze zbioru S. Obliczone wsprzdne (i, j, k) su przyspieszeniu wyszukiwania najbliszych punktw. Najbliszym bdzie bowiem ktry z punktw, ktrych wsprzdne dyskretne le w przedziale (i-1..i+1, j-1..j+1, k-1..k+1). Podany algorytm jest realizowany przez funkcj noiseV(P, irregularity), gdzie parametr irregularity jest maksymaln dugoci wektora odchylajcego pierwotne pooenia punktw ze zbioru S (patrz. punkt 2. algorytmu). Wynikiem wywoania funkcji noiseV dziaajcej w opisany powyej sposb moe by (patrz: Rysunek 4-7): A - Odlego do n-tego najbliszego punktu ze zbioru S. Na rysunku np. odlego |PC| dla n=1, odlego |PS(i-1, j, k)| dla n=2 itd. B - Wsprzdne n-tego najbliszego punktu ze zbioru S. Na rysunku punkt C dla n=1, punkt S(i-1, j, k) dla n=2 itd. C - Najmniejsza odlego do jednej z paszczyzn prostopadych do wektorw C-S(l, m, n) i przechodzcych przez ich rodki, gdzie: C jest punktem S(i, j, k), najbliszym punktowi P, (l, m, n)(i, j, k) Innymi sowy, odlego do najbliszej ciany komrki wynikajcej z podziau Voronoi. Na rysunku jest to odlego d, bdca odlegoci od paszczyzny prostopadej do wektora V=C-S(i-1, j+1, k) i przechodzcej przez punkt M, ktry jest rodkiem wektora V.
S(i-1, j, k)
S(i+1, j, k)
P M
S(i, j, k)=C
m /2
37
S(i-1, j+1, k)
S(i+1, j+1, k)
Rysunek 4-7 Wyniki dziaania funkcji noiseV. Przekrj przez przestrze R3.
41
Kolejne ilustracje (Rysunek 4-8) pomog wyobrazi sobie, jakie moliwoci daje tak zdefiniowana funkcja.
Ilustracja A to wynik dziaania funkcji zwracajcej odlego od najbliszego punktu ze zbioru S. Zwracana warto skalarna suy jako waga przy liniowej interpolacji midzy dwoma kolorami. Ilustracja B dobrze ilustruje podzia przestrzeni na wg. diagramu Voronoi. W poczeniu z wartoci odlegoci od granicy komrki (Ilustracja C) daje to moliwoci budowy wzorw typu kamie naturalny, mur kamienny itp. Naley tutaj zauway ciekaw moliwo, jak daj zoone funkcje biorce jako parametry wartoci odlego od n-tego punktu ze zbioru S. Oznaczmy przez noiseVn funkcj zwracajc n-ty najbliszy punkt i posiadajc parametr irregularity = 0.5. Tabela 4-5 pokazuje przykadowe liniowe i nieliniowe kombinacje funkcji tego typu. Na ilustracjach w tabeli wynik skalarny funkcji F zosta uyty do interpolacji liniowej midzy kolorami czarnym i biaym. Wszystkie funkcje z powyszej tabeli zostay znalezione z uyciem automatycznych funkcji przeszukiwania dziedziny parametrw, o ktrych bdzie mowa pniej. Te kilka przykadowych obrazw pokazuje duy potencja, ktry ju w swojej podstawowej wersji, posiada funkcja noiseV. Opisywane w Rozdziale 3 wzory ludzkiej skry zostay przez Jamesa M. Kukla i Edwarda J. Bedwell ([Kukla]) stworzone wanie przy uyciu liniowych kombinacji funkcji Worleya.
42
F = 0.4*noiseV1 0.7*noiseV2
octaves
i =0
abs(
noiseV (d i P, irregularity ) ) di
43
Drugie podejcie do stworzenia fraktalnej funkcji noiseV polega na zastosowaniu podpodziaw ju podzielonej przestrzeni. Efekt takich podpodziaw bdzie wyglda jak na Rysunek 4-9, na ktrym zastosowano 3 poziomy funkcji noiseV zwracajcej wynik typu B wsprzdne najbliszego punktu ze zbioru S.
A podzia na 1 poziomie
B podzia na 2 poziomach
C podzia na 3 poziomach
Na ilustracji B niektre z komrek zostay podzielone funkcj noiseV o dwukrotnie wikszej czstotliwoci. Na ilustracji C niektre z podzielonych wczeniej komrek ulegy kolejnemu podziaowi. Podzia komrek na kadym etapie (w kadej iteracji) jest kontrolowany za pomoc wspczynnikw prawdopodobiestwa podziau. Na powyszym przykadzie dla obydwu etapw by on rwny 0.5. Warunek podziau wyglda nastpujco: f < wsp_podziau[warstwa], gdzie: f liczba losowa z przedziau [0..1], niezmienna dla danej komrki (ustalana na podstawie obecnego najbliszego punktu ze zbioru S; wsp_podziau wspczynnik podziau dla warstwy na ktrej si znajdujemy Algorytm kontrolujcy obliczenia zwizane z tym wzorem wyglda jak na Program 4-1.
let warstwa = 0; //ptla obliczania punktu S repeat { S = noiseV(P); //oblicz najbliszy punkt ze zbioru S f = losowa(S); //we losow liczb dla punktu S if ( (warstwa < max_ilo_warstw) and //jeli moe by wicej warstw (f < wsp_podziau[warstwa]) ) //warunek podziau { warstwa += 1;// przechodzimy do kolejnej warstwy P = P * d; // zmieniamy czstotliwo (patrz: opis fraktalnego // szumu Perlina) P = P + S; // dodatkowe, opcjonalne przesunicie dziki ktremu // ssiednie komrki nie cz si ze sob } else break; } //S wynik: punkt ze zbioru S najbliszy punktowi P // na warstwa warstwie
44
Ciekawe efekty daje uycie zoonych funkcji, ktrych skadowe zwracane s przez funkcje fractalV bd turbulenceV. Oznaczmy przez fractalVn oraz turbulenceVn funkcj fraktaln uywajc fractalV(P, 3, 0.5, 0.5) lub turbulenceV(P, 3, 0.5, 0.5) zwracajc n-ty najbliszy punkt. Przykadowe rezultaty tak uzyskanych funkcji znajduj si w Tabela 4-6.
45
Niewtpliwie s to najciekawsze z zaprezentowanych tutaj wzorw, jednak ze wzgldu na swoj zoono, jeli chodzi o parametry, nie s proste do wykorzystania praktycznego polegajcego na symulacji dobrze znanych z natury wzorw.
(x y )
i i n
Istnieje jeszcze co najmniej kilka ciekawych metryk, ktre mona tutaj zastosowa: metryki Euklidesowe, czyli zachowujce rwnanie trjkta ([Cahn], [Duda]). dist ( X , Y ) dist (Y , Z ) + dist ( X , Z ) o metryka Manhattan: odlego midzy dwoma punktami w przestrzeni nwymiarowej jest rwna sumie odlegoci midzy poszczeglnymi wymiarami. Nazwa Manhattan pochodzi std, e w miecie odlegoci midzy 2 punktami nie mona zmierzy prost, lecz liniami prostopadymi do siebie. dist ( X ( x1 , x2 ,.., xn ), Y ( y1 , y2 ,.., yn )) = xi yi
n
o metryka Chebycheva: odlego midzy dwoma punktami w przestrzeni nwymiarowej jest rwna maksimum z rnic midzy poszczeglnymi wymiarami dist ( X ( x1 , x2 ,.., xn ), Y ( y1 , y2 ,.., yn )) = Max ( x1 y1 , x2 y2 ,.., xn yn )
metryki nieeuklidesowe [Fielding] o metryka cosinusowa: cosinus kta midzy dwoma wektorami xi yi n dist ( X , Y ) = xi2 yi2 n n
Oto przykady wzorw uzyskanych dziki tym metrykom (wszystkie wzory zostay uzyskane przy uyciu tego samego drzewa cieniowania, jedyn rnic jest wykorzystana metryka):
A metryka Euklidesa
B - metryka Chebycheva
46
C metryka Manhattan
Funkcje bazowe
Zaimplementowane zostay 2 funkcje bazowe wykorzystujce algorytm podziau przestrzeni wedug diagramu Voronoi. Ich metryki zostay przedstawione w Tabela 4-7 i Tabela 4-8.
NoiseWorley
Produkuje wartoci szumu Worleya (wynikajcego z podziau przestrzeni wedug diagramu Voronoi) 1D oraz 3D. Wynik skalarny jest dla punktu P odlegoci od najbliszego punktu ze zbioru S. Wynik 3D to wsprzdne tego punktu. Warto border_dist jest odlegoci od granicy komrki.
identyfikator parametru P metrics fractal octaves typ warto domylna opis
(0, 0, 0) 0 0 3
persisten ce
float
0.5
WEJCIA Punkt, dla ktrego obliczy warto Jak stosowa metryk obliczania odlegoci: 0 euklidesowa 1 Manhattan 2 Chebycheva 0 szum, 1 szum fraktalny, 2 turbulencja fraktalna Maksymalna ilo oktaw (warstw) szumu Czstotliwo oktawy i+1 fi+1 jest rwna fi+1= fi * (1/persistence), natomiast amplituda a ai+1 = ai*persistence Wartoci mniejsze powoduj may wpyw dalszych oktaw szumu, wartoci wiksze - duy.
47
Nieregularno komrek. Ta warto powinna zawiera si w przedziale [0..1]. Wartoci wiksze od 1 mog Float 0.5 wprowadzi do obrazu artefakty, wartoci mniejsze od 0 s niedopuszczalne i zamieniane na 0. Wartoci liniowych wspczynnikw przy obliczaniu linear_co FloatArra [1] jednowymiarowej wartoci szumu. Domylnie warto eff y funkcji jest obliczana jako F1. WYJCIA float Float Jednowymiarowa warto szumu. Trjwymiarowa warto szumu, bdca wsprzdnymi punktu rodka color Color najbliszej komrki. Parametr linear_coeff nie ma znaczenia dla tego parametru wyjciowego.
irregular ity border_di st
Float
Produkuje wartoci szumu Worleya (wynikajcego z podziau przestrzeni wedug diagramu Voronoi) 1D oraz 3D na losowym poziomie podpodziau. Poziom podpodziau w danej komrce jest rekurencyjnie kontrolowany za pomoc wspczynnikw okrelajcych prawdopodobiestwo przejcia na nastpny poziom. Wynik skalarny jest dla punktu P odlegoci od najbliszego punktu ze zbioru S na danym poziomie. Wynik 3D to wsprzdne tego punktu. Warto level jest poziomem podziau.
identyfikator parametru P metrics typ warto domylna opis
point int
(0, 0, 0) 0 [0.5]
persisten ce
float
0.5
irregular ity
Float
0.5
WEJCIA Punkt, dla ktrego obliczy warto Jak stosowa metryk obliczania odlegoci: 0 euklidesowa 1 Manhattan 2 Chebycheva Wspczynniki prawdopodobiestwa przejcia w danej komrce na nastpny poziom (do nastpnej warstwy). Czstotliwo warstwy i+1 fi+1 jest rwna fi+1= fi * (1/persistence), natomiast amplituda a ai+1 = ai*persistence Wartoci mniejsze powoduj pojawienie si maych komrek na nastpnych warstwach, wartoci wiksze duych komrek (dla wartoci >1 komrki bd wiksze od tych na oryginalnej warstwie. Nieregularno komrek. Ta warto powinna zawiera si w przedziale [0..1]. Wartoci wiksze od 1 mog wprowadzi do obrazu artefakty, wartoci mniejsze od 0 s niedopuszczalne i zamieniane na 0. WYJCIA 48
Jednowymiarowa warto szumu Trjwymiarowa warto szumu, bdca wprzdnymi punktu rodka najbliszej komrki. Poziom zagbienia (aktualna warstwa)
49
5.1. Architektura
Zarwno bibliotek jak i system, ktre j wykorzystuje, mona podzieli z naszego punktu widzenia na pewne moduy funkcjonalne (niekoniecznie pokrywajce si z moduami wynikajcymi z implementacji). Architektura biblioteki oraz potencjalnego systemu j wykorzystujcego przedstawiona zostaa na Diagram 5-1. SYSTEM funkcja cieniujca kontekst cieniowania BIBLIOTEKA TexLib kontekst cieniowania funkcje cieniujce obsuga drzew cieniowania
interfejs
serializacja
GUI
5.1.1. Interfejs
Biblioteka komunikuje si z systemem renderujcym za pomoc interfejsu, ktry udostpnia funkcje definiowania i obsugi drzew cieniowania. To, w jaki sposb interfejs jest uywany przez system renderujcy, jest zalene od jego implementacji, jednak najczciej funkcje interfejsu biblioteki s wywoywane z funkcji cieniujcych (patrz: opis przebiegu renderingu w punkcie 2.1).
5.1.3. Biblioteka
Z punktu widzenia aplikacji i interfejsu do biblioteki, w TexLib mona wydzieli 4 gwne moduy funkcjonalne: 1. Obsuga drzew cieniowania. Modu obsugi drzew cieniowania przechowuje definicje tekstur (bdcych zoeniami podstawowych funkcji cieniujcych) oraz wykonuje ich 50
ewaluacj. Drzewa cieniowania mog by z poziomu interfejsu budowane, zapisywane, odczytywane i wykorzystywane do ewaluacji konkretnych wartoci modyfikujcych wasnoci powierzchni. 2. Funkcje cieniujce. Biblioteka posiada pewn liczb wbudowanych, standardowych funkcji cieniujcych. S to midzy innymi funkcje zwizane z podstawowymi operacjami skadania kilku innych funkcji, interpolacji, narzdzia wspomagajce budowanie tekstur modyfikujcych normalne cieniowanych powierzchni i inne. Biblioteka moe by atwo rozszerzana o dodatkowe funkcjonalnoci zwizane z funkcjami cieniujcymi dziki dodatkowym moduom (oznaczonym na diagramie jako dodatkowe funkcje cieniujce). Ilo dodatkowych moduw rozszerzajcych jest nieograniczona (implementacyjnie, moduy z funkcjami cieniujcymi to biblioteki czone dynamicznie (DLL w przypadku Windows). Standardowo istnieje 1 modu rozszerzajcy bibliotek o nowe funkcje cieniujce oznaczony na diagramie jako standardowy modu funkcji cieniujcych. Zawarte s w nim wszystkie funkcje wykorzystywane w tej pracy do produkcji tekstur. 3. Serializacja. Drzewa cieniowania mog by zapisywane i odczytywane z dysku, czym zajmuje si modu serializacji. Modu tworzy pliki w formacie *.TREE (opis formatu *.TREE zosta przedstawiony w dodatku Dodatek B). 4. Kontekst cieniowania. W trakcie procesu tworzenia obrazu (renderingu) biblioteka musi zna aktualny kontekst cieniowania (czyli wsprzdne cieniowanego punktu, normalna do powierzchni, informacje zwizane z antialiasingiem i wiele innych informacji). Przechowywaniem oraz dostarczaniem kontekstu odpowiednim funkcjom wewntrz biblioteki TexLib zajmuje si modu funkcjonalny oznaczony na Diagram 5-1 jako kontekst cieniowania.
51
52
53
54
55
Nazwa funkcji
Initialise()
Opis funkcji Inicjacja wzoru. W trakcie tego procesu wykonywane s wszystkie operacje, ktre nie musz by powtarzane w trakcie renderingu. Inicjowane s take wartoci parametrw wejciowych, ktrych zmian nie przewiduje si w trakcie renderingu. Funkcja wywoywana, jeli warto parametru o identyfikatorze id staje si nieaktualna (np. w czasie zmiany kontekstu wejciowego spowodowanej rozpoczciem oblicze dla kolejnej prbki). Powinna zaznaczy wszystkie wartoci parametrw wyjciowych jako nieaktualne (te wanie operacje wykonuje domylna implementacja, przecianie nie jest wic zwykle konieczne). Funkcja, ktra powinna ustawi poprawne wartoci parametrw 56
Invalidate(int id)
Evaluate()
wyjciowych. Istnieje take alternatywna posta Evaluate(int id), ktra powinna obliczy parametr o identyfikatorze id. Zwykle jednak Evaluate(int id) wywouje Evaluate(), poniewa specyfika wzorw nie pozwala na obliczenie pojedynczego parametru wyjciowego, bez obliczania innych.
Tabela 5-1 Funkcje wirtualne klasy CPattern
Obiekty klasy CPattern posiadaj wskanik na obiekt CPatternFactory (patrz: opis klasy CPatternFactory). Specjalnym przypadkiem klas CPattern s klasy CInContext oraz COutContext, ktre opisuj konteksty odpowiednio wejciowy oraz wejciowy. Zachowanie niektrych funkcji (Evaluate, Initialise), rni si w ich przypadku nieco od reszty wzorw zdefiniowanych bd to standardowo bd przez uytkownika.
Klasa CManager
Implementuje wzorzec Singleton [Gamma 1995]. Moe istnie tylko jeden obiekt tej klasy. Klasa suy do zarzdzania wzorami dostpnymi w bibliotece. Najwaniejsze jej funkcjonalnoci to: Przechowywanie informacji o wszystkich dostpnych wzorach. Klasa CManager posiada tablic obiektw klas CPatternFactory, ktre pozwalaj na tworzenie nowych obiektw klas wzorw (funkcja New() w klasie CPatternFactory). Wykorzystano tutaj wzorzec projektowy Abstract Factory [Gamma 1995]. adowanie zewntrznych bibliotek wzorw (DLL)
Klasa CShadeTree
Klasa opisuje drzewo cieniowania, czyli zbir dowolnej iloci poczonych ze sob wzorw i wartoci. Specjalnym przypadkiem s wzory CInContext oraz COutContext, czyli konteksty wejciowy i wyjciowy. Obiekty tych klas istniej w drzewie cieniowania zawsze, i zawsze moe by tylko jeden kontekst wejciowy i wyjciowy. Klasa ta zajmuje si take serializacj drzew cieniowania (zapisywaniem i adowaniem plikw *.TREE). Wzory oraz wartoci stae s przechowywane wewntrz klasy w dwch tablicach. Poczenia midzy parametrami wejciowymi i wejciowymi wzorw s realizowane przez klasy CLinkIn oraz CLinkOut. Parametry wejciowe, czyli obiekty klasy CLinkIn, posiadaj wskaniki na wartoci (CAbstractValue), ktrych wacicielami (patrz: opis klasy CAbstractValue) mog by obiekty CLinkOut. Jeli obiekt CLinkIn posiada wskanik na warto bez waciciela, to oznacza to warto sta.
57
Obliczenie koloru, przesunicia oraz przezroczystoci wiata To i inne skadowe bez modelu owietlenia Zastosowanie modelu owietlenia
Biblioteka TexLib moe by wykorzystywana w fazach obliczania przesunicia, przezroczystoci oraz koloru (zaley to od tego, jakie parametry powierzchni bd przez ni modyfikowane). Biblioteka nie zakada adnej kolejnoci wykonywania oblicze zwizanych z modyfikacj parametrw powierzchni przez system renderujcy. W szczeglnoci, kolejno nie musi wyglda jak na diagramie powyej. Niewtpliwie jednak przygotowanie kontekstu wejciowego (czyli obliczenie wsprzdnych cieniowanego punktu, normalnej do powierzchni w tym punkcie, danych zwizanych z filtrowaniem (antyaliasingiem) musi nastpi dla kadego cieniowanego punktu przed rozpoczciem korzystania z TexLib. Sposb dziaania systemu wykorzystujcego TexLib w fazie cieniowania opisuje dokadniej pseudokod Program 5-1.
() zainicjuj bibliotek TexLib; zaaduj drzewo cieniowania tree uywajc TexLib; ustaw parametry w tree jeli to konieczne; zainicjuj tree; () dla kadej prbki { ()
58
wyznacz swj kontekst cieniowania dla prbki; () ustaw kontekst cieniowania w TexLib; zaznacz wszystkie wartoci parametrw wyjciowych wzorw nieaktualne; if (tree modyfikuje normaln) { pobierz warto normalnej z tree; ustal warto normalnej w swoim kontekcie; } if (tree modyfikuje przezroczysto) { pobierz warto przezroczystoci z tree; ustal warto przezroczystoci w swoim kontekcie; } if (tree modyfikuje kolor) { pobierz warto koloru z tree; ustal warto koloru w swoim kontekcie; } () } skasuj drzewo cieniowania tree; () przetwarzanie dodatkowe (post-processing); ()
jako
Jak wida na powyszym pseudokodzie, proces renderingu przebiega w kilku fazach. Wszystkie one s inicjowane wywoaniami odpowiednich funkcji interfejsu biblioteki z poziomu systemu renderujcego. Poniej znajduje si opis wszystkich tych faz wraz z opisem odpowiednich funkcji interfejsu biblioteki. Deklaracje funkcji interfejsu uywaj kilku specjalnych typw, ktre zostay opisane w Tabela 5-2.
Identyfikator typu PTREE PINCX POUTCX Opis
Wskanik na obiekt drzewa cieniowania Wskanik na obiekt kontekstu wejciowego Wskanik na obiekt kontekstu wyjciowego Identyfikator parametru wejciowego lub wyjciowego wzoru (take parametrw kontekstw). Moe by liczb cakowit identyfikujc jednoznacznie parametr w ramach wzoru (zwracany przez odpowiednie funkcje interfejsu) lub acuchem znakw z nazw parametru. Uwaga: Zalecane jest uywanie identyfikatorw liczbowych ze wzgldu na wydajno.
Tabela 5-2 Charakterystyczne typy interfejsu biblioteki TexLib
ID
inne zmienne, ktre nie ulegaj zmianie w trakcie dziaania biblioteki (np. losowe tablice mieszajce). Nie istniej specjalne funkcje suce inicjalizacji biblioteki. Ta operacja jest wykonywana przy pierwszym uyciu dowolnej funkcji interfejsu ktra tego wymaga, przezroczycie dla uytkownika. 2. Budowa drzewa cieniowania. TexLib aduje wskazany plik *.TREE z definicj drzewa cieniowania. Alternatywnie, drzewo jest budowane za pomoc wywoa odpowiednich funkcji interfejsu (funkcje te s opisane dokadniej w punkcie 5.4). Tak zbudowane drzewo moe zosta zapisane do pliku *.TREE i odczytanie przy nastpnej potrzebie. Jeli wzr zosta zaadowany, istnieje moliwo jego modyfikacji.
PTREE TCShadeTreeCreate(PINCX *incx, POUTCX *outcx)
Parametry
incx (OUT) kontekst wejciowy nowo utworzonego drzewa cieniowania outcx (OUT) kontekst wyjciowy nowo utworzonego drzewa cieniowania
Warto zwracana Wskanik do nowo utworzonego drzewa cieniowania, lub warto PTREE_NULL, jeli operacja tworzenia nie powioda si Tworzy nowe drzewo cieniowania, ktre zawiera tylko 2 standardowe wzory: InContext oraz OutContext.
bool TCShadeTreeLoad(PTREE tree, char *fileName)
Parametry
wskanik na wczeniej stworzone drzewo cieniowania (za pomoc funkcji TCShadeTreeCreate) fileName (IN) nazwa pliku *.TREE z ktrego odczyta definicj drzewa. cieki wzgldne odnosz si do katalogu roboczego aplikacji (systemu renderujcego) wykorzystujcego bibliotek.
tree (IN)
Warto zwracana true, jeli operacja wczytania powioda si, false w przeciwnym wypadku. Operacja wczytania moe nie powie si z kilku powodw: nie istnieje plik o podanej nazwie plik zawiera nieprawidow definicj drzewa (jest niepoprawny syntaktycznie, patrz: Dodatek B) definicja drzewa uywa nieznanych wzorw (tzn. wzorw doczanych jako dodatki w formie bibliotek DLL) aduje drzewo z pliku, ktrego nazwa jest okrelona parametrem fileName. Parametr tree musi zawiera wskanik na wczeniej utworzone drzewo. Jeli zawierao ono ju jakie wzory (zostao na przykad wczeniej wczytane za pomoc TCShadeTreeLoad), to zostan one przed operacj wczytania skasowane.
Tabela 5-3 Funkcje interfejsu biblioteki zwizane z tworzeniem drzew cieniowania
3. Inicjalizacja drzewa cieniowania. Przed rozpoczciem renderingu biblioteka inicjuje wzr. Jest to zwizane z wydajnoci, o czym bya mowa w punkcie 2.4. Wikszo systemw daje moliwo inicjacji tekstur proceduralnych wywoujc przed rozpoczciem renderingu (ale ju po ustawieniu parametrw tekstury) odpowiedni procedur. To wywoanie zostao zaznaczone w Program 5-1. Procedura inicjacji drzewa cieniowania nie powinna by wywoywana dla kadej cieniowanej prbki ze wzgldw wydajnociowych. Takie wywoanie nie zmienioby jednak wygldu generowanego obrazu. 60
Parametry
tree (IN)
Warto zwracana true, jeli inicjalizacja powida si, false w przeciwnym wypadku. Operacja inicjalizacji moe si nie powie z kilku powodw: brak pamici do inicjalizacji tablic lub stworzenia potrzebnych obiektw w jednym ze wzorw nieprawidowe drzewo cieniowania, tzn. drzewo zawiera cykle proste (waciwie taka sytuacja nie powinna si zdarzy, poniewa narzdzia suce do budowy drzew cieniowania opisywane dalej nie pozwalaj nazbudowanie nieprawidowego drzewa Funkcja inicjalizuje podane drzewo cieniowania. W tym czasie inicjalizowane s take wszystkie wzory i zmienne wchodzce w skad drzewa.
Tabela 5-4 Funkcje interfejsu biblioteki suce do inicjalizacji drzewa cieniowania
4. Rendering. a. Okrelenie kontekstu cieniowania Obliczenie wasnoci kadej prbki, ktr dostarczy system renderujcy wie si z kilkoma operacjami. System musi poinformowa TexLib o rozpoczciu oblicze dla nowej prbki wywoaniem odpowiedniej procedury interfejsu. Po tym powinno nastpi ustawienie kontekstu wejciowego dla aktywnego drzewa cieniowania. Ustawienie kontekstu wymaga rnej iloci operacji, zalenie od tego, jakie wartoci tego kontekstu s przez konkretne drzewo wykorzystywane b. Ewaluacja Ewaluacja jest od strony systemu renderujcego bardzo prosta i polega na pobieraniu wyj kontekstu wyjciowego aktywnego drzewa cieniowania. Kade pobranie moe (ale nie musi, zaley to od tego, czy kontekst wejciowy zmieni si od czasu poprzedniego dania obliczenia) wywoa cig ewaluacji wewntrz drzewa. Istniej dwa tryby ewaluacji: punktowy i powierzchniowy (ang. point i area), zalene od tego, czy system chce uywa antialiasingu czy nie. Zgoszenie odpowiedniego dania odbywa si poprzez ustawienie odpowiedniej zmiennej kontekstu wejciowego biblioteki.
int TCShadeTreeOutCxModified(PTREE tree, ID id)
Parametry
wskanik na drzewo cieniowania identyfikator parametru wyjciowego kontekstu wyjciowego drzewa (definicje parametrw patrz punkt 5.5)
Warto zwracana 0 jeli podany parametr wyjciowy kontekstu wyjciowego nie jest modyfikowany, warto rna od 0 w przeciwnym wypadku Funkcja suy do badania, czy dane drzewo cieniowania modyfikuje podany parametr kontekstu wyjciowego. System renderujcy moe w ten sposb zbada, ktre z parametrw swojego kontekstu zmienia na podstawie kontekstu wyjciowego drzewa cieniowania. atwo si w ten sposb np. dowiedzie, czy dane drzewo modyfikuje kolor powierzchni, jej normaln czy te przezroczysto. Zastosowanie tej, jak i wikszoci innych opisywanych tu funkcji interfejsu, mona znale w aplikacji opisanej w rozdziale 6.
61
gdzie xxx, yyy wedug Tabela 5-6 Parametry tree (IN) id (IN) yyy (OUT) Warto zwracana Nic
wskanik na drzewo cieniowania identyfikator parametru wyjciowego kontekstu wyjciowego drzewa (definicje parametrw patrz punkt 5.5) warto parametru wyjciowego kontekstu wyjciowego
Parametry
wskanik na drzewo cieniowania identyfikator parametru wyjciowego kontekstu wyjciowego drzewa (definicje parametrw patrz punkt 5.5)
Warto zwracana 0, jeli parametr wejciowy kontekstu wejciowego podanego drzewa cieniowania jest uywany przez jaki wzr, warto rna od 0 w przeciwnym wypadku Funkcja sprawdza, czy podany parametr wejciowego kontekstu wejciowego jest uywany przez jakikolwiek wzr. Jeli nie jest (tzn. jeli funkcja zwraca warto 0), system renderujcy nie musi ustawia tej wartoci kontekstu w czasie renderingu, co moe prowadzi do polepszenia wydajnoci.
void TCShadeTreeInCxSetxxx(PTREE tree, ID id, yyy)
Parametry
wskanik na drzewo cieniowania identyfikator parametru wyjciowego kontekstu wyjciowego drzewa (definicje parametrw patrz punkt 5.5) warto parametru wejciowego kontekstu wejciowego
Warto zwracana Nic Funkcja ustawia warto kontekstu wejciowego drzewa. Musi by wywoywana dla kadego parametru kontekstu wejciowego biblioteki, ktry jest uywany przez dane drzewo.
void TCShadeTreeInvalidateAll(PTREE tree) void TCShadeTreeInvalidate(PTREE tree, ID id)
Parametry
Warto zwracana Nic Funkcja powiadamia drzewo cieniowania o deaktualizacji wartoci parametru wejciowego kontekstu wejciowego. Drzewo nie przeliczy swoich parametrw wyjciowych jeli system nie wywoa jednej z powyszych funkcji. Pierwsza posta funkcji dezaktualizuje wszystkie parametry wejciowe, natomiast druga tylko jeden, podany parametr (w ten sposb moemy uzyska pewn optymalizacj ewaluacji drzewa cieniowania, poniewa przeliczane bd tylko te parametry wyjciowe, ktre zale od tych zdeaktualizowanych za pomoc TCShadeTreeInvalidate ).
Tabela 5-5 Funkcje interfejsu biblioteki wykorzystywane w trakcie renderingu
62
Przyrostek funkcji, np: TCShadeTreeOutCxGet... Int Float Point Color Vector Sample FloatArray ColorArray
Parametry funkcji zalene od przyrostka funkcje Get int * FLOAT * FLOAT[3] FLOAT[3] FLOAT[3] TSample * int *, FLOAT * int *, FLOAT[3] * funkcje Set int FLOAT FLOAT[3] FLOAT[3] FLOAT[3] TSample int, FLOAT * int, FLOAT[3] *
5. Zakoczenie dziaania biblioteki Zakoczenie dziaania wie si ze skasowaniem wszystkich uytych drzew cieniowania oraz zwolnieniem wykorzystywanych obiektw pomocniczych. Operacje te s wykonywane po wywoaniu odpowiednich funkcji interfejsu.
void TCShadeTreeDestroy(PTREE tree)
Parametry
tree (IN)
Warto zwracana Nic Funkcja kasuje podane drzewo cieniowania. Uwaga: parametr tree musi by prawidowym wskanikiem na drzewo cieniowania.
void TTerminate()
Parametry
Nic
Warto zwracana Nic Funkcja powinna by wywoana po zakoczeniu pracy z bibliotek. Zwolniona zostanie pami po wszystkich wykorzystywanych obiektach oraz odadowane zostan biblioteki dynamiczne z dodatkowymi wzorami.
Tabela 5-7 Funkcje interfejsu biblioteki zwizane z koczeniem dziaania
63
class CFactoryChecker : public CPatternFactory { virtual CPattern *New() { return new CPatternChecker(this); }; virtual char *GetName() { return name; }; private : static char name[]; }; char CFactoryPattern::name[] = Checker;
Klasa dziedziczca po CPattern implementuje kilka metod umoliwiajcych jej wykorzystanie w drzewach cieniowania. Program 5-3 zawiera przykadow deklaracj CPatternFactory, zawierajc funkcje, ktre s w CPattern zadeklarowane jako abstrakcyjne, a wic ktrych pokrycie jest konieczne w klasach pochodnych.
class CPatternChecker : public CPattern { public: CPatternChecker(CFactoryChecker *pFactory); virtual void Evaluate(); virtual void EvaluateArea(); virtual void Initialise(CShadeTree *pShadeTree = NULL); };
Biblioteka DLL zawierajca definicje nowych wzorw musi ponadto zawiera publiczn (eksportowan) funkcj o sygnaturze TPatternFactories *Init(), ktra po zawoaniu zwrci tablic obiektw typu CPatternFactory (dla kadego nowego typu naley stworzy jeden obiekt CPatternFactory). Obiekty te (ich funkcja New()) posu bibliotece do tworzenia obiektw wzorw.
jednym z systemw implikuje obecno w kontekcie cieniowania zmiennych pozwalajcych na dokadn identyfikacj cieniowanego wielokta w ten sposb mona wykorzysta wczeniej obliczone owietlenie). Poniej znajduje si zestawienie najwaniejszych informacji, ktre popularne systemy udostpniaj w swoich interfejsach do programowania tekstur proceduralnych. Dla kadego systemu przedstawiono 3 kategorie zmiennych: podstawowe, zwizane z antialiasingiem oraz inne. Odpowiadaj one przedstawionej wyej klasyfikacji.
punkt 2D Znormalizowane pooenie piksela na ekranie punkt punkt punkt punkt punkt punkt float Wsprzdne w ukadzie UVW Wsprzdne cieniowanego punktu Wektor widoku o pocztku w punkcie pooenia kamery i kierunku do cieniowanego punktu (znormalizowany) Normalna w kierunku obserwatora (mona j zmodyfikowa za pomoc funkcji SetNormal) Oryginalna normalna do powierzchni (normalna wynikajca z geometrii, na ktr nie ma wpywu uycie SetNormal) Normalna trjkta) geometryczna (normalna do cieniowanego
Antialias DP DUVW
cieniowanie
powinno
uywa
metod
Pochodna P wzgldem piksela. Mwi o tym, jak szybko zmienia si pozycja wzgldem ekranu. Pochodne UVW dla punktu. Uywana do celw antialiasingu. Opisuje jak szybko zmienia si normalna. Zmienna jest uywana gwnie do antyaliasingu podczas tworzenia obliczania mapowania rodowiskowego. Im wiksza warto Curve, tym wiksza powierzchnia musi by prbkowana.
inne
Curve
Node
obiekt
INode
temat cieniowanego wza sceny. Wzy posiadaj swoje nazwy, macierze transformacji, klucze animacji. Mog by ukadane w hierachii. Jest to wskanik do obiektu cieniowanej geometrii. Wsprzdne barycentryczne cieniowanego trjkta Wspczynnik zaamania wiata
Klasa ShadeOutput, w ktrej materia pozostawia wyniki oblicze, posiada atrybuty opisujce kolor, przezroczysto oraz wspczynnik zaamania (ang: index of refraction)
5.5.2. LightWorks
LightWorks Application Development System jest opisany w ... Udostpnia midzy innymi informacje przedstawione w Tabela 5-9 Wybrane zmienne kontekstu cieniowania systemu LightWorks.
Nazwa Typ podstawowe C P I E alpha Opis
kolor punkt
Kolor powierzchni w aktualnie cieniowanym punkcie Wsprzdne w ukadzie obiektu aktualnie cieniowanego punktu Pooenie obserwatora Wspczynnik pokrycia powierzchni (1 powierzchnia pokrywa cakowicie, 0 powierzchnia niewidoczna) Przezroczysto. Jest to filtr, przez ktry mnoony jest kolor spoza powierzchni. Naley zauway rnic midzy t zmienn a zmienn alpha, ktra steruje widocznoci powierzchni. Dla alpha = 0 powierzchnia bdzie niewidoczna, tymczasem dla T = (0, 0, 0) powierzchnia bdzie miaa kolor C. Dla T= (1, 1, 1) moe wydawa si janiejsza, poniewa do koloru C dodany zostanie komponent koloru spoza paszczyzny. Jasno I prbki po uwzgldnieniu alpha i T jest wyliczana z modelu (I oznacza jasno spoza paszczyzny):
kolor
wektor
66
u, v, s, t
float
opisanej
parametrycznie
oraz
Pochodne koordynat tekstury oraz parametrw powierzchni wektor opisuj jak zmienia si pozycja wraz ze zmian parametrw powierzchni. float Zmiana parametrw powierzchni LADS udostpnia wielokt, ktry ma ksztat przecicia aktualnie cieniowanej powierzchni z piramid widzenia wychodzc z obliczanego piksela. Jest to informacja, ktra wielokt umoliwia bardzo dokadny analityczny antialiasing (funkcja cieniujca powinna obliczy kolor redni dla powierzchni ograniczonej do pixel polygon.
pixel polygon
5.5.3. RenderMan
RenderMan to jeden z niewielu systemw implementujcych standard opisu scen trjwymiarowych o nazwie RenderMan Interface. Jest midzy innymi wykorzystywany w produkcji profesjonalnych efektw specjalnych do filmw. Ma due moliwoci wanie dziki interfejsowi teksturowania proceduralnego. Tabela 5-10 Wybrane zmienne kontekstu cieniowania standardu opisu scen 3D RenderMan Interface
Nazwa Typ podstawowe Opis
punkt
Wsprzdne cieniowanego punktu w lokalnym ukadzie wsprzdnych. Odpowiednie funkcje pozwalaj na przeksztacenie punktu do dowolnego innego ukadu (np. wiata, kamery, itp..)
I E N, Ng u, v, s, t L C, O
Kierunek promienia przecinajcego powierzchni (wektor od wektor punktu pooenia kamery, jeli przeksztacenie kamery okrelona kamer typu pinhole). punkt wektor float Pooenie obserwatora. Normalne: uywana do cieniowania oraz geometryczna normalna aktualnie renderowanego trjkta. Parametry powierzchni koordynaty tekstury. opisanej parametrycznie oraz
wektor Kierunek nadchodzcego promienia. kolor Kolor oraz filtr (przez ktry mnoony jest kolor promienia przez powierzchni) powierzchni.
antialiasing
wektor float
Pochodne parametrw powierzchni opisuj jak zmienia si pozycja wraz ze zmian parametrw powierzchni. Zmiana parametrw powierzchni. 67
Aktualny czas (jeli renderowana jest animacja) Ilo czasu zawarta w aktualnie obliczanej klatce animacji. Okrela jak pozycja P zmienia si w jednostce czasu (warto zdeterminowana przez motion blur na scenie)
Tabela 5-10 Wybrane zmienne kontekstu cieniowania standardu opisu scen 3D RenderMan Interface
5.5.4. LightWave
System LightWave, prcz standardowych wartoci P, N, s, t, udostpnia w swoim interfejsie warto spotSize, ktra jest przyblionym promieniem okrgu, w ktrym mona zawrze powierzchni cieniowanej paszczyzny widocznej przez aktualnie obliczany piksel obrazu. Mona j zinterpretowa jako przyblienie rednicy okrgu opisanego na wielokcie pixel polygon obliczanym przez renderer LightWorks.
Point Vector
Wsprzdne aktualnie cieniowanego punktu w ukadzie lokalnym obiektu Wektor normalny do aktualnie cieniowanej paszczyzny Kolor paszczyzny w cieniowanym punkcie P. System renderujcy moe stosowa drzewo cieniowania TexLib na przykad do modyfikacji ju rzutowanej na geometri tekstury tradycyjnej. W takim przypadku musimy zna ten wczeniej naoony kolor paszczyzny. Przezroczysto powierzchni. Podobnie jak w przypadku koloru C, biblioteka moe tylko modyfikowa wczeniej ustalon przez wykorzystujcy j system warto, musimy wic zna warto ustalon przez system. Kierunek promienia przecinajcego powierzchni w cieniowanym punkcie (od ang. Incident vector). Punkt pooenia obserwatora (od ang. Eye point)
Color
Color
I E
Vector Point
68
Parametry powierzchni opisanej parametrycznie oraz koordynaty tekstury. Pochodne koordynat tekstury oraz parametrw powierzchni opisuj jak zmienia si pozycja wraz ze zmian parametrw powierzchni. Zmiana parametrw powierzchni rednica okrgu opisanego na wielokcie bdcym przeciciem stoka widzenia wychodzcego z aktualnie cieniowanego piksela oraz cieniowanej paszczyzny. Jest to warto podobna do tej wykorzystywanej w systemie LightWave. W przypadku systemu LADS spotSize jest przektn prostokta opisanego na pixel polygon. Dla systemw liczcych antialiasing analityczny jedynie za pomoc pochodnych punktu P (dPds, dPdt, itp..) spotSize moe by obliczany nastpujco:
spotSize = max( dPdu * du ^ dPdv * dv , MinSpotSize) , gdzie ^ oznacza iloczyn wektorowy 2 wektorw
spotSize
Float
AA
Int
Zmienna przeczajca uycie antialiasingu analitycznego (od ang. Analytic Antialiasing). Warto AA=0 oznacza wyczenie antialiasingu, AA0 oznacza wczenie antialiasingu. Wszystkie wzory udostpniajce ten tryb zaczn go wykorzystywa. Warto czasu. Suy do renderingu animacji i jest umown wartoci zmiennoprzecinkow (tzn. nie mona interpretowa upywu czasu od wartoci time=0 do time=1 jako np. 1 sekundy, poniewa to, jak time bdzie wykorzystany zaley od systemu wykorzystujcego bibliotek)
time
Float
Wartoci dPds, dPdt, dPdu, dPdv, ds., dt, du, dv, spotSize s wykorzystywane waciwie wycznie dla wzorw, w ktrych potrzebny jest antialiasing. Ze wzgldu na wygod uycia zostay one zamknite w jednej strukturze typu TSample. Definicj tej struktury przedstawia Program 5-4.
typedef struct { /* * analytic antialiasing toggle */ int AA; /* * derivatives */
69
FLOAT
/* * changes in texture/parameter space */ FLOAT ds, dt, du, dv; /* * antialiasing filter size */ FLOAT spotSize; } TSample;
Zawarto kontekstu wyjciowego umoliwia zmian koloru, przezroczystoci oraz normalnej do paszczyzny. Istnieje take moliwo przesunicia punktu P, ale obsuguje j niewiele systemw (jest nim np. raytracer Blue Moon Rendering Tool).
Zmienna C N Typ (patrz Tabela 4-2) Opis
Color Vector
Nowy kolor paszczyzny dla punktu P kontekstu wejciowego Zmodyfikowana normalna dla punktu P kontekstu wejciowego Zmodyfikowany punkt P kontekstu wejciowego. Uwaga: Nie kady system udostpnia moliwo modyfikacji paszczyzny (przemieszczenia, ang. displacement). Jeli tak, to zmienn t wykorzystuje si zwykle przesuwajc wejciowy punkt P wzdu wektora normalnego N. Zmodyfikowana przezroczysto. Wspczynnik pokrycia powierzchni.
Point
T alpha
Color Float
biblioteka z definicjami wzorw oprcz definicji samych klas wzorw (patrz punkt 5.4) musi zawiera eksportowan funkcj o nazwie Init i deklaracji:
PATTERNS_API TPatternFactories *Init();
Funkcja zwraca tablic obiektw fabryk wzorw. Tablic tworzy si w sposb podany w Program 5-5
PATTERNS_API TPatternFactories *Init(); { TPatternFactories *pFactories; pFactories = new TPatternFactories(); pFactories->Add(new CFactoryWzor1()) // pFactories->Add(new CFactoryWzorN()); return pFactories; }
71
Jeszcze jedna moliwo optymalizacji, trudna jednak do wykorzystana w praktyce, polega na obliczeniu we wzorze tylko tych parametrw wyjciowych, ktre s potrzebne. Zwykle wzory wypeniaj wszystkie swoje wyjcia, poniewa takie rozwizanie jest prostsze do zaimplementowania. Istnieje jednak moliwo obliczenia tylko potrzebnych wartoci dziki funkcjom w klasie CPattern o deklaracjach
void Evaluate(int ID); void EvaluateArea(int ID);
Parametrami funkcji s identyfikatory wyj, ktrych ewaluacja jest potrzebna. Domylna implementacja tych funkcji polega na wywoaniu odpowiednio Evaluate() oraz EvaluateArea(), co powoduje obliczenie wszystkich parametrw wyjciowych, nawet tych nigdy nie uywanych.
72
jednej z funkcji Evaluate... ) flaga jest ustawiona, to oznacza to, e drzewo cieniowania zawiera cykl.
Geometry Repository
System Services
Modul 3
LightWorks
Diagram 5-8 Architektura systemu LADS
Modul n
73
Jak wida, struktura systemu LADS opiera si na moduach, a komunikacja aplikacji z systemem oraz moduw midzy sob odbywa si za pomoc interfejsu bdcego zbiorem funkcji API. Wikszo moduw jest zalena od innych. Istniej dwa podstawowe moduy systemu wykorzystywane przez wikszo pozostaych, opcjonalnych moduw. S one odpowiedzialne za udostpnianie funkcjonalnoci zwizanych z konkretnym systemem operacyjnym (np. alokowanie pamici modu System Services) oraz przechowywaniem geometrii (modu Geometry Repository). W konfiguracji systemu uywanej wraz z Edytorem wystpuj dodatkowo nastpujce moduy: drivery suce do wywietlania renderowanych obrazw w okienku systemu Windows oraz umoliwiajce zapis obrazw na dysk w formatach jpg, tif, tga oraz bmp Command Interpreter Module, ktry zajmuje si odczytywaniem scen z przykadow geometri modu zajmujcy si okrelaniem widocznoci geometrii modu cieniowania modu udostpniajcy interfejs do tworzenia tekstur proceduralnych. Spord wszystkich wymienionych moduw nas najbardziej interesuje modu interfejsu tekstur proceduralnych. Jego miejsce w procesie renderingu pokazuje Diagram 5-9. modu cieniujcy okrelanie widocznoci (visibility processor) funkcja cieniujca cieniowanie (shading) funkcja cieniujca
Funkcje cieniujce nale wanie do moduu teksturowania. Algorytm cieniowania jest realizowany przez procedury z moduu cieniowania. Korzystaj one z moduu okrelania widocznoci okrelajc, ktre powierzchnie s w danym pikselu widoczne. Modu okrelania widocznoci realizuje w ten sposb jeden z kilku wbudowanych algorytmw renderingu (scanline, raytracing, radiosity). Dla kadego piksela tworzony jest nastpnie przez procedury moduu cieniowania odpowiedni kontekst wywoania funkcji cieniujcych. Istnieje kilka rodzajw funkcji cieniujcych, ktre odpowiedzialne s za okrelenie rnych waciwoci powierzchni. Dla wszystkich tych rodzajw dla tego samego piksela kontekst jest taki sam, jednak rni si one dostpem do globalnych zmiennych go reprezentujcych. Rol kluczowych dla naszych zastosowa rodzajw funkcji przedstawia Tabela 5-13.
74
Opis
Okrela kolor cieniowanej paszczyzny. Okrela widoczno oraz przezroczysto paszczyzny. Modyfikuje normaln do powierzchni symulujc w ten sposb jej nierwnoci.
Dokadny przebieg procesu okrelania wasnoci powierzchni jest przedstawiony na Diagram 5-10. Naley pamita o tym, e proces ten moe by wykonywany dla jednego piksela obrazu kilkakrotnie dla rnych powierzchni. Nie jest to wic algorytm moduu cieniowania a jedynie jego element. Element ten jest jednak najbardziej nas interesujc czci produkcji obrazu przez system LightWorks. Wynika to z tego, e wanie tutaj nastpuje integracja funkcjonalnoci biblioteki TexLib z systemem do renderingu.
Model owietlenia
Postprocessing
Kady shader posiada funkcj uniforms, ktra jest woana przed rozpoczciem renderingu po to, aby funkcja moga zainicjowa swoje zmienne zalene tylko od parametrw, ktre nie zmieniaj si w trakcie procesu renderingu. Jest ona odpowiednikiem inicjalizacji drzewa cieniowania w bibliotece TexLib. W czasie procesu renderingu , dla kadej prbki wywoywane s funkcje preview lub full shaderw, zalenie od trybu tworzenia obrazu. Rendering koczy si wywoaniem dla kadego z shaderw funkcji unload.
75
function preview/full { if ( jest to pierwszy shader w procesie renderingu DISPLACEMENT->TRANSPARENCY->COLOUR ) { ustaw kontekst wejciowy drzewa tree {
76
// ustaw C,N,P,I,s,t oraz sample jeli uywane w drzewie: if (TCShadeTreeInCxUsed(tree, inX) TCShadeTreeInCxSetXXX(tree, inX, C/N/P/I/s/t/) zaznacz_globalnie_kontekst_jako_ustawiony_dla_tej_prbki;
//pobierz wyniki switch (rodzaj_tego_shadera) { case DISPLACEMENT: { if (TCShadeTreeOutCxModified(tree, outN) TCShadeTreeOutCxGetVector(tree, outN, N); else TCShadeTreeOutCxGetPoint(tree, outP, P); } break; case TRANSPARENCY: { if (TCShadeTreeOutCXModified(tree, outT) TCShadeTreeOutCxGetColor(tree, outT, T); if (TCShadeTreeOutCXModified(tree, out_alpha) TCShadeTreeOutCxGetColor(tree, out_alpha, alpha); } break; case COLOUR: { TCShadeTreeOutCxGetColor(tree, outC, C); } break; } function unload { //skasuj wykorzystane drzewo if (drzewo tree nie skasowane) TCShadeTreeDeleteDestroy(tree); }
[...]
Program 5-6 Algorytm dziaania shaderw DISPLACEMENT, TRANSPARENCY oraz COLOUR uywajcych biblioteki TexLib
77
//deklaracja parametru shadera z nazw pliku z drzewem cieniowania parameter "file name" LtString p_filename = "" ; PTREE tree; PINCX incx; POUTCX outcx; //zmienna przechowujca obiekt drzewa cieniowania //obiekt kontekstu wejciowego drzewa cieniowania //obiekt kontekstu wyjciowego drzewa cieniowania
shader function //funkcja definiujca kolor powierzchni { //ustawienie parametrw kontekstu wejciowego //wartoci in... s zdefiniowanie w cinterf.h //zmienne N, P, I, s, t s zmiennymi globalnymi shadera i zawieraj //wartoci odpowiednio normaln, wsp. punktu, kierunek promienia //kolidujacego z paszczyzn, koordynaty tekstury TCShadeTreeInCxSetVector( tree, inN, N ); TCShadeTreeInCxSetPoint ( tree, inP, P ); TCShadeTreeInCxSetVector( tree, inI, I ); TCShadeTreeInCxSetFloat ( tree, in_s, s ); TCShadeTreeInCxSetFloat ( tree, in_t, t ); //kontekst zosta zmieniony naley o tym poinformowa bibliotek TCShadeTreeInvalidateAll(tree); //pobranie wartoci wyjciowej drzewa koloru powierzchni TCShadeTreeOutCxGetColor(tree, outC, Co);
uniforms function //funkcja wywoywana przed kadym renderingiem { //kasujemy drzewo cieniowania, ktre zostao stworzone przed poprzednim //renderingiem if ( tree notequal NULL ) TCShadeTreeDestroy(tree); //utworzenie nowego drzewa cieniowania tree = TCShadeTreeCreate(&incx, &outcx); //wczytanie definicji drzewa z pliku o podanej nazwie TCShadeTreeLoad(tree, p_filename); //zainicjowanie drzewa cieniowania TCShadeTreeInitialise(tree); //ustawnie wartoci kontekstu wejciowego, ktre pozostan stae //w czasie tego renderingu. w tym przypadku warto czasu TCShadeTreeInCxSetFloat(tree, in_time, 0); //funkcja wywoywana podczas niszczenia obiektu //shadera w systemie LADS
unload function {
if ( tree notequal NULL ) { TCShadeTreeDestroy(tree); tree = NULL; } //funkcja wywoywana po stworzeniu obiektu shadera
load function {
78
tree = NULL; }
Kompilacja shadera wymaga uycia narzdzia dostarczanego z systemem oraz dostepnoci wszystkich wymaganych nagwkw (midzy innymi nagwka cinterf.h zawierajcego deklaracje biblioteki TexLib). Do konsolidacji niezbdny jest plik biblioteki texlib.lib oraz pliki *.lib systemu LADS. Po zainicjowaniu shadera w tworzonej aplikacji, naley stworzy jego instancj i poda nazw pliku *.tree (patrz Dodatek B) zawierajcego definicj drzewa cieniowania. Wykonanie renderingu po przypisaniu shadera do obiektw na scenie spowoduje wykonanie funkcji uniforms wczytujcej drzewo oraz funkcji shader dla kadej cieniowanej prbki.
79
Eksport plikw *.tree dla kadej renderowanej klatki animacji (wane jeli renderujemy cig klatek z losowo dobieranymi parametrami).
Okno aplikacji jest podzielone na 3 czci: 1. Standardowe menu oraz pasek narzdzi aplikacji typu Multi Document Interface. 2. Widok edytora diagramw drzew cieniowania. Tutaj odbywa si edycja drzew cieniowania. Istnieje oddzielne okno dla kadego otwartego dokumentu. 3. Widok waciwoci wzoru. Tutaj wywietlane s szczegowe informacje dla aktualnie zaznaczonego w oknie 2 wzoru.
Alternatywn drog jest wybranie z menu aplikacji pozycji Add. W obydwu przypadkach wybranie Add Pattern doprowadzi nas do okna dialogowego widocznego na Rysunek 6-3. Lista w oknie Add Pattern zawiera identyfikatory wszystkich 81
dostpnych wzorw standardowo wbudowanych w bibliotek oraz dodatkowych, zdefiniowanych w bibliotekach DLL.
Wybranie jednej z pozycji i nacinicie OK. spowoduje umieszczenie w edytorze diagramw w miejscu kursora myszki symbolu dodanego wzoru. Wybranie opcji Add Value spowoduje ukazanie si okienka Add new value (Rysunek 6-4), gdzie z listy typu ComboBox moemy wybra typ nowej wartoci a w okienku edycyjnym Properties wpisa wasnoci. Dla podanego na rysunku przykadu Properties powinno zawiera trzy oddzielone spacjami wartoci zmiennoprzecinkowe z zakresu [0..1]. Formaty dla innych typw zawiera Tabela 6-1.
Typ
Int Float Color Point Vector FloatArray
Format tekstowy w okienku Properties Liczba cakowita, Przykad: -1 Liczba zmiennoprzecinkowa, Przykad: 0.5 3 liczby zmiennoprzecinkowe oddzielone spacjami, Przykad .2 .9 .4 Jak Color Jak Color Seria liczb zmiennoprzecinkowych poprzedzona liczb naturaln, oddzielone jedn lub wicej spacjami. Pierwsza liczba okrela rozmiar 82
tablicy, nastpne s jej elementami. Jeli liczba elementw jest mniejsza od zadeklarowanego rozmiaru, to pozostae elementy s inicjowane zerami. Przykad: 3 .2 4.5 -2.25 trjelementowa tablica Seria trjek liczb zmiennoprzecinkowych poprzedzona liczb naturaln, oddzielone jedn lub wicej spacjami. Pierwsza liczba okrela rozmiar tablicy, kada nastpujca trjka liczb okrela kolejny kolor. Podobnie jak w przypadku FloatArray, elementy nie podane s inicjowane zerami (kolorem czarnym w przypadku, gdy brakuje jakiej trjki). Przykad: 2 0 0 0 1 1 1 kolor czarny i biay
ColorArray
Okienko Add Value zawiera nieaktywny przycisk Properties. Aktywuje si on po otworzeniu tego samego dialogu za pomoc podwjnego kliknicia na ju stworzonej wartoci. W tym przypadku umoliwia on, zalenie od typu wartoci, ustawienie jej parametrw. Dla wartoci typu Color przycisk Properties otwiera standardowe w Windows okno wyboru kolorw (Rysunek 6-5).
W przypadku innych typw (Int, Float, Point, Vector, FloatArray, ColorArray) Properties pozwala na ustawienie parametrw randomizacji. Randomizacja polega na losowym dobraniu wartoci przed rozpoczciem renderingu. Dialog Value Properties pozwlaa na ustalenie zakresu losowania oraz, w przypadku tablic, minimalnej i maksymalnej iloci elementw (Rysunek 6-6). Randomizacja jest szczeglnie uyteczna podczas renderingu zestawu obrazkw (animacji).
83
Rysunek 6-6 Waciwoci wartoci staych zwizane z losowoci (waciwoci wartoci typu FloatArray).
84
Rysunek 6-7 Proces tworzenia poczenia midzy parametrami wybieranie parametru wejciowego
Po tych operacjach na diagramie pojawi si linia czce wybrane wzory (lub wzr i warto sta), opisana nazwami poczonych parametrw, co oznacza, e operacja powioda si.
Rysunek 6-8 Proces tworzenia poczenia midzy parametrami wybieranie parametru wyjciowego
85
stdDev =
86
Odchylenie standardowe opisuje to, jak szeroko wartoci s rozproszone od wartoci redniej. W praktyce jest przydatne do ustawiania wartoci progowych wyboru koloru dla wzoru Interpolator3D. o ilo oblicze parametru (sets). Jest to w praktyce liczba ewaluacji wzoru do ktrego naley parametr, zaley od rozdzielczoci obrazu oraz tego, jak wiele pikseli jest zajtych przez powierzchni, ktrej parametry s opisywane danych drzewem cieniowania. Naley zauway, e liczba ta moe si rni (i zwykle rni si) dla rnych systemw renderujcych, poniewa niektre z nich uywaj technik nadprbkowania lub innych podobnych technik wygadzania tekstur (antialiasingu), ktre mog wymusza ewaluacj wzoru wicej ni jeden raz na piksel.
6.2.4. Rendering
Edytor pozwala na rendering dowolnej sceny zapisanej w formacie *.lwc systemu LADS speniajcej opisane w punkcie ... zaoenia. Menu Scene zawiera pozycj Parameters (Rysunek 6-10), po wybraniu ktrej ukazuje si okno z ustawieniami sceny (Rysunek 6-11).
Dialog ten pozwala na wybranie modelu owietlenia dla materiau, ktry bdzie uywa drzewo cieniowania aktywnego dokumentu. Dostpne s opcje plastic model owietlenia typu plastik, oraz constant model, w ktrym paszczyzna ma kolor niezaleny od owietlenia. Mona tutaj take wybra scen *.lwc z opisem geometrii (wszystkie sceny znajduj si w podkatalogu Scenes katalogu z ktrego uruchomiony zosta Edytor). Po zaznaczeniu sceny w okienu na prawo pojawi si podgld, w ktrym materia przeznaczony do uycia z drzewem cieniowania ma naoony wzr trjwymiarowej czerwono-zielonej kratki. Opcje renderingu s dostpne po wybraniu z menu Render pozycji Parameters (Rysunek 6-12). 87
Okno dialogowe Rendering Settings zawiera szereg opcji dotyczcych formatu obrazka, formatu zapisu na dysk oraz animacji (Rysunek 6-13).
Sekcja Output zawiera rozmiar obrazka (rozmiar moe by dowoln liczb naturaln nie wiksz ni 4096) oraz tryb renderingu. Dostpne s 3 tryby renderingu wykorzystywane przedz LightWorks: PREVIEW, FULL oraz RTFULL. Ich opis mona znale w punkcie... Sekcja Output to file okrela nazw pliku oraz format obrazka, jeli ma by zapisany na dysku. Pozostawienie okienka FileName pustego lub wpisanie tam bdnego katalogu spowoduje, e obraz nie zostanie zapisany. Opcja Write tree file always oznacza zapisywanie razem z obrazkiem pliku *.TREE , ktry posuy do jego generacji. Jest to szczeglnie przydatne przy renderingu z losowymi parametrami. Jeli renderujemy wiele obrazw, to odpowiedni plik *.TREE jest jedynym rdem informacji na temat wartoci parametrw ktry zostay zastosowane. Sekcja Animation opisuje sposb renderowania animacji. Render animation przecza tryb renderingu animacji. Okienka edycyjne Start time, End time oraz Step okrelaj odpowiednio czas startu, koca oraz rozdzielczo czasow renderingu kolejnych klatek. Czas jest podczas tworzenia kolejnych klatek animacji dostarczany do kontekstu wejciowego drzewa w parametrze time. Obrazki s zapisywane na dysk z nazwami podanymi w oknie
88
FileName z przyrostkiem bdcym kolejnym numerem klatki. Dla przykadu z Rysunek 6-13 powstayby pliki test0001.jpg, test0002.jpg itd.
Rendering rozpoczyna wybranie z menu opcji Render/Render, nacinicie kombinacji Ctrl+R lub nacinicie przycisku Render.. w oknie Rendering settings. Widok ekrany w czasie procesu renderingu przedstawia Rysunek 6-14.
89
6.3.2. Rendering
Rendering sceny jest wykonywany w oddzielnym wtku, przez to interfejs uytkownika jest cay czas aktywny. Umoliwiao to dodanie opcji przerwania renderingu w jego trakcie. Od strony systemu LADS uyty zosta mechanizm call-back (wykorzystywany w tym systemie nader czsto) LADS woa co jaki okrelony czas funkcj callback Edytora, ktra powiadamia go w odpowiednim momencie o chci przerwania renderingu. System LADS udostpnia kilka trybw renderingu, w tym: PREVIEW szybki tryb renderingu scanline, bez antialiasingu, FULL tryb z antialiasingiem analitycznym RTFULL tryb, w ktrym uywany jest wbudowany raytracer, metod antialiasngu jest tutaj nadprbkowanie. Wzory TexLib nie uywaj antialiasingu analitycznego. Edytor korzysta z jednego z tych trybw zalenie od opcji, ktr wybierze uytkownik.
90
7. Badania eksperymentalne
Ten rozdzia zawiera opis zakresu przeprowadzonych eksperymentw, zestawienie oraz analiz ich wynikw. W skad zestawienia wynikw wchodz kolorowe fotorealistyczne obrazy oraz opis metody ich uzyskania i sposobw ulepszenia. W ramach analizy osignitych rezultatw przedstawiono wyniki czasowe oraz porwnanie wygenerowanych obrazw z fotografiami lub obrazami uzyskanymi innymi metodami grafiki komputerowej.
W ramach bada stworzonych zostao szereg drzew cieniowania symulujcych przykadowe zjawiska opisane w punkcie 3.1. Kade z nich zostao opisane pod ktem sposobu wykorzystania zaimplementowanych algorytmw (topologii drzew) oraz dziedziny symulowanych zjawisk. Przedstawione zostay take przykadowe obrazy stworzone przy uyciu opisanego w Rozdziale 6 Edytora. Wybrane obrazy posuyy dalej do porwna z fotografiami rzeczywistych zjawisk bd z najlepszymi ze znanych symulacji stworzonych za pomoc innych metod grafiki komputerowej. Obrazy przedstawiajce stosunkowo zoone sceny posuyy take do oceny jakoci rozumianej jako ocena iloci znieksztace wynikajcych z uproszcze bd niedokadnoci symulacji. Testy wydajnociowe zostay przeprowadzone przy uyciu kilku rnych zestaww obiektw symulujcych zmienne warunki wykorzystania biblioteki. Ocena atwoci uycia jest, podobnie jak ocena jakoci obrazu, subiektywna, i zostaa opracowana na podstawie dowiadcze zebranych w trakcie przeprowadzania eksperymentw.
91
Drzewo cieniowania Do utworzenia wzoru wykorzystany zosta iloczyn jednowymiarowych wynikw funkcji NoiseWorley, ktry zosta przekazany funkcji Interpolate3D. Interpolate3D zwraca kolor zaleny od przekazanej wartoci. Ustalone zostay 4 kolory, ktre symuluj wygld skry salamandry plamistej.
Wykorzystanie praktyczne
92
Drzewo cieniowania Wzr powstaje z sumowania 2 warstw kolorw (funkcja Add) pochodzcych z interpolatorw kolorw (Interpolator3D). Obydwa interpolatory pobieraj jako parametry wyniki funkcji NoiseWorley, przy czym jedna z nich jest wersj fraktaln, druga jest obliczana na podstawie pewnej kombinacji liniowej. Jedna z nich jest take obliczana na podstawie punktu P znieksztacanego wczeniej za pomoc szumu (NoisePerlin). Jest to zabieg czsto stosowany przy wzorach skadanych z kilku warstw. Ciekawostk jest to, e wzr ten daje si atwo animowa. Efekt ten uzyskuje si przesuwajc punkt cieniowania z klatki na klatk za pomoc nastpujcej konstrukcji:
93
Punkt P uzyskany z funkcji TransformSample mona dalej przekazywa tak, jak do tej pory robilimy to z P pochodzcym bezporednio z kontekstu wejciowego. Efekt animacji jest bardzo realistyczny. Katalog Images/Water zawiera klatki takiej przykadowej animacji.
Wykorzystanie praktyczne
94
Drzewo cieniowania Cao symulacji zawarta jest w funkcji bazowej Leather. Wykorzystuje ona NoiseWorley oraz NoisePerlin tworzc kilka warstw znieksztace. Wynik funkcji Leather jest interpretowany jako wysoko (i przekazywany do funkcji CalculateNormal) lub jako wspczynnik, na podstawie ktrego Interpolator3D ustala kolor.
95
Wykorzystanie praktyczne
96
7.2.4. Skra wa
[SNAKE.TREE] Wzr symulujcy kolor oraz faktur skry wa.
Drzewo cieniowania
Ten wzr skada si z 2 warstw: warstwa podstawowa, ktra wykorzystuje zoenie funkcji NoiseWorley. Pierwsza (wewntrzna jeli zinterpretowa diagram uywajc zapisu matematycznego) zwracajca wartoci trjwymiarowe suy wstpnemu podziaowi przestrzeni na komrki, ktrych kolor jest nastpnie ustalany przy uyciu kolejnej funkcji NoiseWorley warstwa dodatkowa, wprowadzajca szum, ktry podnosi realizm obrazu Punkt P jest przed przekazaniem do jakichkolwiek innych funkcji znieksztacany w funkcji TransformSample. Jeszcze jedna funkcja NoiseWorley oraz odpowiadajca jej CalculateNormal realizuje odwzorowanie nierwnoci powierzchni.
97
Wykorzystanie praktyczne
98
Drzewo cieniowania
Dziaanie tego drzewa cieniowania jest zblione do drzewa symulujcego skr salamandry.
99
Wykorzystanie praktyczne
Drzewo cieniowania Wzr jest tworzony za pomoc 2 fraktalnych jednowymiarowych funkcji NoiseWorley, ktrych wyniki s mnoone. Dodatkowo dodano odwzorowanie nierwnoci powierzchni, ktre dobrze widoczne jest na poniszej ilustracji:
100
Wykorzystanie praktyczne
101
Scena mid.lwc reprezentuje przypadek, ktry mona uzna za poredni. Znajduje si na niej umiarkowana ilo geometrii, a obiekt wykorzystujcy w materiale TexLib zajmuje 10% obrazu wynikowego. Scena mid2.lwc jest scen podobn do mid.lwc. Rni si od niej tym, e 52% pikseli wynikowego obrazu zawiera obiekt z materiaem wykorzystujcym badane drzewo cieniowania.
Dla kadej ze scen zosta zmierzony czas renderingu bez wykorzystania TexLib, jako czas bazowy, do ktrego odnosz si dalsze pomiary. Kolejne pomiary dotycz 6 rnych drzew cieniowania: empty.tree wzr kopiujcy wartoci C, N, T kontekstu wejciowego do kontekstu wyjciowego. Nie wykonuje adnych dodatkowych oblicze. Koszt ewaluacji tego drzewa jest rwny kosztowi zainicjowania oraz kadorazowej inicjacji kontekstu wejciowego dla wszystkich obliczanych prbek. checker.tree prosty wzr trjwymiarowej kratki. Najwiksz ilo czasu zajmuje w tym przypadku komunikacja midzy bibliotek TexLib a systemem renderujcym. salamandra.tree bardziej zoony wzr zoony z 4 funkcji bazowych (w tym 2 stosunkowo wolne NoiseWorley) oraz 6 pocze midzy nimi. Tutaj wikszo czasu procesora przypadajca na obliczenia cieniowania bdzie przeznaczona na ewaluacj 6 funkcji bazowych. Wzr modyfikuje tylko kolor powierzchni. salamandra2.tree j.w., z t rnic, e wzr modyfikuje zarwno kolor jak i normaln do powierzchni. salamandra3.tree jak salamandra.tree, z t rnic, e wzr modyfikuje kolor, normaln oraz przezroczysto powierzchni. complex.tree najbardziej skomplikowany wzr, zoony z najbardziej wymagajcych algorytmw fraktalnych wersji NoiseWorley FractalNoiseWorley. Modyfikuje kolor powierzchni
103
W kolejnym punkcie znajduje si bardziej szczegowa analiza wszystkich czynnikw majcych wpyw na prdko generacji obrazw.
mid2.lwc
*) Wszystkie czasy zostay zmierzone przy uyciu wbudowanego zegara aplikacji Edytora drzew cieniowania. Obrazy wyrenderowane zostay w rozdzielczoci 800x600, przy uyciu trybu renderingu PREVIEW systemu LADS (brak nadprbkowania oraz antialiasingu geometrycznego wygadzajcego artefakty na brzegach geometrii). Tabele i wykresy pochodz ze skoroszytu w formacie MS Excel znajdujcego si w pliku Images\pomiary.xls
Tabela 7-1 Wyniki pomiarw czasw renderingu
Czas renderingu pokazany w Tabela 7-1 w kolumnie T jest sumarycznym czasem trwania wszystkich operacji potoku renderingu.
104
Najbardziej interesujcy nas czas, czyli czas, ktry system przeznacza na ewaluacj drzewa cieniowania TexLib, obliczamy jako rnic cakowitego czasu T i czasu renderingu sceny bez uycia TexLib (z wzorem oznaczonym w tabeli jako none). Zamiast materiau, ktry wykorzystuje TexLib, jest w takim przypadku wykorzystywany substytut, posiadajcy najprostszy model owietlenia (kolor stay). Tak obliczony czas jest umieszczony w kolumnie Teval. Teval jest z kolei nastpujc sum czasw: Teval = Tinit + samples * (Tctx + T patterns ) , gdzie: Tinit czas inicjacji drzewa oraz poszczeglnych funkcji bazowych, Tctx czas przygotowywania kontekstu kontekstu wejciowego dla drzewa oraz wszystkich innych operacji zwizanych z komunikacj midzy bibliotek a systemem renderujcym (poinformowanie biblioteki o zmianie kontekstu, przekazanie wynikw oblicze), Tpatterns czas ewaluacji wszystkich funkcji w drzewie dla pojedynczej prbki samples liczba prbek, dla badanych obrazw w rozdzielczoci 800x600 warto ta jest rwna48e4. Badania wykazay, e Tinit jest relatywnie may (bliski 0) dla wszystkich wzorw i moe by pominity jako czynnik wpywajcy na czas Teval. (Naley zaznaczy, e w kadym renderingu istniao i byo ewaluowane tylko jedno drzewo cieniowania. Jeli na scenie znajdowa si wicej ni obiekt, to kady z nich wykorzystywa to samo drzewo cieniowania. Ta uwaga jest istotna, jeli analizujemy wielkoci czasw zwizane z inicjacj drzewa cieniowania i poszczeglnych funkcji wchodzcych w jego skad. W mocy tego zaoenia czas kadego renderingu zawiera czas inicjacji pojedynczego drzewa cieniowana.) Niewiele wikszy wpyw ni Tinit ma na cakowity czas ewaluacji drzewa cieniowania take czas Tctx. Czas Teval dla wszystkich scen w wierszu empty jest nastpujc sum (nie wystpuje tu czas zwizany z obliczeniami funkcji bazowych): Teval = Tinit + samples * Tctx , gdzie T init 0 rednia jego warto dla 4 uytych w testach scen wynosi: 0.151s, co jest wartoci stosunkowo niewielk (rwn 3.15e-7s dla jednej prbki 0.151/48e4) i na potrzeby dalszej analizy pomijaln. Jak si mona spodziewa, wpyw iloci pikseli cieniowanych za pomoc TexLib na cakowity czas ewaluacji drzewa cieniowania bdzie liniowy. Potwierdza to Wykres 7-1. Czas renderingu w oczywisty sposb bardzo mocno zaley od wykorzystanych w drzewie funkcji bazowych. Wida to ju na krzywych z Wykres 7-1, gdzie pokazano czasy dla 3 wzorw o rnym stopniu skomplikowania (najprostszy checker, najbardziej zoony complex).
105
Wykres 7-1 Czas ewaluacji drzewa cieniowania w zalenoci od pokrycia obrazu pikselami cieniowanymi za pomoc TexLib
Generalnie, czas renderingu zaley w niewielkim stopniu od tego, jakie wartoci kontekstu wyjciowego modyfikujemy. W przypadku odwzorowania nierwnoci powierzchni (modyfikacji normalnej N) uywamy jednak w wikszoci przypadkw funkcji bazowej CalculateNormal, ktrej dziaanie opiera si na kilkukrotnej ewaluacji funkcji wysokoci. W zalenoci od stopnia zoonoci tej funkcji, czas renderingu moe znacznie wzrosn. Wykres 7-2 przedstawia przyrosty czasu generacji obrazu w zalenoci od tego, jakie parametry kontekstu wyjciowego s modyfikowane. Zosta on stworzony na podstawie czasw Teval dla scen salamandra, salamandra2 oraz salamandra3. Kolejne przyrosty uzyskano z rnic czasw generacji tych 3 scen (sceny te, jak wczeniej opisano, rni si tylko iloci modyfikowanych parametrw wyjciowych)
100% 90% 80% 70% 60% 50% 40% 30% 20% 10% 0% 1.021 1.381 modyfikacja przezroczystoci (T) modyfikacja normalnej N modyfikacja koloru (C) 5.081 opt.lwc (T=19.5s) 5.993 mid.lwc (T=22.8s) 29.587 mid2.lwc (T=110s) 58.162 pes.lwc (T=235s)
1.071
0.746
13.311
16.721
79.991
175.871
sceny
(w nawiasie podano czasy ewaluacji drzewa cieniowania Teval)
Wykres 7-2 Procentowy przyrost czasu generacji obrazu po wprowadzeniu zmian kolejnych parametrw kontekstu wyjciowego
106
Jak wida, modyfikacja normalnej ma znaczny wpyw na szybko generacji obrazu. Wpyw dodania modyfikacji parametrw alpha bd T jest natomiast niezaleny od stopnia skomplikowania sceny i jest zwizany raczej z czasem inicjacji dodatkowego shadera, a wic jest zaleny od konkretnego systemu. wiadczy o tym wikszy procentowy udzia czasu w scenach generowanych najszybciej (opt.lwc, mid.lwc) oraz jego staa (ok. 1s) warto dla wszystkich przypadkw. W testach wykorzystano sceny, ktre mona przyj za przypadki optymistyczny, pesymistyczny i poredni, jeli chodzi o znaczenie oblicze wykonywanych wewntrz biblioteki. Oto jak przedstawia si procentowy udzia czasu spdzonego na ewaluacji drzew cieniowania w tych 3 rnych przypadkach (Do stworzenia wykresu uyto danych zmierzonych przy wykorzystaniu wzoru complex).
100% 90% 80% 70% 60% 50% 40% 30% 20% 10% 0%
6.196 1.739 opt.lwc (T=17.1s) mid.lwc (T=15s) 1.879 mid2.lwc (T=66.8s) 1.626 pes.lwc (T=120.4s)
sceny
Wykres 7-3 Stosunek czasw cieniowania wykonywanego przy uyciu TexLib do czasw innych operacji przeprowadzanych w systemie do renderigu
Cieniowanie z kadym z przypadkw zajmuje znaczn ilo czasu, sigajc nawet 98%.
107
skra wa Obraz wygenerowany w tym przypadku posiada nieco rnicy si od przykadowego wzr. Nie jest to jednak duy mankament, poniewa w praktyce, tekstura ta byaby uyta prawdopodobnie na obiekcie nie bdcym, jak tutaj, paszczyzn. Ksztat ctek ulegby wtedy znieksztaceniu zmniejszajc efekt sztucznoci. Zdjcie po lewej stronie nie przedstawia paszczyzny, co dodaje obrazowi pewnej gbi. Brak jej w tej prostej scenie naszej symulacji.
cienie kaustyczne Cienie kaustyczne na powyszym zdjciu s widziane pod pewnym ktem, std atwo odrni obraz sztuczny od naturalnego. Symulacja wyglda jednak bardzo naturalnie, co jest jeszcze bardziej podkrelone w animacji, ktrej kilkadziesit wygenerowanych klatek mona znale w katalogu Water.
skra wyprawiona Ta symulacja jest jedn z najbardziej realistycznych. Maa wielko detali nie pozwala na powyszych obrazach tego doceni. Istniej tutaj take dosy znaczne rnice w kolorystyce, jednak oglne wraenie jest bardzo dobre, a po naoeniu tekstury na modele skrzanych przedmiotw (np. tapicerka samochodu, torba itp.) efekt moe by trudny do odrnienia od zdjcia. 108
wyschnita ziemia Kolejny przykad dobrej symulacji naturalnego zjawiska. Mona zauway, e wygenerowany obraz posiada nieco mniej szczegw ni zdjcie (drobne nierwnoci ziemi, przebarwienia). Nic nie stoi na przeszkodzie, aby symulacj wzbogaci o dodatkowe elementy oparte na szumie czy kolejnych warstwach pkni. W tym przykadzie chodzio o pokazanie oglnej faktury ziemi bez zbytniego rozbudowywania topologii drzewa cieniowania.
Tabela 7-2 Porwnanie tekstur uzyskanych dziki TexLib z naturalnymi zjawiskami
7.5. Podsumowanie
Ocena atwoci generowania nowych tekstur jest trudna do przeprowadzenia ze wzgldu na brak danych zebranych od wikszej liczby uytkownikw systemu. Mona jednak powiedzie, e stosunek moliwoci do stopnia skomplikowania procesu tworzenia symulacji zjawisk rzeczywistych jest bardzo wysoki i znacznie przewysza znane systemy opisywane np. w punkcie 3.3, ktrych funkcjonalno jest ograniczona skoczonym zbiorem algorytmw i ich parametrw. Jeli traktowa wartoci stae w drzewie cieniowania jako odpowiedniki parametrw w systemach do generacji tekstur, to w stworzonym systemie nie istnieje ograniczenie liczby parametrw. Drzewa cieniowania nie maj bowiem ograniczenia stopnia skomplikowania. Mocn stron opracowanych technik jest realizm produkowanych symulacji. Porwnanie z naturalnymi zdjciami zamieszczonymi powyej pokazuje, e mona uzyska stosunkowo prostymi drzewami cieniowania zaskakujco dobre efekty. Dziedzina moliwych symulacji jest ponadto bardzo dua, jako e wiele naturalnych powierzchni ma charakter komrkowy, a produkcja takich wanie jest z uyciem TexLib najprostsza. S przypadki, kiedy jako obrazu uzyskiwana dziki TexLib odbiega od ideau. Na obrazach wystpuj artefakty wynikajce bd z wystpowania w obrazie wysokich czstotliwoci (efekty aliasingu), bd nieprzewidzianych efektw skadania funkcji bazowych. Obydwie przyczyny wystpowania artefaktw mog by rozwizane za pomoc algorytmw antialiasingu, ktre tutaj nie zostay zaimplementowane.
109
8. Podsumowanie
Tekstury proceduralne uchodz za niepraktyczne ze wzgldu na koszt ich uzyskania. Implementacja dobrej tekstury moe trwa dugo w stosunku do uzyskania zdjcia danej powierzchni. Opracowana biblioteka funkcji bazowych TexLib, w poczeniu z aplikacj wykorzystujc graficzny, intuicyjny interfejs uytkownika, zdaje si dewaluowa to twierdzenie. Tekstury wykorzystane w Rozdziale 7 daj w wikszoci przypadkw zdecydowanie wicej ni zadowalajce efekty, a przecie proces ich tworzenia od pomysu do gotowego obrazu trwa krtko w porwnaniu w tradycyjnym podejciem do implementacji tekstur proceduralnych. Moliwo szybkiego wprowadzania i podgldu zmian w opracowywanym wzorze, stosowanie raz zaimplementowanych rozwiza wielokrotnie (w postaci funkcji bazowych lub wczeniej zaprojektowanych fragmentw drzew cieniowania), statystyki wartoci parametrw wyjciowych oraz wiele innych udogodnie sprawia, e tworzenie nowych wzorw nie jest przy uyciu TexLib mudnym zajciem dla wtajemniczonych. Jest wrcz przeciwnie nowe tekstury powstaj z atwoci, i mog by projektowane nawet przez tych, ktrzy bd ich potem bezporednio uywa, czyli artystw. Tworzenie tekstur przez osoby bezporednio zainteresowane ich wykorzystaniem jest bardzo dobrym rozwizaniem, poniewa umoliwia uniknicie nieporozumie i przypadkw nieumiejtnego uycia parametrw. Uzyskano tym sposobem take wietne narzdzie do twrczej nauki o teksturach proceduralnych. Student moe awo przeprowadza dowiadczenia na predefiniowanych funkcjach bazowych, a osignwszy biego i wystarczajce zrozumienie efektw ich skadania, moe pokusi si o implementacje wasnych. Zadanie to uatwi system rozszerze oparty na bibliotekach DLL. Edytor drzew cieniowania zosta zintegrowany z bardzo dobrym pakietem do grafiki fotorealistycznej LADS. Jest to jednak tylko przykadowa integracja, jako, e, zgodnie z zaoeniami, biblioteka TexLib moe by uyta z kadym systemem, ktry udostpnia interfejs teksturowania proceduralnego w postaci pewnego jzyka cieniowania (ktry w szczeglnych przypadkach jest zwykym C bd C++). TexLib zostaa zaimplementowana w C++, opracowano jednak interfejs jzyka C, co w pewnych przypadkach jest jedyn moliwoci integracji (przykadem moe by RenderMan, bd wanie LADS). Otwart spraw pozostaje antialiasing funkcji bazowych. W istniejcej wersji adna z funkcji bazowych nie realizuje antialiasingu analitycznego, co wymusza stosowanie metod antialiasingu dostarczanych przez systemy do renderingu. Sprowadza si to do mniej lub bardziej sprawnego nadprbkowania, ktre nie zawsze przynosi bardzo dobre efekty, a podnosi za to wymagania wydajnociowe. Istnieje jeszcze wiele sposobw rozbudowy stworzonego systemu. Jednym z ciekawszych jest rozbudowa Edytora o moliwoci budowy drzew cieniowania za pomoc programowania genetycznego. Traktujc zbir drzew cieniowania jako populacj, chromosomem bdzie pojedyncze drzewo cieniowania, natomiast genem moemy nazwa skadow funkcj cieniujc. Etap algorytmu genetycznego realizujcy ewolucj, bdzie uywa podstawowych operatorw genetycznych: mutacji i krzyowania. Wynikiem dziaania operatora krzyowania 2 chromosomw bdcych drzewami cieniowania, bdzie nowe drzewo, ktre bdzie zawierao elementy obydwu drzew rdowych. Mutacja natomiast stworzy nowe drzewo cieniowania zastpujc pewn liczb skadowych funkcji innymi. Poniewa trudno wyobrazi sobie funkcj oceniajc kadego z osobnikw populacji (czyli obraz generowany przez dane drzewo cieniowania), kady krok ewolucji populacji koczyby si prezentacj wynikw uytkownikowi, ktry odrzucaby 110
niepotrzebne osobniki. Wiadomo o kilku podobnych podejciach do generacji tekstur, jednak we wszystkich nie uywano tak funkcjonalnie rozbudowanych drzew cieniowania. Kolejn moliwoci rozbudowy, usprawniajc proces tworzenia tekstur, jest udostpnienie podgldu zmian drzewa cieniowania w Edytorze w czasie rzeczywistym. Istniejce rozwizanie pozwala, co prawda, na szybki podgld zmian, jednak polega on zawsze na regeneracji caego obrazu. Za pomoc odpowiedniego systemu bylibymy zdolni do wywietlenia obrazu ze zmienionymi atrybutami powierzchni z pominiciem systemu renderujcego i caego standardowego potoku renderingu. Jest to moliwe, o ile w czasie pierwszej generacji obrazu dla nowych parametrw obserwacji sceny zapamitamy dla kadego piksela informacje o paszczynie, do ktrej naley, oraz modelu owietlenia. Edycja drzew cieniowania staaby si wtedy jeszcze wygodniejsza, poniewa regeneracja obrazu byaby dla czci scen oraz czci parametrw danego drzewa o wiele szybsza (w niektrych przypadkach w czasie rzeczywistym).
111
9. Literatura
[Gamma 1995] E. Gamma, R. Helm, R. Johnson, J. Vlissides, Design Patterns: Elements of Reusable Object-Oriented Software, Addison-Wesley, Reading Mass., 1995 [T&M 1998] D. Ebert, F. K. Musgrave, D. Peachey, K. Perlin, S. Worley, Texturing and Modeling. A procedural approach., Academic Press Professional, 1998 [Pixar] Pixar, The RenderMan Interface 3.2, July 2000 [Foley] J. D. Foley, Wprowadzenie do grafiki komputerowej, Wydawnictwo Naukowo-Techniczne, Warszawa 1995 [Watt 2000] Alan Watt, 3D Computer Graphics, Addison-Wesley, Harlow 2000 [Egerton 1999] Patricia A. Egerton and W.S. Hall, Computer Graphics: Mathematical First Steps, Prentice Hall, London 1999 [Rogers] David F. Rogers, State of Art In Computer Graphics. Aspects of visualization, Springer-Verlag, New York 1994 [Apodaca] Tony Apodaca, How PhotoRealistic RenderMan Works, SIGGRAPH 2000: Advanced RenderMan 2 [Fukuda 2000] K. Fukuda, Frequently Asked Questions in Polyhedral Computation, Swiss Federal Institute of Technology, Department of Mathematics, http://www.ifor.math.ethz.ch/~fukuda/polyfaq/polyfaq.html, October 2000 [Miyata 1990] K. Miyata, A Method of Generating Stone Wall Patterns, SIGGRAPH '90 Conference Proceedings, pp.387-394, 1990. [Turk 1991] G. Turk, Generation Textures on Arbitrary Surfaces Using ReactionDiffusion, Computer Graphics (SIGGRAPH 91 Proceedings), 25(4):289-298, July 1991 [Worley] Steven Worley, A Cellular Texture Basis function, http://graphics.lcs.mit.edu/~mcm/6.838j/talk.html [Walter 1992] M. Walter, LIBTEX A Software Toolkit for Texture Synthesis in Computer Generated Images, Instituto de Informatica, Porto Alegre Brasil, 1992 [Walter 1998] M. Walter, A. Fournier, M. Reimers, Clonal Mosaic Model for the Synthesis of Mammalian Coat Patterns, , Department of Computer Science University of British Columbia [Kukla] J. M. Kukla, E. J. Bedwell, A procedural texture for epidermal tissue, Department of Computer Science and Electrical Engineering, University of Maryland Baltimore County, http://www.csee.umbc.edu/~ebedwe/skin/img/ [Legakis] Justin Legakis, Cellular Textures, http://graphics.lcs.mit.edu/~legakis/gallery_cellular.html [Blinn 9/1998] Jim Blinn, Ten More Unsolved Problems in Computer Graphics, IEEE Computer Graphics and applications 9/10 1998 [Glassner 3/2000] Andrew Glassner, The Digital Ceraunoscope, IEEE Computer Graphics and applications, 3/4 2000 [Cahn] J.W.Cahn, W.C.Carter, Crystal Shapes and Phase Equilibria: A Common Mathematical Basis, http://pruffle.mit.edu/~ccarter/hub_paper/section3_3.html, Marzec 1995 [Fielding] Alan Fielding, Distance and Similarity Measures, http://obelia.jde.aca.mmu.ac.uk/multivar/dist.htm, 2002 112
A.1.2.
Tekstury proceduralne to dzisiaj podstawa generacji profesjonalnych, fotorealistycznych obrazw uywanych w filmie, reklamie wizualizacji architektonicznej itd. Ich generacja polega na obliczeniu pewnych waciwoci powierzchni (wynikajcych z modelu powierzchni) na podstawie kontekstu cieniowania (czyli informacji o aktualnie cieniowanej prbce obrazu: wsprzdnych punktu w jednym z ukadw wsprzdnych tekstury bd przestrzeni). Funkcja ustalajca te wartoci to wanie tekstura proceduralna. Od tradycyjnych tekstur bdcych najczciej dwuwymiarowymi zdjciami lub innymi obrazami, odrniaj je midzy innymi: niezaleno od docelowej rozdzielczoci wikszo procedur potrafi wygenerowa dowoln ilo detali zalenie od odlegoci obserwatora od obserwowanej powierzchni moliwo generacji tekstur wielowymiarowych (dwuwymiarowych, przestrzennych bd przestrzennych animacji, czyli tekstur czterowymiarowych) stosunkowo may rozmiar definicji (w porwnaniu z wysokiej jakoci zdjciami) parametryczny interfejs umoliwiajcy generacj wielu rnych obrazw za pomoc jednej procedury
A.1.3.
Biblioteka zawiera zbir tzw. funkcji bazowych. Dla uytkownika funkcja bazowa jest funkcj posiadajc pewne wejcia i wyjcia. Kade wejcie i wyjcie ma okrelony typ. Tabela 1 zawiera klasy definiujce dostpne typy danych oraz ich opis (wszystkie klasy CValue.. dziedzicz po abstrakcyjnej klasie wartoci CAbstractValue).
klasa (przedrostek CValue*) opis
int float lub double, zalenie od definicji FLOAT w pliku types.h tablica float[3] lub double[3] tablica float[3] lub double[3] tablica float[3] lub double[3] tablica float[] lub double[] tablica float[3][] lub double[3][] struktura opisujca aktualn prbk, zawiera np. informacje potrzebne do implementacji antialiasingu analitycznego
Tabela 9-1 Typy danych interfejsu wzorw.
113
Kade z wej funkcji bazowej moe pobiera dane z 3 rde: swojej domylnej wartoci, ktra jest staa i ktrej zmiana jest niedostpna dla uytkownika wartoci dostarczonej przez uytkownika (ktra pozostaje staa przez cay czas renderingu) wyjcia innego wzoru, ktrego typ jest kompatybilny (w praktyce oznacza to identyczny typ) Przykadowy diagram funkcji bazowych (pochodzcy z edytora drzew cieniowania, opisywanego dalej) jest zamieszczony na Rysunek 9-1.
Widzimy na nim 6 funkcji bazowych oznaczonych prostoktami. Strzaki symbolizuj poczenie parametrw wyjciowych z wejciowymi, przy czym biegn one od parametru wyjciowego do wejciowego. Wartoci w owalach to zdefiniowane przez uytkownika stae. Funkcje bazowe s zdefiniowane jako klasy dziedziczce po klasie CPattern (ktrej deklaracj przedstawia Program 9-1). Opis funkcji klasy CPattern zawiera Tabela 9-2.
class CPattern { public: CPattern(CPatternFactory *pFactory); virtual ~CPattern(); //ewaluacja virtual void Evaluate() = 0; virtual void Initialise() = 0; //pobieranie aktualnych wartoci parametrw wejciowych/wyjciowych CAbstractValue *GetInputBoundValue(UINT in); CAbstractValue *GetInputValidValue(UINT in); CAbstractValue *GetOutputValue(UINT out); /*...*/
114
protected: //funckje dodajce nowe parametry wejciowe/wyjciowe //name nazwa parametru //type jeden z predefiniowanych typw parametrw //value oznacza warto domyln UINT AddInput(String name, int type, CAbstractValue *value); UINT AddOutput(String name, int type); /*...*/ private: //fabryka obiektw podawana jako parametr konstruktora klasy CPatternFactory *m_pFactory; };
opis
konstruktor
Parametrem kontruktora jest obiekt klasy dziedziczcej po CPatternFactory. Jest to fabryka funkcji cieniujcych, ktrej odpowiednia metoda zwraca nowe obiekty CPattern. Przykad definicji znajduje si w projekcie sample_src/sample_ptn Initialise Funkcja abstrakcyjna, ktrej zadaniem w pochodnej klasie jest inicjacja wzoru. Wykonywane operacje zale od konkretnej implementacji, jednak zasad jest, e inicjowane s tutaj wszystkie wartoci niezmienne dla danych parametrw wejciowych. Naley zwrci uwag na to, e cz parametrw wejciowych danej funkcji bazowej moe ulega zmianie w trakcie procesu renderingu, dlatego inicjowane powinny by tylko te zmienne, ktre zale od parametrw wejciowych, co do ktrych zakadamy, e bd niezmienne. Informacj o takim zaoeniu naley umieci w dokumentacji funkcji cieniujcej. Evaluate Funkcja abstrakcyjna obliczajca dla danych parametrw wyjciowych oraz zmiennych zainicjowanych w funkcji Initialise wartoci parametrw wyjciowych. GetInputBoundValue Funkcja zwraca wskanik na obiekt wartoci, ktry jest aktualnie wykorzystywany przez parametr wejciowy o podanym identyfikatorze in. GetInputValidValue Funkcja zwraca wskanik na obiekt aktualnej wartoci. W razie potrzeby warto ta jest ewaluowana. Dla przykadu, wywoanie GetInputValidValue dla funkcji Checker z parametrem okreslajcym identyfikator wejcia white spowoduje ewaluacj funkcji Interpolator3D, ktra z kolei wymusi ewaluacj Leather oraz InContext. GetOutputValue Funkcja zwraca wskanik na obiekt odpowiedniej wartoci wyjciowej, ktrej identyfikator jest podawany jako parametr. Jest uywana w funkcji Evaluate do ustawiania wartoci parametrw wyjciowych. AddInput Funkcja suy do dodawania nowych parametrw wejciowych i powinna by uywana tylko w konstruktorze. Wartoci zwracan jest identyfikator, uywany potem w 115
AddOutput
wywoaniach GetInput... Funkcja suy do dodawania nowych prametrw wyjciowych i powinna by uywana tylko w kontruktorze. Wartoci zwracan jest identyfikator, uywany potem w wywoaniach GetOutpuValue.
Tabela 9-2 Opis metod klasy CPattern
Przykad definicji wzoru Checker, na ktrym mona oprze wasne implementacje funkcji bazowych, znajduje si w plikach sample_src/sample_ptn/sample_ptn.* Istniej dwie specjalne klasy funkcji bazowych okrelajce kontekst cieniowania i suce do komunikacji biblioteki TexLib z wykorzystujcym je systemem do renderingu. S to, widoczne na Rysunek 9-1, InContext oraz OutContext. Funkcja InContext okrela dla kadej ewaluacji drzewa (kadej prbki) kontekst wejciowy. Zawiera on nastpujce parametry:
Zmienna P N C T I E u, v, s, t dPds, dPdt, dPdu, dPdv ds, dt, du, dv Typ (CValue..) Opis
Wsprzdne aktualnie cieniowanego punktu w ukadzie lokalnym obiektu Wektor normalny do aktualnie cieniowanej paszczyzny Kolor paszczyzny w cieniowanym punkcie P. Przezroczysto powierzchni. Kierunek promienia przecinajcego powierzchni w cieniowanym punkcie (od ang. Incident vector). Punkt pooenia obserwatora (od ang. Eye point) Parametry powierzchni opisanej parametrycznie oraz koordynaty tekstury. Pochodne koordynat tekstury oraz parametrw powierzchni opisuj jak zmienia si pozycja wraz ze zmian parametrw powierzchni. Zmiana parametrw powierzchni rednica okrgu opisanego na wielokcie bdcym przeciciem stoka widzenia wychodzcego z aktualnie cieniowanego piksela oraz cieniowanej paszczyzny. Moe to by (zalenie od systemu renderujacego) w przyblieniu warto: spotSize = max( dPdu * du ^ dPdv * dv , MinSpotSize) , gdzie ^ oznacza iloczyn wektorowy 2 wektorw Zmienna przeczajca uycie antialiasingu analitycznego (od ang. Analytic Antialiasing). Warto AA=0 oznacza wyczenie antialiasingu, AA0 oznacza wczenie antialiasingu. 116
spotSize
Float
AA
Int
Wszystkie wzory udostpniajce ten tryb zaczn go wykorzystywa. Warto czasu. Suy do renderingu animacji i jest umown wartoci zmiennoprzecinkow (tzn. nie mona interpretowa upywu czasu od wartoci time=0 do time=1 jako np. 1 sekundy, poniewa to, jak time bdzie wykorzystany zaley od systemu wykorzystujcego bibliotek)
time
Float
Funkcja OutContext okrela kontekst wyjciowy. Drzewo cieniowania moe za jego pomoc modyfikowa kilka atrybutw powierzchni:
Zmienna C N Typ (patrz Tabela 4-2) Opis
Color Vector
Nowy kolor paszczyzny dla punktu P kontekstu wejciowego Zmodyfikowana normalna dla punktu P kontekstu wejciowego Zmodyfikowany punkt P kontekstu wejciowego. Uwaga: Nie kady system udostpnia moliwo modyfikacji paszczyzny (przemieszczenia, ang. displacement). Jeli tak, to zmienn t wykorzystuje si zwykle przesuwajc wejciowy punkt P wzdu wektora normalnego N. Zmodyfikowana przezroczysto. Wspczynnik pokrycia powierzchni.
Point
T alpha
Color Float
117
A.1.4.
Edytor drzew cieniowania suy do szybkiej edycji drzew cieniowania, ich zapisywania i odczytywnia. Obsuga Edytora jest opisana w oddzielnym dokumencie Edytor.pdf.
A.1.5.
Zadania
Zadanie polega na stworzeniu biblioteki DLL rozszerzajcej zbir funkcji bazowych biblioteki TexLib oraz przeprowadzenia eksperymentw. Kade z poniszych zada naley wykona wedug nastpujcego algorytmu: utworzy now funkcj (lub kilka funkcji) bazow zgodnie z opisem w punkcie A.1.3 Interfejs do tworzenia funkcji bazowych, wykorzystujc przykadowy projekt uy nowej funkcji w drzewie cieniowania modyfikujcym odpowiednie atrybuty powierzchniowe, wymagane przy konkretnym zadaniu zaimplementowa odpowiednie metody klas nowych funkcji stworzy bibliotek DLL i umieci j w podkatalogu Patterns katalogu Edytora drzew cieniowania przeprowadzi eksperymenty majce na celu ocen jakoci oraz wydajnoci implementacji: o wydajno stworzonych algorytmw dla scen testowych (sceny opt.lwc, mid.lwc, mid2.lwc oraz pes.lwc) o jako uzyskiwanych obrazw (poprzez porwnanie z podobnymi efektami realizowanymi za pomoc innych metod grafiki fotorealistycznej lub zdjciami) o jako parametryzacji, czyli jej intuicyjno oraz wpyw parametrw na uzyskiwane rezultaty przygotowa sprawozdanie wedug zamieszczonego niej opisu Zadania wymienione dalej s uszeregowane wedug rosncego stopnia trudnoci.
Zadanie 1
Zaprojektowa drzewo cieniowania z uyciem predefiniowanych funkcji bazowych, ktre bdzie symulowao wygld kamienia naturalnego. 118
Zadanie 2
Zbudowa drzewo cieniowania generujce obraz chmur typu cumulus. Drzewo ma wykorzystywa parametr time kontekstu wejciowego do generacji animacji przepywajcych, formujcych si chmur. Wygenerowa klatki animacji chmur za pomoc funkcjonalnoci Edytora drzew cieniowania.
Zadanie 3
Zdefiniowa funkcj cieniujc, ktra przy wykorzystaniu odpowiedniej sceny (np. top.lwc) moe posuy do generacji obrazw moliwych do wykorzystania jako tradycyjne, paskie tekstury. Powinna wic dziaa w przestrzeni okrelonej przez s,t. Funkcja powinna umoliwia generacj kilku rodzajw ciekawych, abstrakcyjnych lub naturalnych wzorw. Dodatkowym wymaganiem jest moliwo generacji wzorw okresowych (zaptlajcych si), dziki ktrym gotow tekstur bdzie mona uywa z odwzorowaniem zaptlajcym do teksturowania nieskoczenie duych powierzchni.
Zadanie 4
Zdefiniowa funkcj bazow modyfikujc kolor oraz realizujc odwzorowanie nierwnoci powierzchni symulujc wygld kory drzewa. Funkcja powinna by moliwa do uycia w drzewie cieniowania o topologii przedstawionej na diagramie na Rysunek 9-2. Moe by zdefiniowana zarwno w przestrzeni s,t jak i lokalnej R3 obiektu.
119
Zadanie 5
Zdefiniowa funkcj bazow modyfikujc kolor oraz realizujc odwzorowanie nierwnoci powierzchni symulujc wygld uski ryby. Funkcja powinna by moliwa do uycia w drzewie cieniowania o topologii przedstawionej na diagramie z Rysunek 9-2 i powinna wykorzystywa lokalny ukad wsprzdnych R3 obiektu.
Zadanie 6
Zdefiniowa funkcj bazow realizujc prosty Rysunek 9-3 Rybia uska rendering wolumetryczny, wizualizujc efekty wyadowa atmosferycznych. Funkcja powinna dziaa w ukadzie wsprzdnych R3 wiata. Analiza zjawiska wyadowa atmosferycznych znajduje si w artykule: Andrew Glassner, The Digital Ceraunoscope: Synthetic Thunder and Lightning, IEEE Computer Graphics and applications, nr 3-4/2000 Wskazwka: funkcja musi wykorzystywa kierunek promienia I i odpowiednio modyfikowa atrybut alpha oraz C.
Zadanie 7
Zdefiniowa funkcj bazow, dziki ktrej bdzie mona uzyska efekt przezroczystych baniek (jak na Rysunek 9-4). Naley zasymulowa prosty model owietlenia. Funkcja powinna dziaa w lokalnym ukadzie wsprzdnych R3 obiektu. Dodatkowo, prosty model owietlenia mona zastpi fizycznie poprawnym, ktry jest opisany midzy innymi w artykule: Andrew Glassner, Soap Bubbles, IEEE Computer Graphics and applications, nr 9-10/2000 Wskazwka: funkcja powinna ledzi dla kadej prbki promie o kierunku I pobranym z kontekstu wejciowego. Rozkad baniek w przestrzeni przypomina diagram Voronoi.
A.1.6.
Sprawozdanie
Do zadania powinno powsta sprawozdanie zawierajce midzy innymi: opis uytych algorytmw opis sposobu przeprowadzania eksperymentw i ich cele wyniki eksperymentw w postaci: o zestawienia czasw renderingu dla rnych scen oraz ustawie parametrw wejciowych o prezentacji obrazw przedstawiajcych zastosowanie stworzonych funkcji w praktyce
120
A.1.7.
Literatura
[Egerton 1999] Patricia A. Egerton and W.S. Hall, Computer Graphics: Mathematical First Steps, Prentice Hall, London 1999 [Rogers] David F. Rogers, State of Art In Computer Graphics. Aspects of visualization, Springer-Verlag, New York 1994 [Watt 2000] Alan Watt, 3D Computer Graphics, Addison-Wesley, Harlow 2000 [T&M 1998] D. Ebert, F. K. Musgrave, D. Peachey, K. Perlin, S. Worley, Texturing and Modeling. A procedural approach., Academic Press Professional, 1998 [Worley] Steven Worley, A Cellular Texture Basis function, http://graphics.lcs.mit.edu/~mcm/6.838j/talk.html [Pixar] Pixar, The RenderMan Interface 3.2, July 2000 [Apodaca 2000] Tony Apodaca, How PhotoRealistic RenderMan Works, SIGGRAPH 2000: Advanced RenderMan 2
Przykadowy projekt Visual C++ 6.0 umoliwiajcy stworzenie biblioteki DLL rozszerzajcej TexLib, wraz z plikami potrzebnymi do kompilacji i konsolidacji plikiem texlib.lib oraz koniecznymi plikami nagwkowymi (podkatalog Project) Sceny, ktrych studenci powinni uywa do testw swoich rozwiza. Ujednolicenie scen pomoe dodatkowo w porwnywaniu wynikw osiganych przez rne osoby (podkatalog Scenes). Aplikacja Edytora drzew cieniowania wraz z dokumentem opisujcym sposb jej obsugi (podkatalog Editor) Przykadowe drzewa cieniowania (podkatalog Editor\Trees) Dokument zawierajcy instrukcj dla studentw wraz z przykadowymi zadaniami.
Realizacja wiczenia przez studenta nie powinna zaj w czasie trwania semestru wicej ni 3-4 tygodnie, zakadajc jedn godzin zaj laboratoryjnych tygodniowo. Program dobrano tak, aby wstpna implementacja oraz konfiguracja projektu zaja ok. 1h, a student mg skupi si dalej na implementacji waciwych algorytmw. Pomc ma w tym przykadowy projekt, ktry mona znale w katalogu sample_src.
A.2.1.
Ocena
Ocenie powinny podlega nastpujce waciwoci prac: efekty wizualne, trafno i skuteczno zastosowanych sposobw generacji tekstury wydajno zastosowanych algorytmw atwo obsugi zdefiniowanych wzorw (dobr parametrw, intuicyjno ich uycia i wpywu na efekty) jako sprawozdania
Ocena efektw wizualnych to nie tylko subiektywna ocena walorw plastycznych wykonana przez prowadzcego. Tutaj przyjrze si naley realizmowi stworzonych wzorw (porwnania z przykadami wzitymi z natury) oraz moliwociom tworzenia rnych wariantw wzoru, jakie
121
daje przyjte rozwizanie. Algorytm powinien by oceniany za swoj oryginalno, prostot i skuteczno. Wydajno najlepiej sprawdza stosujc standardowe sceny z przypisanymi do pewnych elementw geometrii teksturami. Przykady takich scen mona znale w katalogu Scenes. S one zalecane do eksperymentw take w instrukcji dla studentw. Bardziej szczegowy opis scen mona znale w punkcie 7.3.1. Edytor drzew cieniowania udostpnia funkcj obliczania czasu renderingu, ktr mona wykorzysta do porwnania czasw osiganych przez algorytmy. Bardzo wanym elementem oceny jest atwo i intuicyjno obsugi zdefiniowanej funkcji. Istotna jest ilo parametrw, ich nazwy oraz funkcje, jakie peni i ich wpyw na dzianie algorymtu. Generalnie, parametry powinny by zrozumiae dla kogo, kto nie zna algorytmu stojcego za interfejsem. Powinny dziaa zgodnie z tym, co sugeruj nazwy i zdrowy rozsdek.
A.2.2.
Prowadzcy ma due moliwoci modyfikacji wiczenia. Zadania studentw mog polega na symulacji bardzo rnych powierzchni i zjawisk naturalnych. Mog take nie wymaga implementacji, a jedynie zaznajomienia si z pojciem tekstur proceduralnych i zaprojektowania pewnych drzew cieniowania z uyciem Edytora. atwo w ten sposb kontrolowa stopie trudnoci zada: od tworzenia adnie wygldajcych obrazw z uyciem predefiniowanych funkcji bazowych (uatwia to studentom zrozumienie zasad tworzenia tekstur, rnic midzy teksturami powierzchniowymi i przestrzennymi) przez definicj nieskomplikowanych tekstur modyfikujcych kolor, po implementacj rendererw wolumetrycznych czy rendererw obiektw opisanych za pomoc funkcji gstoci (tzw. hipertekstur) ([T&M 1998], str 209). Przykady wszystkich z tych rodzajw zada zostay umieszczone w instrukcji dla studentw.
122
B.1.2.
Definicja wzorw
Kada linia oznacza instancj wzoru o podanej nazwie. Zawsze wystpuj tutaj przynajmniej 2 standardowe wzory. Indeks 1 posiada InContext kontekst wejciowy, na ostatnim miejscu znajduje si OutContext kontekst wyjciowy.
B.1.3.
Definicja wartoci
Kada warto, podobnie jak wzr, posiada swj indeks. Druga warto to identyfikator typu, ktry moe przyj jedn z nastpujcych postaci: INT FLOAT POINT VECTOR COLOR ARRAY_FLOAT ARRAY_COLOR
Tabela 9-3 Identyfikatory typw wystpujce w definicji wartoci w pliku *.tree
123
B.1.4.
Definicja powiza
Definicja powizania wyglda nastpujco: id_pat id_in [ id_pat2 | -1] [ id_out | id_val ] id_pat id_in id_pat2 id_out id_val Przykadowo, definicja 3 thresholds 2 array_of_floats
124