"W pigułce" Modelowanie, UV, Shaders
Rzadko kiedy możemy nauczyć się czegoś w 5min a przynajmniej większość z nas ma z tym problem, wiec jednym sposobem by coś umieć jest trening. Moja nauczycielka języka polskiego zawsze mawiała, że nie można nauczyć sie języka polskiego bo on ciągle się zmienia można go jedynie znać. Te mądrość można zastosować praktycznie do wszystkiego co nie jest stale i ciągle się rozwija jak na przykład programy do grafiki 3D.
Lektora obowiązkowa, która przybliży wam proces tworzenia materiałów to książka Pete Draper'a “Deconstructing the Elements with 3ds max 6"
Modelowanie - Siatka
Modelowanie brył 3D w każdym programie odbywa się podobnie i polega na tworzeniu płaszczyzn (face) łącząc ze sobą wierzchołki (vertext). W większości przypadków modelowanie zaczynamy od tworzenia najpierw bryły prymitywnej a następnie dzieląc ja tworzymy dodatkowe wierzchołki potrzebne do uzyskania konkretnego obiektu. Jednak czasami zrobienie modelu od podstaw czyli vertex po vertexie jest bardziej opłacalne bo czasami poprawianie czegoś zajmuje więcej czasu niż zrobienie tego od nowa.
Ilustracja 2 przedstawia również podział obiektów z uwzględnieniem ich struktury. Pierwszy obiekt ma siatkę skradającą się jedynie z czworoboków drugi składa się z trójkątów. W modelowaniu przyjmuje się zasadę, że bryły które będą miały przypisywanie jakiekolwiek modyfikatory powinny składać się z czworoboków, natomiast obiekty już finalne czyste siatki mogą mieć dowolna strukturę. Siatki składające się z trójkątów to domena modeli wyświetlanych w silnikach do grafiki w czasie rzeczywistym inaczej w silnikach gier. Bez względu jaką siatkę będziemy widzieli w naszym programie graficznym, on sam interpretuje każdą powierzchnie jako trójkąty, ograniczenie wyświetlania powierzchni do czworoboków lub wieloboków jest wyłącznie zabiegiem estetycznym, który powoduje TYSIACE błędów podczas nauki modelowania. Trójkąty (Face) połączone przez nas ręcznie w czworoboki (Poly) są interpretowane przez modyfikatory lepiej ponieważ pozwala im to na równomierny podział siatki. Wieloboki(N-gony) natomiast są dzielone przez program w dowolny nie kontrolowany przez użytkownika sposób.
N-Gons
Jak widzimy na ilustracji 3 z jednego N-gona możemy uzyskać kilka kombinacji załamania powierzchni dokładnie tyle ile trójkątów możemy stworzyć z danego N-gona. Pozostawianie takich powierzchni w naszej siatce będzie powodowało brak kontroli nad jej finalnym wyglądem oczywiście n-gony przyspieszają modelowanie bo możemy na szybko zamknąć powierzchnie wielobokiem ale pamiętajmy by później sprawdzić całą siatkę i usunąć niepotrzebne powierzchnie. Czasami proces usuwania trójkątów jest najbardziej pracochłonnym w całym procesie tworzenia modelu i czasami ze względu na dobro całości zostawia się nieliczne trójkąty ale musimy wiedzieć gdzie one są i czy nie będą widoczne.
EYE - Reference
Ćwiczenie będzie polegało na samodzielnym wykonaniu modelu gałki ocznej która pomimo prostoty wykonania obejmuje wszystkie potrzebne etapy ćwiczenia. Szukamy odpowiednich referencji a następnie po przestudiowaniu budowy gałki ocznej poprawiamy znalezione rysunki tak, byśmy mogli odzwierciedlić jak najwięcej detali. Po tych przygotowaniach przystępujemy do modelowania.
Eye ball - Modeling
Pierwszym etapem będzie wczytanie naszego diagramu oka jako tło naszego bocznego widoku przestrzeni 3D. Robimy to w trybie Ortho jak i cale modelowanie ponieważ widok typu perspektywa jest przydatny jedynie podczas ustawiania renderu i podczas rzeźbienia. Zniekształcenia obrazu powstające przez perspektywę spowalniają prace jak również uniemożliwiając wczytanie referencji.
Tworzymy odpowiedni obiekt prymitywny który będzie najłatwiejszy do przerobienia by stworzyć nasze oko czyli obiekt typu sphere będzie idealny. Jeżeli zachodzi potrzeba obracamy nasz obiekt tak by jego siatka odpowiadała naszym potrzeba co w bardziej skomplikowanych modelach nazywa się to topologią, a następnie skalujemy i ustawiamy zgodnie z diagramem. Żeby model nie zasłaniał nam diagramu możemy uczynić siatkę transparentną lub jak czasami się to nazywa X-Ray.
Mając odpowiednia podstawę (Base Model) zaczynamy modelowanie detalu czyli dzielenie siatki i przesuwanie wierzchołków (verteksow) tak byśmy mogli zarysować i nadać naszemu obiektowi wypukłość soczewki. Również możemy usunąć trójkąty z naszej siatki by pozbyć się artefaktów powstających poprzez zagęszczenie siatki.
Iris - Modeling
Kolejnym obiektem który zrobimy będzie źrenica. Tym razem zastosujemy inną metodę modelowania która zakłada stworzenie całego obiektu od początku bez wykorzystywania brył prymitywnych. Za pomocą krzywej lub też za pomocą vertexów robimy obrys który następnie za pomocą modyfikatora obrócimy tworząc obiekt 3D. Aby lepiej zrozumieć tą metodę modelowania musicie poczytać o bryłach obrotowych, "Bryly obrotowe" i o tym jak je zastosować w wybranym programie. Jeżeli jakiś program jeszcze nie ma takiej funkcji to zawsze możemy ręcznie extrudować stworzoną krawędź (Edge) i obracając ją w koło zadanego punktu obrotu (Pivot Point) uzyskamy podobny efekt.
Tyle teorii teraz powrócimy do naszego modelu, w widoku z boku tworzymy krzywa zgodnie z obrysem na diagramie, następnie musimy ustawić środek obrotu (Pivot Point) naszej bryły tak by obracający się kształt zarysował interesujący nas obiekt. Pivot Point w równych programach ustawia się różnie w programie Maya wystarczy wcisnąć 'Ins', w 3ds Max znaleźć przycisk 'Affect Pivot Point Only' natomiast w programie Blender wybierając opcje Origin możemy ustawić Pivot Point w zależność od wybranej opcji. Gdy mamy już nasz kształt i ustawiliśmy środek obrotu w odpowiednim miejscu możemy zastosować algorytm który dokona operacji na bryłach obrotowych. Każdy program zainicjuje menu z którego będziemy musieli wybrać Os obrotu ilość segmentów jak również zakres w stopniach bo nie zawsze może nas interesować 360 stopni.
Lens
Ostatnim elementem oka jest soczewka i to jak ona będzie wykonana zależy wyłącznie od Was możecie użyć boxa, sphery wymodelować jak źrenice za pomocą obrotu obrysu sposób naprawdę dowolny. Można nawet zastosować zasadę że skoro jej nie widać bo jest czarna matowa i pochłania światło to wystarczy ustawić Plane nadać mu czarny kolor i załatwione. Nie wiem dlaczego ale ludzkie oko to taki doskonały i niedoskonały organ jednocześnie. W sieci można znaleźć tysiące przykładów na to że ludzkie oko się myli i można je łatwo oszukać ale jeżeli chodzi o grafikę 3D spróbujcie czegoś nie wymodelować a klient na 100% to zauważy. Poza sprawą klienta jest jeszcze rigg który będziemy może chcieli zrobić i wtedy wymodelowana soczewka i jej powierzchnia po której będzie się ślizgała zwężająca źrenica będzie dużym ułatwieniem. Wybór zależy od was ja ocenie rezultat.
Po zakończeniu modelowania i gdy mamy już nasze trzy elementy gałki ocznej możemy przejść do nakładania tekstur.
UV - Make a 3D model flat
Mapowanie UV jest to proces przypisywania wartować UV ( XY było już zajęte serio ! ) w układzie współrzędnych tekstury do każdego punktu siatki (vertex). Gdybym napisał że to tylko ma taką dziwną definicje i jest to naprawdę bardzo proste skłamał bym w małym stopniu bo UV uzależnione jest jak można sobie wyobrazić od stopnia zagęszczenia siatki i jej skomplikowania. Takie obiekty jak bryły prymitywne można rozłożyć klikając jeden przycisk który wywoła odpowiedni algorytm , UV cube, UV Sphere, UV Planear i nasz obiekt będzie miał przypisane współrzędne UV. Przy bardziej skomplikowanych bryłach używamy UV Unwrap i tutaj bardzo pomocne są seam czyli szwy które mówią algorytmowi że tu może daną siatkę rozłożyć. Szwy najlepiej ustawiać wzorując się na rzeczywistość ponieważ problemy z tymi szwami zaczynają się podczas malowania tekstur i podczas tworzenia map normal i oświetlenia.
UV Eye ball
Pierwszą zasadą UV jest nakładanie tekstury kontrolnej UV Grid, dzięki temu zabiegowi będziemy widzieli czy nasza docelowa tekstura będzie się rozciągała, i jeżeli nie da się tego uniknąć to przynajmniej będziemy mieli kontrolę gdzie te odkształcenia zostawić i jak duże one będą. Oczywiście zawsze staramy się by szachownica przedstawiała kwadratowe, pola każde rozciągniecie kwadratu to później zniekształcona tekstura. Moja siatka oka jest nieco inna od standardowej ponieważ oko jest zrobione z idealnej kuli 3D czyli kostki! (Cube, Box itp) w ten sposób nie posiada żadnego trójkąta.
W trybie selekcji Face (tryb edycji) zaznaczamy wszystkie powierzchnie a następnie z menu wybieramy algorytm "UV Sphere" lub podobny, w różnych programach jest różne nazewnictwo ale łatwo rozpoznać ten algorytm który potrzebujemy. Następnie możemy ustawić orientacje dla naszego algorytmu UV by siatka odpowiednio się ułożyła (góra to soczewka, dół dno oka). Gdy algorytm UV stworzy nam poprawną siatkę i gdy będzie ona odpowiednio ułożona możemy wczytać kontrolną teksturę szachownicy by usunąć powstałe podczas procesu UV naciągnięcia siatki. Poprawnie ułożoną i ze-skalowaną siatkę możemy zapisać jako obraz który później obrobimy w programie do edycji 2D. To najważniejsza tekstura czyli czarno biała maska oddzielająca białą część oka od źrenicy. Sprawdzamy na naszym modelu ile tekstury musimy zamalować w oparciu o zapisaną siatkę UV a następnie zapisujemy obraz jako np; eye_mask.jpg. Mając pierwszą teksturę możemy ją wczytać na nasz obiekt i powinna pasować jak na ilustracji 9 jeżeli pomalowaliśmy za mało lub za dużo zawsze możemy wrócić do programu 2D i poprawić.
UV Iris
Jeżeli chodzi o źrenice to mapowanie UV będzie bardzo proste ale zupełnie inne od poprzedniego. Żernica to obiekt z góry zdefiniowany i posiadający już daną teksturę wiec musimy wykonać czynność w odwrotnej kolejności niż poprzednio. Wczytujemy naszą teksturę źrenicy i teraz będziemy manipulowani tak siatką UV by pasowała ona do tekstury. Ponieważ interesuje nas jedynie przód źrenicy możemy wykorzystać algorytm UV (zadeptujący bryłę) układający punkty siatki względem punktu patrzenia na dany obiekt, przeważnie nazywa się on UV Flat, UV Planear, UV From View itp. Najprościej zobrazować to sobie jak projektor który rzuca obraz na przedmiot co oczywiste daje pożądane rezultaty jedynie na powierzchniach prostopadłych do projektora im bardziej powierzchnia odchyla się tym większe zniekształcenie.
Shaders vs. Materials
Shader jeżeli chodzi o obiekty to algorytm/skrypt definiujący fizyczne właściwość powierzchni do której zostanie przypisany. Odpowiada on za to czy dany obiekt będzie przeźroczysty, czy będzie odbijał otoczenie, w jaki sposób będzie rozpraszał światło, czy będzie emitował światło, czy będzie się tylko żarzył(Glow) i wiele podobnych właściwość.
Materiał to wybrany z biblioteki Shader zmieniony przez użytkownika wartowniami matematycznymi lub poprzez wczytanie obrazów które definiują daną wartość udostępnioną przez Shader. Jeżeli wybierzemy Shader posiadający przezroczystość będziemy mogli ustawić cały obiekt widoczny lub nie jak również wartość pomiędzy. Jednak możemy w tą wartość wczytać czarno biały obrazek (nazywany maską) który zdeterminuje że to co czarne ma mieć przezroczystość 100% czyli 0 koloru a to co białe przezroczystość 0 czyli 100% koloru.
Reasumując Shader może być materiałem co udowodnimy robiąc soczewkę oka która nie posiada żadnej tekstury jedynie czarny kolor, ale Materiał nie istnieje bez Shadera. Wiec jeżeli ktoś spyta was jaki to materiał musicie zdefiniować że np: Shader Diffuse to Lambert, Shader Specular to Blin z dwoma teksturami koloru i alfy. Oczywiście jeżeli ktoś spyta o materiał soczewki w oku to odpowiedz będzie prosta, czarny matowy i grafik będzie już wiedział co wybrać by to uzyskać.
Enviroment
Ponieważ gałka oczna jest mokra zachowuje sie jak woda => woda zachowuje się jak lustro => lustro w którym nie ma odbić jest niewidoczne więc zanim zaczniemy zabawę z materiałem musimy stworzyć otoczenie. Najszybszym sposobem jest mapa HDRI lub Enviroment Cube wczytana jako środowisko naszej sceny 3D, przeważnie w programach do 3D jest zakładka renderowanie a w niej opisana jako Enviroment lub World zakładka odpowiadająca za wirtualne środowisko.
Eye ball Material
Ok mamy otoczenie zacznijmy wiec od gałki. Na gałkę oczna musimy zastosować shader posiadający właściwości RAYTRACE! czyli taki który nie tylko posiada przeźroczystość ale również jest "świadomy" promieni światła które przez niego przenikają i dzięki temu może załamywać światło (obiekty wewnątrz). Shadery tego typu mają dodatkowy parametr IOR (Index of Refraction) którym ustawiamy wartość załamania światła. Również ustawiamy mu odpowiednie właściwości morror i specular lub glosness w zależności od shadera. Z maski którą namalowaliśmy podczas mapowania UV stworzymy wszystkie potrzebne tekstury.
!Pamiętajmy że po wczytaniu tekstury w kanał shadera musimy zdefiniować koordynaty tego obrazka i ustawić je na UV ponieważ w niektórych programach standardowo są ustawione koordynaty generowane przez program!.
- Pierwszą teksturą oczywiście będzie sama maska odpowiadająca za przezroczystość naszej gałki, wczytujemy ją do kanału alpha (transparent, opacity) naszego shadera.
- Drugą teksturę zrobimy malując zyły i zaczerwienienia na białym polu naszej maski które odpowiada za białko naszego oka i tą teksturę wczytujemy jako kolor naszego shadera.
- Trzecia tekstura i ostatnia to mapa nierówność która pozwoli z subtelny sposób zaburzyć te idealne odbicia w naszej gałce. Do zrobienia tekstury Normal służą dodatki do programów graficznych dzięki którym przerabiamy teksturę koloru, jeżeli nie posiadamy takiego dodatku zapisujemy teksturę koloru jako czarno białą i wtedy wczytujemy ją zamiast do kanału normal do kanału Bump.
Na ilustracji 11 widać że w niektórych programach żeby zastosować te trzy tekstury musimy zrobić więcej niż po prostu kliknąć i wczytać obrazek. Jest to tz. system nodowy występujący w większość programów i dzisiaj każdy program 3D daje nam możliwość wyboru jak będziemy tworzyć materiały, czy wybierzemy z listy jeden shader do której wystarczy wczytać obrazy czy też chcemy mieć pełną kontrole i sami będziemy decydowali ile różny shaderów będzie składało się na nasz materiał. To właśnie jest przewagą systemów nodowych że nie jesteśmy ograniczeni jednym shaderem tylko za pomocą naszych tekstur możemy ze sobą mieszać różne shadery i uzyskiwać przeróżne materiały.
Iris Lens Material
Z tymi materiałami pójdzie naprawdę szybko bo oba są matowe wiec potrzebujemy standardowy Shader w którym ustawimy jedynie kolor. Jeżeli chodzi o źrenice to jako kolor posłuży nam tekstura do której ustawialiśmy nasze mapowanie UV. Wczytujemy obrazek źrenicy do kanału koloru naszego shadera, i następnie ustawiamy go na matowy i aby nie był brany przy obliczaniu cieni, w przeciwnym wypadku ponieważ znajduje sie wewnątrz innego obiektu podczas renderowania będzie ciemny lub czarny po prostu niewidoczny.
Materiał na soczewkę jest to standardowy shader o czarnym kolorze ustawiony na matowy czyli taki który ma kolor specular czarny i nie widzimy na nim żadnego światła.
Teraz pozostaje pobawić się ustawieniami shaderów, poprawić tekstury i ustawić odpowiednie oświetlenie i mamy gotową scenę.
Print This Post