SPIS TREŚCI:
Grafika 3d jest kojarzona z wytłaczaniem komponentów i programami typu: 3dsMax, Maya, Blender… Istnieją jednak inne metody modelowania oraz mniej popularne narzędzia. Jedną z takich metod jest modelowanie proceduralne, a reprezentatywnym programem SideFX Houdini.
Modelowanie proceduralne
O modelowaniu proceduralnym wspomniałem krótko w artykule: Jaki program 3d wybrać do nauki modelowania. Tutaj chciałbym rozwinąć ten temat. Być może modelowanie proceduralne jest dla Ciebie, a nawet jeszcze o tym nie wiesz.
W tradycyjnym modelowaniu większość czasu spędzamy edytując obiekt 3d bezpośrednio w widoku sceny. W przypadku modelowania proceduralnego istnieje szansa, że ani razu nie dotkniemy modelu. Takie modelowanie opiera się głównie na pracy z parametrami i węzłami.
Po stronie interfejsu mamy z reguły do czynienia z trzema widokami: widok sceny, edytor parametrów i edytor węzłów. Kolejne edytory to inny sposób prezentacji danych, które w tego typu programach są głównym budulcem.
Drzewko węzłów
W programie Houdini procedurą jest wszystko: od geometrii, poprzez kamerę, a kończąc na importowaniu i eksportowaniu plików – dosłownie wszystko. Podstawowym elementem modelowania proceduralnego jest węzeł atrybutów – czyli kontener z opcjami, funkcjami, krzywymi, kolorami i innymi parametrami. Węzły możemy ze sobą łączyć, budując złożone drzewo instrukcji, w którym parametry przepływają z góry na dół.
Weźmy za przykład najprostszy obiekt – kula. W programie Houdini to jeden węzeł z kilkunastoma parametrami, które definiują jej właściwości i kształt. Jeśli chcemy zaimportować kulę z innego programu, to możemy umieścić na szczycie naszego drzewa węzeł odpowiedzialny za importowanie pliku z siatką – procedurą (a właściwie węzłem) może być wszystko, nawet „import pliku”.
Jeśli zechcemy w przyszłości podmienić importowany obiekt na inny, to wystarczy kilka kliknięć. Dzięki temu zachowujemy całą naszą dotychczasową pracę – podmieniamy jedynie obiekt źródłowy, zaś struktura pozostaje niezmieniona. Zobaczmy to na przykładzie.
Prosta procedura
Na zrzucie ekranowym z programu Houdini widzimy scenę, oraz edytor węzłów i parametrów. Drzewo parametrów zbudowane jest z trzech węzłów:
- font1 – węzeł odpowiedzialny za generowanie siatki geometrycznej na bazie wybranego fontu i naszego wyrazu/tekstu.
- transform1 – węzeł odpowiedzialny za przekształcenia i manipulację.
- polyextrude1 – węzeł odpowiedzialny za wytłoczenie siatki.
Przygotowanie tego przykładu zajęło dosłownie 5 sekund – nie licząc sekund na wpisanie słowa „Procedura”. Aby zmienić jakikolwiek parametr tej sceny, wystarczy wybrać odpowiedni węzeł i wprowadzić modyfikacje. Po wprowadzeniu zmiany atrybuty są ponownie propagowane w dół i możemy obserwować rezultat:
Powyżej mamy dokładnie ten sam przykład z tą różnicą, że powróciłem do węzła font1 i zmieniłem font z Bitter, na Bickham Script. W ten sposób nie dotykając obiektu 3d mogłem dwoma kliknięciami zmodyfikować rezultat odwołując się do pierwsze węzła.
Modelowanie niedestruktywne
Jak łatwo się domyśleć, tego typu koncepcja modelowania powoduje, że możemy pracować w sposób niedestruktywny. Podobnie jak w przypadku wykorzystania warstw dopasowania w programie Adobe Photoshop.
Nawet jeśli będziemy zmuszeni do tego, aby edytować komponenty na obiekcie „ręcznie”, to program utworzy węzeł z naszymi „czynnościami”. Dzięki temu będziemy mogli powrócić do węzła, zmodyfikować wartości, lub całkowicie go usunąć bez szkody dla naszej pracy. A to dopiero wierzchołek góry lodowej.
Dla kogo jest modelowanie proceduralne?
Wg mnie programy proceduralne są doskonałą odpowiedzią dla osób, dla których proces twórczy, to rozwiązywanie problemów. Houdini ma po prostu dwa oblicza. Z jednej strony za jego pomocą możliwe jest tworzenie fantastycznych i abstrakcyjnych obrazów – prac, których nie powstydziłby się artysta koncepcyjny pracujący z Photoshopem lub Painterem.
Drugie oblicze to sposób generowania tych obrazów. Program wymaga od nas myślenia analitycznego oraz odrobinę myślenia matematycznego. Praca na wyczucie rzadko przynosi sensowne rezultaty, ale jeśli już wiemy co robimy, to możemy być zaskoczeni niezamierzonymi efektami. Takie rezultaty mogą przyćmić nawet to, co planowaliśmy stworzyć – urok procedury.
Nieszczęsna matematyka
No cóż… im dalej w las, tym matematyka bardziej pomaga. W programach proceduralnych matematyka to:
- obchodzenie i rozwiązywanie problemów,
- zwiększanie zasięgu naszych działań,
- losowość,
- kierowanie parametrów w wybrane miejsca,
- tworzenie zależności i warunków,
- a najprościej rzecz ujmując – ma nam pomóc zaoszczędzić czas.
Matematyka oczywiście nie jest od nas wymagana. Jeśli znamy węzły i ich parametry, to spokojnie możemy sobie bez niej poradzić. Po prostu, czasami będziemy mieli pod górkę – więcej czasu spędzimy na rozwiązywaniu problemów, ale wystarczy już algebra, aby kontrolować wybrane parametry i tworzyć pomiędzy nimi zależności (jeden parametr wpływa na drugi). Jeśli dołożymy do tego funkcje trygonometryczne, to nasz arsenał jest bardziej niż podstawowy.
…a może być jeszcze gorzej – programowanie
Skrypty to kolejny zaawansowany poziom kontroli parametrów. W programie możemy posługiwać się wyrażeniami, które wpisujemy bezpośrednio w polach z atrybutami, zamiast 1,2,3… Jeśli to dla nas za mało, to możemy wykorzystać dłuższe fragmenty kodu, przykładowo pętle warunkujące.
Dla osób ze smykałką do języków programowania, został oddany wewnętrzny język VEX (zbliżony do C/C++). Również osoby znające Pythona poczują się jak ryba w wodzie. Możliwości pracy z programem jest bardzo dużo. Chciałbym jednak tutaj podkreślić: bez matematyki i języków programowania także możemy twórczo wykorzystać programy proceduralne.
Poniżej znajdziesz prezentacje możliwości programu Houdini w wykonaniu grafików studia Guerrilla Games podczas pracy nad grą Horizon Zero Dawn. Warto zwrócić uwagę na to, że podczas prezentacji żaden element sceny nie był kontrolowany bezpośrednio w widoku 3d. Wszystko odbywa się w przestrzeni drzewa proceduralnego.
A co z modelowaniem?
Modelowanie proceduralne idealnie nadaje się do budowy twardych obiektów – maszyny, mechanizmy i przedmioty. Bardzo dobrze sprawdza się także podczas tworzenia abstrakcyjnych form, których podstawę stanowi symulacja. Przygotowaną symulację można skonwertować do siatki typu polygon, wyrenderować i przenieść do postprodukcji.
Gorzej wygląda sytuacja z modelowaniem organiki – ludzie, zwierzęta i potwory. Takie obiekty wymagają od nas specjalnej troski – ciągłego przemieszczania komponentów. Zabiegi edycyjne przekładają się oczywiście na liczbę węzłów, które są tylko nośnikiem przesunięć komponentów – nic twórczego z nich nie wynika. Dlatego trudniejsze obiekty można przygotować w innej aplikacji i zaimportować do programu.
Draśnięcie powierzchni
Możliwości programów proceduralnych są ogromne. Nie ograniczają się tylko do tworzenia końcowych scen 3d. Za ich pomocą możemy także przygotować obiekty wraz z elementami kontrolnymi. Przykładowo stolik, który za pomocą suwaków zmienimy w krzesło lub inny mebel. Taki obiekt można wykorzystać w innych projektach, na dodatek w różnych wariacjach.
Modelowanie proceduralne to niewątpliwie „inny świat” dla wieloletnich użytkowników 3ds Max lub Maya. W dużym uproszczeniu można powiedzieć, że jest to świat trudniejszy dla humanistów i artystów, a łatwiejszy dla osób technicznych. W życiu jednak bywa różnie i najlepiej samemu sprawdzić, czy coś nam podpasuje, czy też nie.