Czym dla prawdziwego grafika i animatora byłyby wszelkie programy 3D, gdyby dysponowały tylko możliwością modelowania brył i ich prostego obrazowania? Ciekawostką, używaną od czasu do czasu. Jednym z ważniejszych powodów, które zdecydowały o tak znaczącej roli tej formy twórczości komputerowej jest możliwość nadawania bryłom realistycznie wyglądających materiałów, oświetlania ich czymś na kształt rzeczywistych świateł i - oczywiście - wykonywania im "zdjęć".
"Imagine" umożliwia bardzo zaawansowane definiowanie parametrów powierzchni obiektów, nakładanie na nie dowolnej ilości tekstur proceduralnych (matematycznych) i zwykłych bitmap, które mogą tworzyć nie tylko wzory kolorystyczne, ale i symulować przejrzystość, czy nierównomierność powierzchni.
Materiały wykonuje się w Edytorze Detali. Opcja Attributes w menu Functions umożliwia dopracowanie ostatecznego wyglądu obiektów poprzez definiowanie materiałów, zapisywanie ich na dysk, wgrywanie oraz - oczywiście - nakładanie ich na bryły. Aby wywołać Attributes Requester (z klawiatury F7), konieczne jest posiadanie jakiegokolwiek wybranego obiektu.
Czy macie jakieś własne grupy brył, wykonane podczas ćwiczeń z poprzednimi odcinkami kursu? Jeśli nie, zanim zaczniecie czytać dalszą część tego artykułu, przygotujcie sobie przykładowe grupy prostaków z pierwszego odcinka tego kursu. Wspólnie stworzymy dla nich dwa materiały - plastik i szkło. Są to bardzo wartościowe atrybuty, które na pewno nieraz przydadzą się w przyszłości. Wybierzcie w Edytorze Detali jakiś pojedynczy obiekt, który według was może być wykonany z plastiku, a następnie wywołajcie panel atrybutów. Waszym oczom ukaże się ekran podobny do tego na obrazku.
Panel atrybutów wygląda dość niepozornie, ale jego możliwości tworzenia materiałów wyglądających jak prawdziwe są prawie nieograniczone!
Na samej górze Attributes Requester podaje aktualną nazwę danego elementu (Obj Name). "Imagine" automatycznie nadaje domyślną nazwę każdemu nowostworzonemu obiektowi, numerując je w przypadku wystąpienia kilku brył tego samego typu (np. sphere, sphere.1, sphere.2). Jednak wskazane jest samodzielne nazywanie poszczególnych elementów, gdyż znacznie ułatwia to ich ewentualne wyszukiwanie. Zawsze lepiej jest wiedzieć, że to, czego szukamy, to np. lewe oko, a nie sphere.56. Aby to zrobić, należy kliknąć myszką na pasku obok Obj Name, usunąć starą nazwę i wpisać własną, co następnie należy potwierdzić enterem. Nazwy obiektów nadawane w requesterze atrybutów to nie jest to samo, co nazwy plików z obiektami na dysku (bo przecież jeden plik może zawierać większą ilość obiektów połączonych w grupę, a każdy element grupy nazywa się inaczej). Dlatego mogą one być zupełnie odmienne od siebie, choć nie jest to zalecane. Nazwy wewnętrzne "Imagine" zawierają maksymalnie 17 znaków i w miarę możności przynajmniej nazwy obiektów-matek powinny być zbliżone do odpowiadających im nazwom plików na dysku, dzięki czemu unikniemy niepotrzebnych kłopotów przy pracy z większą ilością elementów.
Obok Obj Name znajduje się funkcja Randomize Colors. Nie będzie ona nam na razie potrzebna, ale aby zaspokoić waszą ciekawość wyjaśnię, że zaznaczenie tej opcji i wpisanie w mały requester o nazwie Random Seed, który się pojawi, dowolnej wartości liczbowej spowoduje, że wszystkie ścianki obiektu otrzymają przypadkowe kolory. Randomize Colors nie działa z takimi obiektami, jak Ground, Axis czy idealna kula, bo te nie posiadają ścianek.
Pierwszym atrybutem, który stworzymy, będzie plastik. Jednak zanim to uczynimy, małe wyjaśnienie. W panelu atrybutów znajdują się cztery suwaki. Trzy z nich - Red, Green i Blue - służą do wybierania poszczególnych składowych koloru według modelu barw RGB - czerwonego, zielonego i niebieskiego, dla takich opcji jak: Color, Reflect, Filter i Specular. Czwarty, Value, odpowiedzialny jest za wartości liczbowe w zakresie 0-255 dla takich opcji jak: Dithering, Hardness, Roughness i Shininess. Po lewej stronie każdego z nich znajdują się ponadto okienka umożliwiające precyzyjne ustawienie parametrów poprzez wpisywanie wartości liczbowych.
Posiadaczom wolniejszych maszyn „Imagine” ułatwia życie poprzez możliwość włączenia opcji QuickEdges lub Fastdraw, co znacznie przyspiesza pracę edytorów.
Najpierw wyznaczymy kolor naszego materiału. Po zaznaczeniu "krzyżykiem" guzika Color można za pomocą opisanych powyżej suwaków ustawić kolor powierzchni obiektu. Proponuję, aby był to czerwony. W tym celu przesuwamy do końca w lewo suwaki Green i Blue.
Są różne rodzaje plastików - jedne są matowe, inne połyskliwe i mają właściwości nieco odbijające. Nasz plastik będzie należał do tej drugiej grupy.
Za współczynnik odbicia światła - czyli tworzenie efektów lustrzanych - odpowiedzialna jest funkcja Reflect. Ustawiamy zatem poszczególne suwaki na wartości: 80, 80, 80.
Pomijamy Filter. Kolejna opcja, która nas w tej chwili interesuje, to Specular. Za jej pomocą definiuje się efekt odblasków występujących na obiekcie w momencie, gdy światło pewnej części swojego spektrum jest odbijane od obiektu bez pochłaniania. Podobnie jak i w wypadku trzech powyższych funkcji, tak i Specular reguluje się poprzez zmianę trzech składowych RGB. W tym wypadku będą to wartości: 255, 180 i 157.
Aby obrazki wykonywane techniką ray-trackingu wyglądały ciekawiej, muszą posiadać odpowiednio stworzone materiały, nałożone na obiekty. Przykładowy obrazek wykonany w programie "Imagine".
Musimy teraz określić, w jaki sposób odblaski świetlne mają się rozkładać na powierzchni obiektów. W opcji Hardness przy mniejszych wartościach światło rozkłada się miękko, rozlewa na powierzchni obiektu, przy większych odblaski są mniejsze, ale za to ostrzejsze. I o takie nam właśnie chodzi. Przy pasku Value wpisujemy zatem 255 lub przeciągamy suwak do końca w prawo.
Być może zechcecie, aby niektóre plastikowe elementy były "chropowate". Tu z pomocą przyjdzie opcja Roughness. Czym większa wartość w linii Value, tym bardziej porowaty będzie obiekt po wyrenderowaniu. Funkcja Roughness jest bardzo przydatna w przypadku renderowania pojedynczych obrazków, ale pamiętajcie, że nie powinna być stosowana w animacjach, ponieważ dla każdej klatki porowatość jest generowana losowo. Uzyskany efekt będzie taki, jakby po obiekcie łaziło mnóstwo mrówek!
Brak nam jeszcze jednego parametru, aby materiał, który tworzymy, był stuprocentowym plastikiem - połyskliwość obiektu: Shininess. Tutaj z kolei wpisujemy 100.
Nasz plastik jest gotowy. Nie pozostaje teraz nic innego, jak zapisać na dysku stworzony materiał (do katalogu attribs/plastic pod nazwą czerwony.atr), a następnie obłożyć nim inne obiekty. Częste nadawanie tych samych atrybutów na różne elementy poprzez przepisywanie wartości poszczególnych opcji jest bardzo niewygodne, dlatego niezwykle przydatne okazują się guziki Load i Save w panelu atrybutów - pozwalają na zapisywanie na dysku i ponowne wgrywanie atrybutów wraz ze wszystkimi ustawieniami brushy i tekstur (ale oczywiście bez nazwy obiektu).
"Pokrywając" plastikiem inne elementy grupy obiektów, poeksperymentujcie z ustawianiem różnych kolorów, a także nadajcie niektórym elementom porowatość. Ponadto możecie część obiektów pozostawić wygładzonymi i zaokrąglonymi, a niektórym nadać strukturę ściankową (tak jak na oszlifowanym diamencie) - służy do tego opcja, o której pisałem już w poprzednim odcinku - Phong Shading (cieniowanie Phonga). Dla każdego obiektu jest domyślnie załączona i aby usunąć wygładzanie z bryły, należy opcję Phong wyłączyć.
Panel ustawiania parametrów świateł. W „Imagine’ie” każdy dowolny obiekt może być lampą. W połączeniu z opcją Bright można tworzyć widoczne źródła światła.
Teraz zajmiemy się szkłem. Jest to bardzo przydatny materiał, choć dosyć trudny do uzyskania i wymaga kilku sztuczek, aby sprawiał wrażenie realistycznego. Na szczęście "Imagine" dosyć dobrze sobie z nim radzi. Szkłem można "pokryć", jakieś drobne elementy naszej grupy obiektów. A więc kolor: zwykłe szkło będzie miało wartości 0, 0, 0. Ponieważ jednak chcemy zrobić kolorowe szkło, może to być np. kolor niebieski (0, 0, 240).
W szkle konieczna jest przejrzystość, a więc używamy opcji Filter. Obiekty "Imagine’a" mogą być częściowo lub całkowicie przezroczyste. Poprzez tą funkcję można ustawić współczynniki przejrzystości dla poszczególnych składowych RGB. Im wyższa wartość, tym więcej światła danego koloru przenika przez bryłę. Aby obiekt stał się całkowicie przezroczysty, należy ustawić 255, 255, 255. Dobra przezroczystość wymaga dosyć wysokich wartości, przy małych efekt nie jest zbyt dobrze widoczny. Najlepsze rezultaty uzyskuje się poprzez stosowanie wartości z zakresu 180-255. Dla naszego szkła będzie to przejrzystość następująca: 0, 0, 240.
Kolejne opcje: Reflect - 50, 50, 55, Specular - 255, 255, 255, Hardness - 255.
Wykonując szkło nie można zapomnieć o współczynniku załamania światła przechodzącego przez obiekt - Index of Refraction. Obiekty z zastosowanym współczynnikiem zniekształcają leżący za nimi obraz, a bryły wykonane na wzór soczewek wraz z odpowiednimi atrybutami naprawdę powiększają! Im większy współczynnik, tym większe ugięcie światła. Wartość 1,0 oznacza brak załamania i tak jest w powietrzu. Natomiast 2,9 to niemalże nierzeczywiste załamanie światła. Dla szkła współczynnik ten wynosi 1,5. Index of Refraction stosuje się tylko w przypadku korzystania z opcji przezroczystości obiektów, inaczej nie uzyska się zamierzonego efektu.
Rodzaj szkła, które właśnie skończyliśmy przygotowywać, jest jednym z wielu możliwych do uzyskania. Nadajcie teraz ten atrybut innym małym elementom i wykonajcie Quick Render. Jeśli szkło będzie zbyt mało widoczne, zmieńcie kolor tła w ustawieniach programu (menu Project/Preferences, strona Misc, linia BGRD - background color).
Na obiekty można nakładać m.in. zwykłe obrazki w formatach Targa, TIFF i IFF ILBM. Nie powinno być zatem kłopotów z umieszczeniem w "wirtualnym świecie Imagine’a" uprzednio zeskanowanej swojej podobizny, czy też własnoręcznego "wiekopomnego dzieła" narysowanego w dowolnym programie graficznym. Widoczny na rysunku requester pozwala na wszechstronne określenie parametrów nałożenia na obiekt takiego obrazka.
Pozostały jeszcze inne funkcje w panelu atrybutów, których dotąd nie wyjaśniłem:
Każda tekstura proceduralna posiada właściwy sobie szereg parametrów, które można dowolnie zmieniać. Niemożliwością byłoby zatem opisanie ich wszystkich ze szczegółami, dlatego każdy musi poeksperymentować na własną rękę. Pewne podpowiedzi i porady otrzymacie w kolejnym odcinku kursu.
Kilka dodatkowych uwag dotyczących tworzenia materiałów: Bardzo częstym błędem użytkowników "Imagine’a" jest ustawianie zbyt dużych wartości w opcji Reflect. Tworząc lustra czy materiały chromopodobne należy pamiętać, aby zbytnio nie przesadzić, ponieważ może to spowodować, że dany element będzie odbijał zbyt dużo światła i stanie się przez to niemal niewidzialny! Zamiast obiektu, zobaczycie idealnie odbity w nim obraz "świata", a nie o to przecież chodzi. Jest to szczególnie widoczne w przypadku płaskich luster. Należy pamiętać, że efekt lustrzanych odbić na obiektach jest możliwy tylko w trybie trace.
Jeśli nie planujecie renderować obrazków w trybie True Color, można skorzystać z funkcji Dithering w panelu atrybutów. Jest ona przydatna przy generowaniu obrazków w mniejszej ilości kolorów niż posiadają standardowe 24 bity, ponieważ symuluje za pomocą mieszania z sobą poszczególnych kolorów większą ilość barw obiektu niż jest dostępnych w danym momencie. Ja jednak nie polecam używania tej opcji i raczej należy generować obrazki w 16 milionach kolorów, a następnie za pomocą jakiegoś innego programu przekonwertować na np. 256, z jednoczesnym użyciem ditheringu w programie graficznym. Ta opcja jest w głównej mierze trochę już niepotrzebną pozostałością z przeszłości programu, zresztą w wersji 4.0 już nieobecną.
Użycie opcji Filter z jednoczesnym zastosowaniem połyskliwości (Shininess) powoduje, że obiekt traci jakąkolwiek przejrzystość! Zwracam na to uwagę, ponieważ jest to bardzo częsty powód zdziwień typu: ustawiłem przejrzystość na maksimum, a tu nic nie widać przez ten obiekt; to pewnie jakiś błąd w programie! Jeżeli więc chcemy, aby obiekt zachował przezroczystość, Shininess musi koniecznie posiadać wartość zerową; nie małą, ale zerową! Po takiej dawce wiedzy o tworzeniu atrybutów i po pewnej dozie własnych eksperymentów nie powinniście mieć już większych problemów z kreowaniem nowych materiałów do swoich obiektów. A jeśli takowe nadal będą... zawsze do czasu, kiedy sami tego nie opanujecie, możecie korzystać z gotowych atrybutów, które można znaleźć w Internecie. W następnym odcinku zapoznamy się bliżej ze sposobami nakładania brushy, definiowaniem świateł i teksturami matematycznymi oferowanymi przez program "Imagine". Stosowanie ich znacznie podniesie realizm renderowanych scen i ułatwi tworzenie efektów, o jakich Wam się dotąd nie śniło. A na razie - przyjemnej zabawy z grafiką 3D! |
|
Kurs Imagine by Sławomir Folkman (1996, 2009) is licensed under a Creative Commons Uznanie autorstwa-Użycie niekomercyjne 2.5 Polska License.