WEBESTEEM | BATTLE AREA | FORUM
art & design
webesteem | magazine | nr 1 | grafika
art & design
art & design

W tej chwili większość
programów
 3D
ma możliwość symulacji rzeczywistego oświetlenia za pomocą liczenia ruchów i odbić fotonów.

Grafika

OSZUKIWANIE W 3D
Czyli jak ułatwić sobie życie pokazując coś czego nie ma

Przyznam szczerze, że kiedy zostałem poproszony o napisanie artykułu bardzo się zdziwiłem, ale jednocześnie zapaliłem do pomysłu. Co prawda nie miałem dotąd do czynienia z pisaniem tego typu rzeczy, ale... mam nadzieję, że czytelnicy wybaczą mi ewentualne błędy stylistyczne czy jakość artykułu. Obiecuję, że się poprawię w przyszłości.


Cały artykuł porusza kilka aspektów grafiki 3D, które będę chciał w przyszłości rozwinąć.

Z założenia nie jest to zbiór tutoriali. Chcę pokazać jakich sztuczek się używa w 3D... natomiast w jaki sposób coś wykonać – zapraszam do eksperymentowania.

Kiedy rozpoczynałem moją przygodę z 3D myślałem, że wszystko co widzimy na ekranie np. telewizora jest dokładnie tym co wyszło prosto z programu 3D.... po niedługim czasie okazało się, że się dość poważnie pomyliłem...

Upraszczanie geometrii

Pierwszą sztuczką jaką udało mi się odkryć było to, że niekoniecznie trzeba wszystko dokładnie modelować. Jak wiadomo czym bardziej jest skomplikowana siatka obiektów – tym bardziej się wydłuża czas renderingu. Z drugiej strony czy naprawdę trzeba modelować to czego nie widzimy, albo jest zbyt daleko? Szkoda czasu....

Na pierwszy ogień idzie usunięcie rzeczy niewidocznych dla widza.. Po co modelować np. wnętrza budynków, albo wogóle ich tylne ściany?

Problemu nie ma praktycznie przy statycznej grafice.... wtedy przy ustaleniu kadru od razu wiadomo czego się pozbyć. Problemy zaczynają się przy animacjach, bądź tworzeniu na potrzeby gier.

W przypadku animacji potrzebne jest dokładne rozrysowanie sobie sceny i wstępne zanimowanie wszystkiego zanim zacznie się modelować szczegóły. Dlaczego? Bo dzięki temu od razu widzimy (pozostając przy przykładach domów) co przez jakie okno widać, które ściany wymodelować dokładnie itp.

Wielu czytelnikom od razu nasunie się pytanie po co tyle zabawy? Przecież to nie kłopot wymodelować trochę więcej a później mieć swobodę przy animowaniu. Powód jest prosty... czas. I nie chodzi tu o czas potrzebny na modelowanie. Przypuśćmy, ze jedna klatka renderuje się 30 min. W przypadku 5 sekundowej (1sek = 25 klatek) animacji daje to ponad 60 godzin czekania na efekt... a jeśli gdzieś popełniło się błąd? Stosując metodę podaną przeze mnie można oszczędzić większość tego czasu.

Drugim sposobem przyśpieszającym liczenie animacji jest upraszczanie modeli wraz ze wzrostem odległości.. Po co szczegółowy model który widzieliśmy na początku animacji na pierwszym planie a pod koniec na trzecim przez cały czas musi być taki dokładny? Im dalej się obiekt znajduje – tym mniej szczegółów rozróżniamy (to już jest sprawa niedoskonałości oka ludzkiego – ale na temat biologii wole się nie wypowiadać ;) . Pozwala nam to upraszczać siatkę, oraz ukrywać dodatkowe elementy. Coś co w pierwszej sekundzie było pięknie wymodelowanym budynkiem – pod koniec może być zwykłym prostopadłościanem. Właśnie oszczędziliśmy kolejne kilka (naście) godzin renderingu..

W przypadku gier jest jeszcze trudniej. Tutaj trzeba wykazać się sporą ilością kombinacji. Jako, że pomysłowości uzdolnienia graczy są nieprzewidywalne trzeba zrobić wszystko co nawet przy małym prawdopodobieństwie może zobaczyć gracz. I tu jest problem. Jako, że większość gier jest renderowana w czasie rzeczywistym – trzeba maksymalnie odchudzić siatkę... a co za tym idzie trudno robić szczegółowe modele. Z pomocą przychodzą tekstury.

Sztuczki z teksturami

Umiejętność dobrego teksturowania to 80% sukcesu w 3D (jak mawia mój dobry znajomy). I jest w tym dużo racji.... Nawet najlepszy model ze źle dobraną lub wykonaną teksturą wygląda fatalnie. Natomiast bardzo prosty model z dopracowaną teksturką może sprawiać rewelacyjne wrażenie obiektu dużo bardziej skomplikowanego. Ale czym jest to spowodowane?

Wielu rozpoczynających zabawę z 3D uważa, że jak zrobi model, to nie ma znaczenia jaką teksturę nałoży. Kończy się to zazwyczaj nałożeniem czegoś defaultowego dołączonego do programu . Niestety takie tekstury zazwyczaj są bardzo mało realistyczne.

Dobrze wykonana tekstura może nie tylko symulować istnienie geometrii, której nie ma (używając odpowiednich map nierówności – tzw. bump), ale dzięki dobremu zmapowaniu na obiekcie – można ukryć łączenia, bądź niedoskonałości modelu.

Ale nie tylko to można osiągnąć dzięki teksturom. Chcąc dalej pójść w kierunku przyśpieszenia renderingu – wiele rzeczy można zasymulować.

Zastanówmy się – co jest bardzo pracochłonne do liczenia dla komputera?

Wszelkie ciecze i cokolwiek co załamuje i przepuszcza częściowo światło.

Owszem – na pierwszym planie widać będzie, że jest to oszustwo ... ale dalej? Czy naprawdę musimy liczyć wszystkie odbicia na wilgotnych skałach, czy w oknach domów? Raczej nie – przecież i tak nikt nie będzie się temu przyglądał. Trzeba po prostu przygotować teksturę symulującą pożądany przez nas efekt i dołączyć jako osobną warstwę do tekstury obiektu. Później chwila modyfikacji gizmem UWV żeby dopasować nową warstwę i .... możemy się cieszyć efektem osiągniętym o wiele mniejszym nakładem czasu.

Kompozycja

Kolejnym sposobem na ułatwienie sobie życia i jednocześnie na poprawienie efektu finalnego jest kompozycja. Nie chodzi mi kompozycję w dosłownym tego słowa znaczeniu, a raczej na składanie finalnego obrazu z części. W przypadku grafiki statycznej problemu generalnie nie ma . Nawet osoba z niezbyt dużym doświadczeniem w pracy z Photoshopem potrafi z kilku warstw stworzyć spójną całość. Na czym to polega? Proste – możemy np. wymodelować jabłko i umieścić je na sfotografowanym stole. Jeśli starannie się je przygotowało (dbałość o oświetlenie) – chwila zabawy levelsami i nasyceniem kolorów spowoduje, że będzie wyglądać jakby naprawdę tam leżało.

Jednak w przypadku animacji jest już większy kłopot. Przecież nikt nie będzie się bawił w dopasowywanie obiektów na każdej klatce animacji. Do tego służą programy kompozycyjne.

Pionierem w tej dziedzinie byłą firma Adobe i jej produkt AfterEffect. Zresztą do dnia dzisiejszego jest swego rodzaju standardem na rynku. W między czasie pojawiły się programy konkurencyjne (np. Shake), oraz – co może bardziej zaciekawić użytkowników – oprogramowanie ściśle współpracujące z konkretnymi pakietami 3D. Przykładem tego jest np. Combustion współpracujący z 3DS. Max, czy Aura współpracująca z LightWavem. Na czym to polega? Np. przy renderowaniu w Maxie można zaznaczyć, że ma przeliczyć projekt na warstwach i stworzyć plik projektu do Combustion. Jakie zyski z tego mamy? Na warstwach, które "wypluł" z siebie Max mamy osobno obiekty, cienie, światła, mapy odbić itp. Po Wrzuceniu tego do Combustion możemy bez ponownego renderingu kontrolować wszystkie parametry. Jako, że możemy tam również dołączyć klip Video – mamy możliwość idealnego połączenia grafiki 3D z materiałem filmowym (na podobnej zasadzie jak się to robi na jednym obrazku w Photoshopie). Jednocześnie oprogramowanie to umożliwia nam dołączenie efektów specjalnych, napisów czy dźwięków – bez tak długiego oczekiwania na rendering jak zrobienie tego tylko w pakiecie 3D.

Zresztą żeby to potwierdzić nie trzeba szukać daleko – wystarczy włączyć telewizor. W większości reklam właśnie w ten sposób są dodawane opakowania – z tego powodu, że po prostu wyrenderowane wyglądają "czyściej". Nie mówię już o efektach specjalnych w kasowych filmach lecących na ekranach kin – technika jest dokładnie ta sama.

Dodatkowym elementem kompozycji jest "podmalowywanie" wyrenderowanych obrazów. Swoje początki ta technika miała już w trakcie kręcenia pierwszych filmów. Tylko że wtedy malowano np. tło za aktorami. W tej chwili podmalowywanie służy przygotowaniu rzeczy trudnych (bądź po prostu pracochłonnych) do zasymulowania w środowisku 3D. Często w ten sposób robi się np. chmury, czy wodę. Warunek – nie może to być element dominujący w obrazie (albo musisz być genialnym malarzem). Technika jest stara jak świat – pędzel (piórko od tabletu) w rękę i.... malujemy wszystko od początku.. Tak przygotowane chmurki odpowiednio maskujemy i dodajemy do projektu w programie kompozycyjnym... później jeszcze chwila zabawy w dopasowanie kolorystyki i natężenia do reszty obrazu i... gotowe.

Symulowanie GI

Ostatnią sztuczką o której chciałbym napisać jest symulacja Global Ilumination. W tej chwili większość programów 3D ma możliwość symulacji rzeczywistego oświetlenia za pomocą liczenia ruchów i odbić fotonów. Jak od razu można się domyśleć – jest to straszliwie pracochłonne dla komputera i wymaga strasznie długiego liczenia. Tak jak dla zobaczenia jednaj klatki można jeszcze poczekać dajmy na to półtorej godziny – tak w przypadku animacji traci to całkowicie sens. Ale po upowszechnieniu się obrazków wykonanych przy pomocy GI – ludzie zaczęli się zastanawiać jak osiągnąć podobny efekt bez potrzeby angażowania w to całej mocy obliczeniowej. Z pomocą przyszło to, że w programach 3D światło w przeciwieństwie do rzeczywistego – wcale nie musi rzucać cienia.

Jak zrobić prostą symulację GI? Spróbujcie wokół obiektu stworzyć półkulę złożoną z dużej ilości świateł typu omni o bardzo małym natężeniu świecenia (rzędu 2–3%) oraz nie rzucających cienia. Do tego dołóżcie jakieś światło np. typu spot o natężeniu ok. 50% rzucające cień. Przy odrobinie wprawy osiągnięty efekt będzie bardzo przypominał GI, ale czas liczenia skróci się o jakieś 95%. Chyba warto się nad tym zastanowić?...

Powyższy artykuł nie wyczerpał całkowicie tematu. Miał on pokazać tylko, że niekoniecznie najprostsza droga jest tą najlepszą i najmniej pracochłonną. Przy odrobinie kombinowania i eksperymentowania możemy sobie zaoszczędzić wiele czasu, który efektownie można wykorzystać w inny sposób.... Czego Wam i sobie życzę.

W przypadku wątpliwości lub pytań – zapraszam na Forum Webesteem do działu "grafika 3D". W przypadku większego zainteresowania – myślę, że autorzy magazynu nie będą mieli nic przeciwko temu, żeby w następnych artykułach kontynuować temat.

Paweł "Szynol" Szynkiewicz

art & design
webesteem | magazine | nr 1 webesteem magazine is a part of webesteem.pl  |  copyright © 2001-2004 webesteem.pl  
art & design