Ćwiczenie 1. Art Of Illusion. Klepsydra Na podstawie przykładu Ricka van der Maidena 1. Wprowadzenie. W tym ćwiczeniu przedstawiamy, krok po kroku, etapy tworzenia średnio złożonej formy, jaką jest zegar piaskowy klepsydra. Ćwiczenie oczywiście nie obejmuje wszystkich, a nawet większości, funkcji i możliwości programu Art of Illusion. Jednak obejmuje, w sposób cząstkowy, wszystkie podstawowe elementy modelowania: tworzenie i modyfikowanie kształtów obiektów, określenie materiałów na powierzchni obiektów przy tym nadawanie barw i nakładanie tekstur, zdefiniowanie źródeł światła. W ćwiczeniu pomijamy animację, odkładając ją na później. W rezultacie powinniśmy otrzymać coś w rodzaju: Ponieważ jest to pierwsze ćwiczenie, rozpoczniemy je od krótkiego opisu menu programu. 2. Rzut oka na Art of Illusion W tym miejscu przedstawiamy podstawowe możliwości programu. Po lewej stronie okna widać w dwóch kolumach szereg ikon. Wybierając jedną z nich (w tym celu klikamy lewym przyciskiem myszy), określamy narzędzie (tool) z jakim chcemy pracować. Wybrane narzędzie jest krótko opisane na dole okna modelowania. Ikony są następujące: move object rotate object
resize object create box create cylinder create polygon create camera move view move/rotate/resize object create sphere create spline mesh create approximated/interpolated curve create lightsource rotate view Okno modelowania zawiera 4 widoki. Trzy pierwsze z nich są standardowo rzutami modelu 3D: z przodu (Front), z lewej strony (Left), z góry (Top), a czwarty jest widokiem z kamery (Camera1). Wszystkie widoki można zmieniać z rozwijanego menu. Klikając Ctrl-B na wybranym widoku, rozszerzamy je do całego okna (powtórne Ctrl-B przywraca układ poprzedni) Ponadto na ekranie, po prawej stronie znajduje się okno zawierające listę obiektów tworzących scenę oraz ich własności. Na początku, standardowo, są tylko dwa obiekty: obserwator (Camera 1) oraz źródło światła (Light 1). W miarę budowania sceny lista się rozszerza. U dołu ekranu znajduje się podłużne okno animacji zajmiemy się nim w kolejnych ćwiczeniach. Układ okien można zmieniać, można je ukrywać, przemieszczać, itp., jednak niezbyt wygodnie. 3. Początki W celu ułatwienia sobie rozmieszczania obiektów na scenie warto narysować na niej siatkę: wybierz Scene->Grids z menu ustaw Spacing na 0.5 (odstępy siatki co 0.5) ustaw Snap to Subdivisions na 10 (przyciągaj do odl. 0.1 między liniami siatki) zaznacz Show grid i Snap to grid kliknij OK., oczywiście. Modelowanie zaczynamy od narysowania dolnej i górnej podstawy zegara piaskowego: wybierz 'create box' tool narysuj pudełko szerokie na 1.5 jednostek i wysokie na 0.1 jednostek w widoku z przodu; Na ekranie zajmie to trzy kratki siatki na szerokość i jedną dziesiątą kratki na wysokość (przy takim ustawieniu siatki jest to najmniejsza wysokość ustawiana automatycznie).
wybierz 'resize object' tool przeskaluj pudełko w widoku z góry do kwadratu 1.5 na 1.5 jednostek. wybierz 'move object' tool przesuń pudełko tak, żeby było wycentrowane w widoku z góry przesuń je w widoku z przodu w dół, tak żeby się znalazło tuż pod drugą linią poziomą poniżej środka sprawdź współrzędne pudełka w opcji Object->Object-Layout z menu. W następnym kroku kopiujemy dolną podstawę do górnej: wybierz pierwsze pudełko, Cube 1 z listy po lewej stronie wybierz Edit->Copy z menu wybierz Edit->Paste z menu przesuń kopię do góry, tak żeby podstawa pudełka miała wartość y=1. Można to osiągnąć przez: o 'move object' tool. Przytrzymaj shift żeby przesuwać tylko wzdłuż osi o Object->Layout Object z menu. Wycentruj na y=1.05. o Object->Transform Object z menu. Przesuń 2 jednostki do góry. o Object->Align Objects z menu. Dopasuj dolną krawędź (y-axis) do 0. Teraz dwie podstawy ułożone symetrycznie wokół środka. Obie nazywają się ciągle tak samo Cube1. Wygodnie jest zmienić ich nazwy przez wybór Object->Rename Object, np na Top i Bottom. W podobny sposób możemy utworzyć z cylindrów 4 słupki łaczące obie podstawy. Należy użyć 'create cylinder' tool, ustawiając parametry: position: X = 0.6, Y = 0, Z = 0.6 size: X = 0.1, Y = 2, Z = 0.1 i skopiować trzykrotnie. Obiekty nie będą się zasłaniać jeśli wybierzemy Scene->Display Mode->Wireframe z menu. Wtedy będą przedstawiane w postaci szkieletowej (za pomocą samych krawędzi).
Mamy już obudowę klepsydry. Możemy użyć 'move viewpoint' tool oraz 'rotate viewpoint' tool do zmiany widoku Camera 1 i oglądać model z różnych punktów widzenia. Ostateczny rezultat może wyglądać następująco: 4. Modelowanie bańki szklanej Najbardziej złożonym elementem tego projektu jest bańka szklana. Utworzymy ją za pomocą narzędzia Lathe tool (lathe oznacza tokarkę, a ogólniej tworzenie obiektów obrotowych). W skrócie: używamy narzędzia create approximated curve do utworzenia krzywej, a następnie za pomocą Lathe tool obracamy ją wokół osi pionowej. Ułatwimy sobie rysowanie krzywej jeśli zmienimy siatkę na gęstszą np. z parametrami spacing 0.2 i 2 subdivisions. Następnie ograniczamy się tylko do jednego widoku (Scene- >One View z menu lub Ctrl-B). Wygodnie jest powiększyć rysunek (np. do 200%) i zbudować krzywą na podstawie punktów od 1 do 9 pokazanych na rysunku niżej. Dwukrotne kliknięcie w punkcie 9 zakończy krzywą.
Przebieg krzywej aproksymowanej nie wynika może intuicyjnie z rozłożenia punktów, ale pozwala nam na łatwiejsze uzyskanie pożądanego kształtu niż krzywa interpolowana. W szczególności krzywa przebiega pionowo przez punkt 5 ponieważ punkty 4 i 6 tworzą razem z 5 pionową linię i są od niego równo oddalone. Jako oś obrotu szklanej bańki klepsydry użyjemy prostej przebiegającej przez końce krzywej. Aby utworzyć powierzchnię obrotową, najpierw wybieramy krzywą (klikamy lewym przyciskiem myszy w jej okolicy), a następnie wybieramy z menu Tool->Lathe. W okinku dialogowym Lathe wybieramy jako oś obrotu Line through endpoints. (jak poniżej).
Bryła obrotowa utworzona z z takiej krzywej jak nasza automatycznie ma swój środek w punkcie (0,0,0), co nam odpowiada. Sama krzywa jest już więcej niepotrzebna możemy ją po wybraniu usunąć za pomocą del lub opcji Edit->Clear. Ułożenie na scenie Tworzenie kształtu jest już zakończone. Możemy rozpocząć renderowanie, jednak wcześniej trzeba ustalić położenie kamery i źródła światła. Zaczynamy od określenia położenia i orientacji kamery. Można to łatwo zrobić wybierając widok z kamery z menu w lewym górnym rogu nad oknem widoku sceny. Po wybraniu z menu tool opcji Move view tool lub Rotate view tool możemy dowolnie przesuwać lub obracać scenę przed kamerą. Pokrętłem myszy można scenę przybliżać i oodalać. Alternatywnie, gdy nie ma pokrętła można się posłużyć klawiszem Ctrl i prawym przyciskiem myszy. Można też bezpośrednio wybrać kamerę i pozycjonować ją jak każdy inny obiekt za pomocą move object tool oraz Layout object. rotate object tool lub też wykorzystując okienko dialogowe Możemy teraz przystąpić do oświetlenia sceny. Od początku w naszej scenie jest obecne źródło światła oznaczone jako Light 1. Powinno on być tak położone, żeby oświetlać pozostałe obiekty od strony, z której patrzymy. Light 1 najpewniej nie jest poprawnie umieszczone. Ponieważ może być spozycjonowane gdzieś daleko od obiektów I trudne do odnalezienia, być może wygodnie będzie je skasować i utworzyć nowe. Art of Illusion obsługuje trzy typy źródeł światła: punktowe (point lights), kierunkowe (directional lights) i reflektory (spot lights). Wybieramy najprostsze punktowe. W kolejnych krokach przedstawiamy jak poprawnie oświetlić scene.
Wybierz dla nowego źródła światła położenie w pobliżu kamery, a przynajmniej po tej samej stronie obiektu co kamera. Być może trzeba zmniejszyć scenę, żeby zobaczyć jednocześnie klepsydrę i kamerę. Kliknij create lightsource icon, a następnie kliknij w miejscu, gdzie chcesz umieścić żródło światła. Prawdopodobnie trzeba będzie je przesunąć tak jak inne obiekty. Wybierz z menu Object->Edit Object. Należy zmienić niektóre parametry. Niezłe wartości przedstawione są na rysunku poniżej, ale można (i warto) poeksperymentować z innymi, własnymi wartościami parametrów światła. Domyślna wartość Intensity może się okazać za wysoka i scena będzie wyglądać jak prześwietlona. Dlatego przydatne może być zmniejszenie tej wartości np. do 0,8. Decay Rate, czyli współczynnik osłabienia światła wraz z odległością od źródła, pozostawiamy ustawiony na zero. Nie jest to fizycznie poprawne, ale ułatwi nam oświetlenie sceny. Następnie wybierzmy z menu Scene->Render Scene. Nie patrząc na ustawienia, wciśnijmy OK i wykonajmy renderowanie. Powinniśmy otrzymać coś w tym stylu:
Scena nie wygląda zbyt atrakcyjnie. Poprawi się wyraźnie po nałożeniu tekstur. Tekstury i materiały (Textures and Materials) Drewno (Wood) W kolejnym kroku naszym celem jest wygenerowanie tekstury, która będzie wyglądać jak drewno. Tekstury imitujące drewno, kamień, chmury, często tworzy się za pomocą procedury, a nie wczytuje z pliku tak jest I w tym przypadku. Wybieramy w menu Scene->Textures, przycisk New, a następnie wybieramy typ tekstury procedural 3D i nadajemy jej nazwę Wood (jak poniżej). Tekstura proceduralna 3D określa nam kolor, gładkość, sposób odbijania światła I inne parametry powierzchni wyliczane jako pewna funkcja punktów z przestrzeni 3D. Tekstura pokazuje nam wygląd powierzchni obiektu, na który jest nałożona. Jeśli obiekt jest półprzezroczysty i zaglądamy do jego wnętrza, powinniśmy użyć opcji material do określenia jego charakterystyki. Art of Illusion posiada wygodny editor graficzny do tworzenia tekstur proceduralnych. Znajdujemy w nim 6 podstawowych komponentów z których możemy składać teksturę: Values definiują stały kolor lub inną wartość, która może być użyta jako wejście dla kolejnych wartości. Functions generują wartości skalarne. Color functions generują na wyjściu kolory. Transforms transformują współrzędne na inne. Patterns produkują wartości skalarne jako pewne funkcje współrzędnych 3D. Mogą rzeczywiście służyć do ustalania określonych wzorów tekstury. Po utworzeniu nowej tekstury wchodzimy do dużego okna edycyjnego. Umieszczamy w nim komponenty, które specyfikują teksturę. Po prawej stronie mamy bloczki, o nazwach takich jak diffuse, specular, tansparent, etc. które charakteryzują różne własności tekstury. Dla stworzenia tekstury drewna wybierzmy następujące składniki:
Insert->Patterns->Wood. Zapewni ma charakterystyczne słoje drewna. Insert->Color Fucntions->Custom pozwoli wybrać kolor drewna. Proszę zwrócić uwagę na połączenie bloczków Podwójne kliknięcie w ikonę koloru porowadzi nas do okna dialogowego w którym możemy określić kolor i zakres jasności:
Na koniec, dwukrotnie klikając w ikonkę Wood możemy zagęścić lub rozrzedzić słoje, wygładzić je lub zmierzwić. Najlepiej poeksperymentować. Efekt na podglądzie może być podobny do poniższego: Wynik nie jest zbyt realistyczny, ale możliwości AoI w zakresie tekstur są znacznie większe. Dalsze efekty opisane są w the Art-of-Illusion manual. Następnie należy wybrać obiekty, które nas interesują, wybrać z menu Object->Set Texture wybrać teksturę Wood i przez wciśnięcie O.K.przypisać teksturę do obiektów. Wciśnięcie w dialogu tekstury przycisku Edit Mapping pozwala na przesuwanie obracanie i skalowanie tekstury na wybranym obiekcie. Nam wystarczy chyba jedynie obrót:
A na słupkach dodatkowo skalowanie: Efekt powinien być mniej więcej taki:
Szkło (Glass) Bańka klepsydry powinna oczywiście wyglądać na szklaną. Czyli powinna być przezroczysta dla światła, a jednocześnie powinna odbijać światło połyskliwie od powierzchni. Światło przechodzące przez bańkę powinno być załamane i nieco osłabione, może też zmienić kolor. Zdolność i sposób odbijania (Reflection) i przezroczystość (transparency) są właściwościami tekstury. Załamanie (Refraction) i osłabienie są właściwościami materiałowymi. Materiały mogą być przypisane tylko obiektom posiadającym powierzchnię (krzywym nie). Wszystkie kształty typu lathe są takimi obiektami. Kolejno utworzymy teksturę szkła, a następnie materiał szkła. W okienku dialogowym tekstury tworzymy nową teksturę jednolitą uniform texture I nadajemy jej nazwę Glass lub Szklo. Ta tekstura powinna zapewnić przezroczystą powierzchnię (przez którą widać to co w środku) i umożliwić odbicie światła z odblaskami (specular reflection). Na poniższym obrazku można zobaczyć przykładowe ustawienia nowej tekstury. Przezroczystość jest sterowana dwoma parametrami: kolorem Transparent Color I stopniem Transparency. Składowe RGB Transparent Color określają ile z każdej składowej barwnej pozostaje gdy światło przecina powierzchnię. Jest to właściwie filtr barwny. Domyślny kolor biały (White), oznacza, że przez powierzchnię przechodzi każde światło. Kolor czarny (Black) nie przepuszcza niczego. Stopień przezroczystości (pojedyncza liczba) określa ułamek światła jaki jest przepuszczany. Na przykład 0.7 oznacza oczywiście, że 70% światła przechodzi przez powierzchnię. To z kolei znaczy, że składowa przezroczystości determinuje kolor powierzchni w 70%. Pozostałe 30% koloru będzie określone w 100% przez odbicie. Dlatego wartość Specular na rysunku poniżej jest ustawiona na 1.0. Shininess określa jasność odblasków. W większości przypadków specularity i shininess ustawiamy na tę samą wartość.
Nowy materiał tworzymy wybierając w tym samym okienku dialogowym Materials, i przyciskając New Material, Uniform. Można go nazwać tak samo jak teksturę. Parametry są przedstawione na rysunku poniżej. Na kolor materiału wpływają trzy parametry: Emissive color i Transparent Color i Scattering Color. Emissive color jest po prostu kolorem emitowanym samoistnie przez materiał (np. świecące neony, płomień) Bańka szklana klepsydry niczego nie emituje, więc kolor ustawiony jest czarny. Transparent color wpływa na światło przechodzące przez obiekt, a także na cień rzucany przez niego. Parametr Transparency specyfikuje jaka część składowych RGB przechodzi przez obiekt. Scattering color jest kolorem światła, które rozprasza się wewnątrz obiektu. Z kolei wielkość światła pochłaniana przez obiekt jest określona przez wartość Density. Zerowa gęstość nie powoduje żadnego tłumienia. Dla szkła można zaproponować zielony lub niebieskawy Scattering color
Końcowe renderowanie Domyślne czarne tło sceny nie jest korzystne dla pokazywania przezroczystego szkła. Możemy poprawić wygląd szkła umieszczając tło jasne. Należy wybrać z menu Scene->Environment. W okienku dialogowym pole Environment jest domyślnie ustawione na Solid Color. Wystarczy więc jedynie zmienić kolor tła na biały lub inny jasny. Renderowanie końcowe wywołujemy z menu Scene -> Render Scene w trybie Raytracer (śledzenie promieni). Ten tryb renderowania ma wiele parametrów i warto wypróbować różne z nich. Niektóre ustawienia mogą poprawić jakość rysunku, choć kosztem czasu renderowania. W przykładzie poniżej parametr Antialiasing ustawiony na Maximum spowoduje optyczne wygładzenie krawędzi. Soft Shadows wprowadzi cienie rozmyte na krawędziach, bardziej realistyczne gdy mamy do czynienia z bliskim źródłem światła. Obie opcje
wymagają użycia więcej niż jednego promienia na piksel. Wyniki z wielu promieni są uśredniane i generalnie wygładzają obraz sceny. Użyte w przykładzie wartości min/max równe 4 i 16 zwykle dają dobre rezultaty przy umiarkowanym narzucie czasowym. Większe wartości przydają się np. przy dużych I rozmytych miękkich cieniach. Poniżej wybrane ustawienia i rezultat renderowania.