praca

Upload: tomasz-kustrzynski

Post on 06-Jul-2015

1.247 views

Category:

Documents


0 download

TRANSCRIPT

Wybrzee Wyspiaskiego 27, 50-370 Wrocaw

POLITECHNIKA WROCAWSKA WYDZIAOWY ZAKAD INFORMATYKI WYDZIA INFORMATYKI I ZARZDZANIA

Zastosowanie technik teksturowania proceduralnego do modelowania zjawisk naturalnych i wasnoci powierzchniTomasz Kustrzyski

Promotor: dr in. Jerzy Sas

Ocena:

Wrocaw 2002

StreszczenieNiniejsza 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.

AbstractThe 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.

2

Spis treci1. 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

3

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 A. PROPOZYCJA WICZENIA LABORATORYJNEGO.................................................... 113

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

4

Spis ilustracjiRYSUNEK 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

5

Spis diagramwDIAGRAM 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

6

1. WstpGrafika 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.

7

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.

8

2. Elementy grafiki komputerowejTen rozdzia zawiera definicje poj grafiki komputerowej, zwizanych gwnie z procesem teksturowania, ktry jest jednym z elementw potoku renderingu. Omwiono tutaj take pobienie proces renderingu dla metod biorcych pod uwag owietlenie lokalne.

2.1. Podstawowe pojcia grafiki komputerowejPoniej przedstawiony zosta schemat typowego potoku renderingu dla owietlenia lokalnego, czyli nie biorcego pod uwag wiata odbitego i rozproszonego. Przykadami algorytmw wykorzystujcych ten potok s rendering scanline, Z-buffer, REYES (zmodyfikowana metoda scanline, wykorzystywana przez system RenderMan). przeksztacenia geometryczne przeksztacenia modelowania przeksztacenia rzutowania rasteryzacja okrelenie powierzchni widocznych rasteryzacja cieniowanie

Diagram 2-1 Przebieg procesu renderingu dla owietlenia lokalnego

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.).

9

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

obliczenie koloru dla prbki

Diagram 2-2 Przebieg procesu 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

Problem teksturowania przedstawiony zosta dokadniej w nastpnym punkcie.

2.2. Historia tekstur proceduralnychCharakterystyczn cech obrazw powstajcych w pocztkach grafiki komputerowej by niewielki stopie ich realizmu. Pierwsze sceny przedstawiay modelowane za pomoc siatek trjktw lub powierzchni parametrycznych obiekty cieniowane z wykorzystaniem mao realistycznych modeli owietlenia. Znaczcym krokiem naprzd byo uycie w 1974 przez E.E. Catmulla tekstur skanowanych obrazw naoonych na geometri i modyfikujcych jej kolor . Obiekty zyskay wiele na realizmie przy niewielkim wysiku i zwikszeniu zoonoci obliczeniowej, szybko w zwizku z tym pojawiy si ulepszenia techniki Catmulla wykorzystujce tekstury take do innych ni modyfikacja koloru powierzchni celw. W 1976 Blinn i Newell przedstawili metod odwzorowania rodowiskowego (ang. reflection mapping lub environment mapping), przy pomocy ktrej staa si moliwa symulacja powierzchni lustrzanych. Wkrtce pojawiy si kolejne zastosowania tekstur w grafice komputerowej: odwzorowanie nierwnoci powierzchni (ang. bump mapping) , czyli symulacja znieksztace powierzchni za pomoc zmian normalnych powierzchni wprowadzony przez Blinna w 1978 oraz odwzorowanie cieni (ang. hadow mapping), gdzie tekstury gbokoci, tworzone przy ustawieniu obserwatora w punkcie rda wiata, wykorzystano do produkcji realistycznych cieni. Catmull w swoim pierwszym podejciu teksturowa powierzchnie zdefiniowane parametrycznie, za pomoc uporzdkowanej pary (u, v). W ten sposb kademu punktowi powierzchni odpowiada punkt dwuwymiarowej tekstury (s, t). Jeli jednak geometria jest reprezentowana za pomoc siatki trjktw, nie mona atwo przeprowadzi odwzorowania punktu na powierzchni w punkt tekstury. Stosuje si w tych przypadkach przeksztacenia z trjwymiarowej przestrzeni obiektu (x, y, z). W obydwu sposobach znajdowania wsprzdnych (s, t) jednak zawsze pojawiaj si znieksztacenia (np. opisanie tekstury na kuli spowoduje wystpienie znieksztace w obszarach biegunowych). Minimalizacja tych znieksztace do dzi jest problemem w przypadkach bardzo skomplikowanych modeli. Jedyn metod cakowitej eliminacji deformacji tekstur jest zastosowanie tekstur zdefiniowanych w przestrzeni trjwymiarowej. Nie sposb uczyni tego w efektywny sposb dysponujc jedynie paskimi obrazami (Cho istniej takie podejcia, w ktrych dua ilo paskich obrazw, reprezentujcych kolejne przekroje obiektu, definiuje trjwymiarowe tekstury. Objto takiej definicji jest jednak na tyle dua, e stosowanie takiego rozwizania na szersz skal jest niepraktyczne). Z pomoc przychodz tutaj przestrzenne tekstury proceduralne. Obrazy tworzone syntetycznie proceduralnie byy wykorzystywane od pocztku istnienia pojcia tekstury. Lata 80 przyniosy kilka innowacji, ktre umoliwiy wygodne korzystanie z tekstur, take do opisu zjawisk przestrzennych, takich jak drewno, czy marmur. Dla tego typu obiektw tradycyjne metody rzutowania dwuwymiarowych, skanowanych obrazw, zawodz. Geoffrey Gardner produkowa tekstury sumujc funkcje sinus o rnych okresach, fazach i amplitudach. Funkcje o duych okresach przeksztaca dodajc wartoci funkcji o duych czstotliwociach. Otrzymywa w ten sposb wzory przypominajce naturalne chmury. Byo to jedno z pierwszych podej do tworzenia realistycznych tekstur proceduralnych. Zaraz po nim, w tym samym roku, Ken Perlin zdefiniowa najintensywniej obecnie uywan do produkcji tekstur proceduralnych funkcj. Jest ona dzisiaj okrelana jako funkcja ktra daa pocztek tysicu tekstur (the function, that launched a thousand textures [T&M 1998], strona 66). Mowa o funkcji noise, wykorzystywanej do generacji naturalnie wygldajcych tekstur. Korzystaj z niej midzy innymi procedury generujce realistyczne obrazy marmurw, chmur, drewna, grzystych krajobrazw itp. Noise moe by zdefiniowany w trzech i wikszej iloci wymiarw, wic mona z jego pomoc produkowa tekstury przestrzenne nie wymagajce w 11

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):

Rysunek 2-1 Shade tree realizujce model owietlenia

Oto odpowiadajcy mu kod shadera systemu RenderMan:surface plastic (float Ka=1, Kd=0.5, Ks=0.5,Roughness=0.1;) { point Normal=faceforward(normalize(N),I); point Viewer = normalize(-I); Oi=Os; Ci=Os*( Cs*(Ka*ambient()+Kd*diffuse(Normal)+ Ks*specular(Normal,Viewer,Rougness)) ); }

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.

2.3. Definiowanie tekstur proceduralnychDefiniowanie tekstur proceduralnych odbywa si zazwyczaj w konkretnym rodowisku. System, ktrego uywamy dostarcza pewnego interfejsu za pomoc ktrego mamy moliwo umieszczenia w scenie nowych funkcji teksturujcych. Interfejs taki to zwykle jzyk opisu tekstur proceduralnych (np. Shading Language w RenderMan i Blue Moon Rendering Tool), bd interfejs za pomoc ktrego definiowane s moduy rozszerze (np. 3dsMAX). Jzyki opisu tekstur proceduralnych to specjalizowane narzdzia, ktre uatwiaj zadanie programisty tekstur. Posiadaj: predefiniowane typy (np. opisujce kolor, punkty, wektory) oraz operacje na nich (operacje na wektorach, transformacje wsprzdnych itp.), predefiniowane funkcje matematyczne, definiujce modele cieniowania itp. przenaszalno w przypadku jzykw interpretowanych Wady takich jzykw, to brak moliwoci definiowania wasnych typw, stosowania rekurencji, stosowania wskanikw, uywania operacji wejcia/wyjcia (np. brak obsugi plikw). W Shading Language, uywanym w systemie RenderMan, istnieje moliwo rozszerzenia podstawowego zbioru funkcji (zwanych tam shadeops) o nowe, pisane w jzyku C. Biblioteki takich funkcji mog by uywane z poziomu Shading Language, jednak same funkcje nie mog uywa shadeops ani adnych innych dostarczanych przez renderer danych. Wszystkie dane zwizane z kontekstem aktualnie cieniowanego punktu musz zosta przekazane za pomoc parametrw w czasie wywoania zewntrznej funkcji wewntrz funkcji teksturujcej zdefiniowanej w Shading Language. W ten sposb, mimo ogranicze jzyka teksturowania, istnieje moliwo tworzenia dowolnie skomplikowanych tekstur, wykorzystujcych zoone typy danych oraz operacje wejcia/wyjcia. Istnieje te moliwo wykorzystania uniwersalnych, nie zwizanych z konkretnym systemem do renderingu, bibliotek procedur teksturujcych. Podobnymi moliwociami dysponuje wiele innych systemw. 3dStudioMAX udostpnia obiektowy interfejs C++ sucy do pisania moduw rozszerze. Interfejs moduw rozszerze LightWave, rwnie umoliwiajcy pisanie tekstur proceduralnych, jest zdefiniowany w C. Take w tych przypadkach umoliwia to atw integracj z zewntrzn bibliotek.

2.3.1. Definiowanie bibliotek tekstur proceduralnychWiele tekstur proceduralnych uywa podobnych metod do generacji wzorw. Dla konkretnego rodzaju wzorw istnieje zwykle jeden algorytm, ktry do zastosowania w wielu teksturach wymaga jedynie maych modyfikacji. S to tzw. funkcje bazowe tekstur. Najpopularniejsze funkcje bazowe s czsto predefiniowane w systemach do renderingu, inne

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.

2.4. Jako tekstur proceduralnychOcena jakoci nie jest oczywista ze wzgldu na to, e zwykle wynikiem dziaania funkcji teksturujcej jest obraz, a ocena tego moe by bardzo subiektywna. Wchodz tutaj w gr wraenia estetyczne, na podstawie ktrych trudno zdefiniowa przydatn miar jakoci. Niniejsza praca ma na celu symulacj pewnych zjawisk naturalnych. Najczciej dokadne modele fizyczne s zbyt skomplikowane implementacyjnie bd zbyt zoone obliczeniowo a w zamian stosuje si uproszczone modele, ktrych zdolnoci naladowania zjawisk naturalnych s mocno ograniczone. Oczywist pomoc przy ocenie jakoci, miar, ktra moe zastpi subiektywne estetyczne wraenia, bdzie wic porwnanie zjawisk generowanych z wystpujcymi w naturze. Ocen tekstur przeprowadza si take na podstawie kilku innych parametrw. Dwa z nich to wydajno oraz jako obrazu mierzona iloci znieksztace spowodowanych aliasingiem (prbkowaniem wzorw o czstotliwociach wikszych od czstotliwoci wynikajcej z ograniczenia Nyquista). Wydajno to wany w teksturach proceduralnych czynnik przesdzajcy o ich przydatnoci do uycia. Skomplikowane tekstury zwykle s kosztowne obliczeniowo. W szczeglnoci, czsto uywana funkcja szumu Perlina noise jest stosunkowo wolna. Efektywno dziaania mona poprawi stosujc kilka metod: 14

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

3. Przegld stosowanych metod symulacji zjawisk naturalnychW tym rozdziale przedstawione zostay fotografie wzorw wystpujcych w naturze oraz rne podejcia do ich symulacji, bd to uzasadnionej fizycznie, bd opartej tylko na wraeniach estetycznych. Informacje zawarte w rozdziale stanowiy punkt wyjcia do opracowania metod symulacji dajcych realistyczne obrazy zjawisk podobnych do opisywanych.

3.1. Kategorie tekstur proceduralnych rozwaane w pracyTekstury proceduralne mog by tworzone dwoma sposobami: implicit i explicit. W przypadku explicit funkcja generuje cay obraz, stosujc dowoln kolejno tworzenia kolejnych pikseli. Funkcje implicit odpowiadaj natomiast na pytanie o jaki konkretny punkt. W przypadku tekstur, ktre s obliczane w trakcie renderingu (tzn. przed renderingiem nie znamy ich pooenia na wynikowym obrazie, nie moemy wic okreli stopnia szczegowoci ani rozmiarw tekstury) najlepszym rozwizaniem s wanie tekstury implicit. Definicja explicit wymagaaby prawdopodobnie wygenerowania caej tekstury przed rozpoczciem renderingu i zapamitania jej. Kolejno pikseli tekstury o jakie renderer pytaby byaby bowiem najczciej rna od kolejnoci w jakiej generuje je funkcja. Tutaj interesowa nas bd jedynie tekstury generowane w sposb implicit. Tekstury proceduralne pozwalaj na symulacj bardzo szerokiego zakresu zjawisk naturalnych, od struktury drewna, kamienia naturalnego (marmury, granity), po chmury, ogie, wod. W tej pracy zajm si pewnym podzbiorem tekstur proceduralnych. Przykadami interesujcych mnie wzorw s kamienne mury, wzory powstajce na skrze niektrych zwierzt (yrafy, w, due koty gepard, jaguar, leopard, ocelot) (Rysunek 3-1 Wzory na skrze zwierzt), skra ludzka, zmity papier (Rysunek 3-2), kora drzew(Rysunek 3-3), styropian, piana, struktura gbki (Rysunek 3-4), kamienie naturalne, mury kamienne, wzory tworzce si na wyschnitej ziemi (Rysunek 3-5), cienie kaustyczne rzucane przez wod(Rysunek 3-6), inne, abstrakcyjne wzory (Rysunek 3-7). Cech wspln tych wzorw jest sposb, w jaki dziel przestrze. Zarwno wzory na yrafie jak kora niektrych drzew dziel powierzchni na komrki o mniej lub bardziej regularnych ksztatach. Podobnie z pozostaymi przykadami. Funkcje produkujce wzory tego typu to tekstury komrkowe.

17

jaguar

leopard

ocelot

pantera

wRysunek 3-1 Wzory na skrze zwierzt

yrafa

skraRysunek 3-2 Skra i papier

zmity papier

18

Rysunek 3-3 Kora i drewno

piana styropian

piana na powierzchni piwaRysunek 3-4 Piana i styropian

gbka symulacja

19

kamienny mur

kamienny mur

spkana powierzchnia wyschnitej ziemi

kra lodowa

Rysunek 3-5 Kamienne mury, wyschnita ziemia, kra

Rysunek 3-6 Cienie kaustyczne rzucane przez wod

Rysunek 3-7 Wzory abstrakcyjne

20

3.2. Techniki zaawansowanePoniej przytaczam wyniki bada nad zjawiskami, ktre mog by symulowane za pomoc tekstur komrkowych. Szereg podej wzorowao si na fizycznych podstawach powstawania wzorw (teorie Reaction-Diffusion oraz Cell Division powstawania wzorw na skrze ssakw), pozostae, o ile wiadomo, nie maj nic wsplnego z rzeczywistymi procesami.

3.2.1. Szum PerlinaNajwiksz rewolucj w symulacji naturalnych zjawisk przy pomocy teksturowania proceduralnego byo wprowadzenie w 1985 przez Kena Perlina funkcji generujcej szum (tzw. Perlin noise), ktrej charakterystycznymi cechami s: powtarzalno (dla okrelonych parametrw ma zawsze t sam warto) ograniczenie wartoci do przedziau [-1, 1] skoczona czstotliwo (maksymalna czstotliwo rwna 1) W odrnieniu od szumu Perlina, szum biay nie ma ograniczenia czstotliwoci, nie jest te powtarzalny. Dla teksturowania proceduralnego jest praktycznie bezuyteczny. Pierwszym powodem jest to, e wzory wygenerowane za jego pomoc byyby za kadym razem inne. Niemoliwe staoby si odtworzenie wzoru, a co za tym idzie generowanie animacji ani rnych widokw tego samego obiektu. Drugim, fakt, e biay szum wprowadza nieskoczon liczb szczegw. Uniemoliwioby to przeprowadzenie antialiasingu, poniewa prbkowanie nigdy nie mogoby mie wystarczajcej czstotliwoci. Oryginalny szum Perlina jest implementowany jako funkcja interpolujca midzy losowymi wartociami generowanymi w wzach wielowymiarowej dyskretnej siatki. Perlin noise jest narzdziem wykorzystywanym przy bardziej zaawansowanych algorytmach i jako taki jest podstaw wikszoci tekstur proceduralnych. Pozwala na symulacj zjawisk, ktre maj charakter fraktalny, czy takich, gdzie mona zaobserwowa naoone na siebie wzory o rnych wielkociach. Wikszo zjawisk naturalnych, czy to ruch gazi na wietrze czy struktura chmur bd kamienia, ma wanie charakter fraktalny. Rysunek 3-8 przedstawia kilka zjawisk, ktrych podstaw jest fraktalna wersja Perlin noise. Na Rysunek 3-9 wida wykorzystanie szumu do znieksztacenia powierzchni obiektu.

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).

3.2.2. Wzory kamiennych murwK. Miyata na konferencji SIGGRAPH 1990 zaprezentowa metod generacji tekstur przypominajcych kamienne mury. Jego metoda produkuje tekstury powierzchniowe (zdefiniowane w przestrzeni st obiektu). Obliczany jest kolor oraz odchylenie normalnej wizualizujce nierwnoci powierzchni (bump mapping). Miyata zauway, e do stworzenia tekstury muru potrzebne s dwa modele: struktura pocze midzy kamieniami oraz tekstura pojawiajca si na kamieniach. W ten sposb wyodrbni dwa etapy produkcji tekstury. W pierwszym, na podstawie parametrw okrelajcych redni wielko kamieni, ich zrnicowanie oraz sposb rozoenia na powierzchni generuje wzr imitujcy poczenia midzy kamieniami. W ten sposb powierzchnia zostaje podzielona na nieregularne komrki (Rysunek 3-10). Drugi etap polega na naoeniu tekstury kamienia, wygenerowanej przy pomocy fraktalnej turbulencji. Dla kadej komrki parametry tekstury (kolor, stopie szczegowoci) nieznacznie si rni, w ten sposb obraz nabiera wikszego realizmu (Rysunek 3-11).

Rysunek 3-10 K. Miyata poczenia midzy kamieniami muru

Rysunek 3-11 K.Miyata tekstura muru

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.

3.2.3. Wzory na skrze ssakw Reaction - DiffusionReactionDiffusion to proces, opisany po raz pierwszy przez Alana Turinga (1952), w ktrym dwa lub wicej zwizkw chemicznych (zwanych morfogenami, ang. morphogenes) rozpraszaj si na powierzchni i reaguj ze sob produkujc stabilne wzory. Dyfuzja i reakcje s opisane za pomoc ukadu nieliniowych rwna rniczkowych czstkowych. W systemie ReactionDiffusion musz zawsze wystpowa przynajmniej dwa morfogeny, rnice si prdkociami dyfuzji. Jedna z tych substancji musi by ponadto zdolna do zwikszania szybkoci produkcji. Pozostae substancje pomagaj lub usiuj zahamowa ten proces. ReactionDiffusion moe generowa rnorodne wzory zoone z plam lub pasw, przypominajce te spotykane na skrze ssakw (koty, zebry). Biologowie s zdania, e cz wzorw spotykanych w naturze moe by wanie wynikiem procesw symulowanych za pomoc ReactionDiffusion, jednak nie zostao to dotychczas udowodnione. Jako pierwszy zaimplementowa ReactionDiffusion Greg Turk [Turk 1991]. Jego metoda umoliwia tworzenie wzoru bezporednio na modelu geometrycznym. Przebiega ona w kilku fazach: 1. Powierzchnia modelu dzielona jest na komrki o zblionych polach

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.

Rysunek 3-14 G. Turk. Wzory reaction diffusion na obiektach

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 DivisionWalter 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

gepard (wzr rozetkowy)

yrafaRysunek 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.

PodsumowanieIstnieje 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.

3.2.4. Komrkowe funkcje bazowe tekstur (cellular texture basis function)Worley zaproponowa realizacj komrkowej funkcji bazowej, ktra daje moliwoci generacji dosy szerokiego zakresu tekstur. Autor wykorzysta j do symulacji nieregularnych powierzchni przypominajcych pyty, skry, zmitego papieru, lodu, ska, powierzchni pokrytych grami i kraterami. Rysunek 3-16 pokazuje przykad wykorzystania komrkowej funkcji bazowej do generacji tekstury przypominajcej kamienny mur.

26

Rysunek 3-16 S. Worley Przykad wykorzystania komrkowej funkcji bazowej

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 .

Rysunek 3-17 Diagram Voronoi

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

Rysunek 3-19 J. Kukla - Tekstury skry.

3.2.5. PodsumowanieZ 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.).

3.3. Dostpne komercyjnie biblioteki do tworzenia wzorw proceduralnychIstnieje szereg bibliotek produkujcych tekstury proceduralne, jednak wikszo z nich to produkty komercyjne. Poniej przedstawiam dwie wybrane implementacje: LIBTEX oraz PixelLoom.

LIBTEXLIBTEX [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

Diagram 3-1 LIBTEX ewaluacja tekstur przestrzennych

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.

PixelLoomTo 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.

Rysunek 3-20 Obraz wygenerowany przy pomocy biblioteki PixelLoom

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

Rysunek 3-21 Przykady tekstur komrkowych wygenerowanych za pomoc CorelTEXTURE

PodsumowanieWikszo 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

4. Metody i techniki wykorzystane w pracyRozdzia ten opisuje sposb generacji tekstur proceduralnych, jakiego uyto w trakcie bada. Definiuje pojcie funkcji bazowej, metody ich skadania oraz konkretne algorytmy i implementacje funkcji uywanych dalej do produkcji ciekawych wzorw proceduralnych. W szczeglnoci omawiane s metody oparte na definicji szumu wg. Perlina, podziale przestrzeni wg. diagramu Voronoi oraz ich proponowane rozszerzenia do wersji fraktalnych i wykorzystujcych rne metryki.

4.1. Funkcja teksturujca jako zoenie funkcji bazowychFunkcja teksturujca wyznacza pewne atrybuty cieniowanej powierzchni. Jako wejcie otrzymuje parametry kontekstu wejciowego, a obliczone atrybuty umieszcza w kontekcie wyjciowym. W przypadku biblioteki TexLib jest ona zbiorem tzw. funkcji bazowych tworzcych pewien algorytm cieniujcy. Mona wic powiedzie, e system generacji tekstur opisany w tej pracy umoliwia tworzenie wzorw za pomoc skadania pewnych funkcji bazowych. Funkcje bazowe mog implementowa algorytmy o rnym poziomie zoonoci, od prostych funkcji czsto uywanych w grafice komputerowej, jak sin(x), fmod(a, x), po bardziej skomplikowane funkcje szumu Perlina i inne wielowymiarowe (posiadajce wiksz liczb parametrw) i majce wiele wyj (parametrw wyjciowych). Funkcja bazowa jest okrelona pewnymi parametrami wejciowymi oraz produktami w postaci wyj. Kade z wej oraz wyj funkcji bazowej posiada swj identyfikator, typ oraz warto domyln. Na przykad, specyfikacja funkcji Checker jest przedstawiona w Tabela 4-1. Dalej, w opisach konkretnych algorytmw, specyfikacja suy prezentacji podstawowych waciwoci danej funkcji i moe by wykorzystywana jako szybkie przypomnienie efektw dziaania i sposobu jej wykorzystania.Checker

Funkcja przypisujca punktowi P jeden z dwch podanych kolorw. Tworzy wzr trjwymiarowej szachownicy.

identyfikator parametruP scale white black color

typ Point Vector Color Color Color

warto domylna (0, 0, 0)

opis

WEJCIA punkt w przestrzeni, dla ktrego obliczy kolor skala wzoru (wartoci > 1 powoduj zmniejszenie wzoru, (1, 1, 1) 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

float color level

Float Color Int

Jednowymiarowa warto szumu Trjwymiarowa warto szumu, bdca wprzdnymi punktu rodka najbliszej komrki. Poziom zagbienia (aktualna warstwa)

Tabela 4-8 Specyfikacja funkcji bazowej FractalNoiseWorley

4.4. Automatyzacja poszukiwania uytecznych wzorw proceduralnychZe wzgldu na rnorodno dostpnych algorytmw oraz ich kombinacji, trudno jest zdecydowa, ktry z nich bdzie dawa najlepsze efekty w interesujcej nas dziedzinie. Z tego powodu zastosowano kilka metod przyspieszajcych proces powstawania tekstury proceduralnej.

4.4.1. Losowe parametryNa podstawie pokazanych przykadw mona odnie wraenie, e opisane algorytmy produkuj jedynie wzory mniej lub bardziej abstrakcyjne, nie majce wiele wsplnego z tymi spotykanymi w naturze. Rzeczywicie, wikszo uzyskiwanych wzorw nie przypomina niczego spotykanego w rzeczywistoci. Jest tak, poniewa ilustracje przedstawiane w poprzednim punkcie zostay w wikszoci wygenerowane pautomatycznie, tzn. wikszo parametrw rcznie zbudowanego drzewa cieniowania zostaa dobrana losowo. Nietrudno jednak w zbiorze tak stworzonych obrazw i drzew cieniowania wybra te, ktre, po kilku dalszych poprawkach, bd mogy suy do symulacji realnych zjawisk. W rzeczywistoci, najwiksza ilo ciekawych symulacji odkrytych w trakcie bada, powstaa dziki tej metodzie. Zostaa ona take wykorzystana do pocztkowej eksploracji moliwoci algorytmw. System do budowy drzew cieniowania wykorzystany do bada udostpnia proste metody, dziki ktrym mona generowa dowoln ilo obrazw, dobierajc wczeniej dla interesujcych nas parametrw zakresy, z ktrych bd losowane ich wartoci. Kada z wartoci z wybranego zakresu posiada takie samo prawdopodobiestwo wybrania.

4.4.2. Przeszukiwanie domeny parametrwPo wstpnym zapoznaniu si z moliwociami, jakie daje konkretny algorytm, bd cae drzewo cieniowania (np. za pomoc metody dobierania losowych parametrw) wybieramy te przypadki, ktre s najbardziej zblione do wzoru, ktry chcemy symulowa. Dalszy dobr parametrw pozostawiamy odpowiednio zawonemu zakresowi losowych parametrw, stosujc iteracyjnie metod parametrw losowych, bd przeszukujemy ten zakres systematycznie. Opisywany system posiada mechanizm przeszukiwania pewnej ustalonej domeny parametrw. Po ustaleniu przedziaw oraz rozdzielczoci poszukiwania, system generuje kolejne obrazy. Jest to sposb szczeglnie przydatny wtedy, gdy staramy si lepiej zrozumie wpyw jakiego wybranego parametru lub kilku parametrw na efekt kocowy. Sposb dziaania tego mechanizmu jest oczywisty dla 1 parametru. Niech bdzie nim A i niech bdzie dany przedzia przeszukiwania [0..1] z rozdzielczoci 0.1. W rezultacie dostaniemy 11 obrazw, w ktrych parametr A bdzie kolejno przyjmowa wartoci 0.0, 0.1, 0.2, ... 1.0. Dla 2 i wikszej iloci parametrw o zakresach [p1, k1], [p2, k2], ..., [pn, kn] i rozdzielczoci r dostaniemy ((k1-p1)*(k2-p2)* .. *(kn-pn))/r obrazw, gdzie rozpatrzone zostan wszystkie kombinacje parametrw. Przykadowo, majc dane nastpujce parametry i ich zakresy: A[0..1], B[0..1], C[0..1] oraz rozdzielczo r = 1, dostaniemy nastpujcych 8 obrazw:1:A=0, B=0, C=0 2:A=0, B=0, C=1 3:A=0, B=1, C=0 4:A=0, B=1, C=1 .. 8:A=1, B=1, C=1

49

5. Biblioteka do tworzenia tekstur proceduralnych TexLibW tym rozdziale opisana zostaa architektura, sposb dziaania oraz wybrane aspekty implementacji biblioteki TexLib stworzonej i wykorzystywanej w trakcie bada nad teksturami proceduralnymi.

5.1. ArchitekturaZarwno 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

Diagram 5-1 Architektura biblioteki TexLib (moduy funkcjonalne)

5.1.1. InterfejsBiblioteka 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.2. Moduy funkcjonalne systemu renderujcegoFunkcje cieniujce maj dostp do informacji zwizanych z aktualnym kontekstem cieniowania, ktry jest niezbdny dla ewaluacji odpowiednich parametrw powierzchni przez bibliotek. Aplikacja musi wic, za pomoc odpowiednich funkcji interfejsu, przekaza swj aktualny kontekst cieniowania. Dokadny przebieg procesu cieniowania zosta przedstawiony w punkcie 5.3

5.1.3. BibliotekaZ 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.

5.1.4. Interfejs graficznyNa Diagram 5-1 zosta umieszczony jeszcze jeden modu funkcjonalny interfejs graficzny, ktry nie wchodzi w skad biblioteki TexLib, ale zosta na potrzeby tej pracy zaimplementowany jako oddzielna aplikacja. Aplikacja ta, opisana w rozdziale 6, umoliwia wygodn budow drzew cieniowania za pomoc standardowego graficznego interfejsu uytkownika. Aplikacja wykorzystuje TexLib za pomoc innego interfejsu ni systemy renderujce (aczkolwiek jest zintegrowana z systemem do renderingu LADS, ktry z kolei wykorzystuje opisany interfejs do wizualizacji budowanych drzew cieniowania)

5.2. Implementacja - diagram klas5.2.1. Diagramy klasBiblioteka zostaa zaimplementowana C++ z wykorzystaniem technik obiektowych udostpnianych przez jzyk programowani. Podejcie obiektowe dao moliwo zaprojektowania atwej do rozbudowania architektury. Diagramy 5.2, 5.3, 5.4 oraz 5.5 przedstawiaj schematy klas biblioteki.

51

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

5.2.2. Opisy najwaniejszych klasPoniej znajduj si opisy najwaniejszych klas przedstawionych na diagramach ()

Klasa CAbstractValue (abstrakcyjna)Klasa opisujca abstrakcyjn warto parametrw wejciowych i wyjciowych wzorw. Po niej dziedzicz klasy wartoci konkretnych typw (Int, Float, Color, Point, Vector, Sample). Najwaniejsze funkcjonalnoci tej klasy to: Referencja do waciciela. Kada warto posiada swojego waciciela (wskanik m_pOwner), ktrym jest parametr wyjciowy wzoru (patrz: klasa CLinkOut). Przechowywanie znacznika poprawnoci wartoci. Dziki temu obiekty wykorzystujce wartoci typw pochodnych CAbstractValue mog stwierdzi, czy odczytywana warto jest poprawna, czy te naley wymusi jej odwieenie przez waciciela. Obsuga serializacji. Kada warto umie zapisa si i odczyta z podanego strumienia. Zliczanie statystyk. Kada klasa pochodna od CAbstractValue przecia operator przypisania, dziki czemu mona jego implementacje wykorzysta do zliczania statystyk w czasie renderingu. W tym celu zostaa te wprowadzona funkcja Initialise(), ktra inicjalizuje wewntrzne liczniki statystyk (dla kadej klasy pochodnej CAbstractValue s to inne parametry). Funkcja Initialise() jest wywoywana dla kadej wartoci przed rozpoczciem renderingu (w czasie inicjalizacji drzewa cieniowania) Tworzenie wartoci losowych. Kada warto moe przybiera wartoci losowe. Wartoci te s ustalane w funkcji Initialise(), jeli zgoszono tak potrzeb. Ma to sens tylko wtedy, jeli obiekt wartoci nie ma waciciela (czyli jeli aden obiekt nie zmodyfikuje wylosowanej wartoci)

Klasa CPattern (abstrakcyjna)CPattern opisuje wzr, czyli funkcj cieniujc. Kada funkcja cieniujca musi implementowa kilka funkcji, ktre umoliwiaj midzy innymi ewaluacj odpowiednich parametrw, inicjacj itd. Tabela 5-1 zawiera opis tych funkcji. Funkcja cieniujca opisana przez CPattern zawiera pewn liczb parametrw wejciowych i wyjciowych. S one opisane odpowiednio przez klasy CLinkIn oraz CLinkOut. Klasy te przechowuj dane o parametrach takie, jak nazwa, warto domylna (tylko dla parametrw wejciowych) oraz aktualna, konieczno ewaluacji wartoci itp.

Nazwa funkcjiInitialise()

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 CPatternFactory (abstrakcyjna)Klasa pochodna CPatternFactory jest klas pomocnicz dla kadej klasy pochodnej CPattern i suy tworzeniu nowych obiektw danego wzoru (patrz te: opis klasy CManager). Przechowuje take nazw wzoru.

Klasa CManagerImplementuje 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 CShadeTreeKlasa 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

5.3. Procesu renderingu z wykorzystaniem interfejsu biblioteki TexLibOglny schemat dziaania systemu renderujcego zosta przedstawiony w punkcie 2.1. Przebieg fazy cieniowania z punktu widzenia systemu renderujcego z uwzgldnieniem wykorzystania TexLib wyglda jak na Diagram 5-6.

Przygotowanie kontekstu cieniowania dla prbki

Obliczenie koloru, przesunicia oraz przezroczystoci wiata To i inne skadowe bez modelu owietlenia Zastosowanie modelu owietlenia

Przeksztacenia dodatkowe (jasno, kontrast, gamma)

Diagram 5-6 Faza cieniowania z uwzgldnieniem biblioteki TexLib

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 ni