Modelowanie
w Maya - NURBS
Niniejszy artykuł opisuje
podstawowe narzędzia do modelowania powierzchni typu NURBS w programie
Maya. Całą pracę wykonałem za pomocą trzeciej wersji programu, jednak
użytkownicy starszych wersji nie powinni mieć problemów z przerobieniem
ćwiczenia.
Pracę nad projektem
zaczynamy oczywiście od koncepcji. Potem, w miarę własnych możliwości,
przygotowujemy wstępną wizualizację, np. zdjęcie lub szkic (rys.
1).
Często przy wykonywaniu
bardziej skomplikowanych modeli dobrze jest wspomóc się płaszczyzną
obrazu (Image Plane), czyli rzutem obiektu (najcześciej z przodu
i boku) widocznym w oknach kamery. Aby stworzyć taki rzut, należy
uruchomić Window -> Multilister. W zakładce Cameras dwukrotnym
kliknięciem myszy na odpowiedniej kamerze otwieramy okno Attribute
Editor. Tam w rozwinięciu Environment znajduje się przycisk Create
Image Plane. Po kliknięciu na nim pojawią się opcje dotyczące płaszczyzny
obrazu. Klikamy na Browse przy Image Name i wybieramy odpowiednią
bitmapę.
Na potrzeby artykułu wymyśliłem postać ufoludka, nie jest to na
tyle skomplikowany obiekt bym potrzebował dodatkowych materiałów
referencyjnych w postaci płaszczyzny obrazu. Dzięki temu nie jestem
również zmuszony do nadmiernej dbałości o szczegóły i podobieństwo,
tak jak w przypadku modelowania realistycznych obiektów organicznych.
Jednak z pewnością ufok wystarczy, by wytłumaczyć, o co chodzi.
Rozpoczynamy modelowanie.
Po uruchomieniu Maya przechodzimy do trybu Modeling (klawisz [F3]).
Zaczniemy od stworzenia głowy bohatera poprzez odpowiednią modyfikację
wierzchołków kuli komendą Create -> NURBS Primitives -> Sphere.
By zaoszczędzić sobie ewentualnych kłopotów przy przyklejaniu oczu
do głównej bryły głowy, kulę umieszczamy tak, by bieguny były na
osi Y lub Z (w zależności od ustawień: wysokość. u mnie jest to
oś Z), a pierwszy izoparm (najgrubszy) znajdował się z tyłu (rys.
2).
Klawiszami [1], [2]
i [3] kontrolujemy szczegółowość wyświetlania zaznaczonego obiektu,
nie ma to wpływu na faktyczną geometrię obiektu, a jedynie na komfort
pracy.
Zaczynamy zmieniać położenia punktów kontrolnych CV (przytrzymujemy
prawy przycisk myszy [PPM] na wcześniej zaznaczonej kuli i wybieramy
Control Vertex). Przesuwając [w] punkty, skalując [r] i obracając
[e] ich grupy, tworzymy bardzo ogólną bryłę głowy ufoka (rys. 3).
Na pewno przyda się
szybka manipulacja kamerą (persp): trzymając wciśnięty klawisz [ALT]
+ [LPM] obracamy obraz, [ALT] + [ŚPM] - przesuwamy go, a kombinacją
[ALT] + [LPM] + [ŚPM] przybliżamy lub oddalamy.
Klikając [PPM] na kuli i wchodząc w tryb Isoparm (południki i równoleżniki),
jesteśmy w stanie dodać ich kilka. Aby to zrobić, należy kliknąć
na którymś z równoleżników (u mnie Isoparm V) i nie puszczając,
przesunąć mysz w górę lub dół, po czym puścić. Wtedy zostanie na
żółto podświetlone miejsce, gdzie po wydaniu komendy Edit Surfaces
-> Insert Isoparms powstanie nowy Isoparm V. Analogicznie można
dodać południki Isoparm U. Posługując się klawiszem [SHIFT], można
wyznaczyć więcej niż jeden nowy Isoparm U czy Isoparm V. Jednak
nie jednocześnie U i V. Pamiętajmy, aby oszczędnie korzystać z tego
dobrodziejstwa, ponieważ późniejsza kontrola wierzchołków CV może
okazać się niemożliwa. Po dodaniu odpowiedniej ilości izoparm możemy
dalej edytować nasz obiekt w trybie Control Vertex.
Tą metodą można by było wykonać cały obiekt. Jest to jednak trudne
ze względu na komplikacje wynikające z dużej ilości punktów kontrolnych,
w których bardzo ciężko jest się potem zorientować. Dlatego też
skorzystamy z możliwości sklejania ze sobą obiektów i tworzenia
gładkich połączeń między nimi, najpierw dokleimy oczy, a z powstałego
połączenia wykonamy powieki.
Rozpoczynamy od stworzenia
kul, czyli gałek ocznych, do nich będziemy dopasowywać powieki.
Jedną kulę możemy odbić lustrzanie, korzystając ze skali, w celu
stworzenia drugiej. Aby to zrobić, musimy zduplikować (Edit ->
Duplicate[]) sferę, skalując ją w osi X o -1 (rys. 4).
Wcześniej jednak trzeba
przesunąć odpowiednio Pivot (punkt skalowania). Mając włączone narzędzie
do skalowania [r], klawiszem [Insert] włączamy tryb edycji Pivot,
a trzymając [x] (przyciąganie do siatki), przesuwamy Pivot w odpowiednie
miejsce.
Teraz narysujemy krzywą, do której dokleimy oczy. Mając zaznaczoną
bryłę głowy, włączamy Modify -> Make Live. Obiekt stanie się
zieloną siatką. Rysujemy odpowiednią krzywą na głowie, korzystając
z narzędzia Create -> CV Curve Tool. Pamiętajmy, aby krzywa była
zamknięta (można skorzystać z polecenia Edit Curves -> Open/Close
Curves (rys. 5).
Jest jeszcze inny sposób
na stworzenie takiej krzywej na obiekcie: można skorzystać z polecenia
Project Curve On Surface. W tym celu tworzymy koło Create ->
Nurbs Primitives -> Circle, które umieszczamy w odpowiednim położeniu
do projekcji. Zaznaczamy koło i bryłę głowy. Aktywujemy widok z
przodu, po czym korzystamy z Edit Surfaces -> Project Curve On
Surface (rys. 6).
Krzywą powstałą z tyłu
głowy i koło możemy usunąć.
Ograniczając detale obiektów [1] i przechodząc w tryb wyświetlania
Wireframe [4] ([5] tryb Shade, [6] Shade + tekstury, [7] uwzględnia
światła), włączamy narzędzie Edit Surface -> Surface Fillet ->
Fillet Blend Tool, wybieramy jedną z izoparm oka i [ENTER] (niekoniecznie
musi być to jedna z widocznych izoparm, można również wykorzystać
jeszcze niewidoczną, nawet jej nie tworząc, jedynie zaznaczając).
Potem wybieramy krzywą, którą utworzyliśmy na bryle głowy, [ENTER]
(rys. 7).
Powinno zostać stworzone
gładkie przejście między okiem a głową. Gdyby przejście wydawało
się skręcone, należy zaznaczyć krzywą na głowie lub izoparmę oka
i odwrócić ją za pomocą narzędzia Edit Surface -> Reverse Surface
Direction(rys. 8).
Obiekt łączenia czy krzywe, do których dołączyliśmy oczy, można
dowolnie edytować, dodając izoparmy i zmieniając pozycje punktów
CV. W ten sposób z łączenia łatwo jest zrobić okalające oko powieki
teleskopy (rys. 9).
Gdy jesteśmy już zadowoleni
z łączenia, możemy skasować [DEL] krzywe na głowie lub je ukryć
[CTRL] + [h] ([CTRL] + [H] - pokaż ostatnio ukryte).
Teraz stworzymy czułki.
Wykorzystamy do tego narzędzie Loft. Mając zaznaczoną bryłę głowy
wybieramy polecenie Modify -> Make Live. Po narysowaniu owali
na głowie (pamiętajmy o poleceniu Open/Close), w miejscach, skąd
wyrastać będą czułki, możemy wyłączyć opcję Live dla obiektu głowy.
Następnie po zaznaczeniu obu przed chwilą stworzonych krzywych korzystamy
z polecenia Edit Curves -> Duplicate Surface Curves. W ten sposób
zduplikowane krzywe posłużą nam do stworzenia czułków (rys. 10).
Jednak dla lepszej przejrzystości obiektu lepszym materiałem będą
krzywe leżące na jednej płaszczyźnie. Na widoku od frontu lub z
boku zaznaczamy wszystkie wierzchołki CV jednej z nowo powstałych
krzywych i trzymając klawisz [x] (przyciąganie do siatki), przesuwamy
wierzchołki na osi Z (góra) aż do wyrównania wszystkich punktów
na płaszczyźnie (rys. 11).
Teraz tak przygotowaną
krzywą możemy duplikować, tworząc przekroje czułka. Każdy z przekrojów
możemy dowolnie edytować, pamiętając, aby nie zwiększać ilości punktów
kontrolnych (choć jest możliwe wykonanie Lofta z różniących się
pod tym względem przekrojów).
Ponieważ chcemy, aby czułki były zakończone ostro, ostatni przekrój
należy przygotować tak, aby wszystkie punkty leżały dokładnie w
tym samym miejscu. Aby to zrobić, trzeba skorzystać z przyciągania
np. do punktu. Zaznaczamy wszystkie CV prócz jednego i naciskamy
[v] (który włącza i wyłącza tryb przyciągania do punktu), teraz
wystarczy ruszyć zaznaczone punkty w kierunku niezaznaczonego i
powinny one zostać przyciągnięte (rys. 12).
Po zaznaczeniu wszystkich przekrojów (w kolejności dół - góra) wywołujemy
okno opcji polecenia Surfaces -> Loft[] i upewniając się, że
opcja close nie jest aktywna, klikamy na Apply (rys. 13).
Następnie, korzystając
z polecenia Fillet Blend Tool, łączymy czułki z krzywymi na głowie.
Specjalnie nie tworzyłem już wygiętych czułków, ponieważ łatwo można
to zrobić za pomocą deformacji kratownicy Lattice. Zaznaczamy czułek
i przechodząc w tryb Animation [F2], wybieramy polecenie Deform
-> Create Lattice[], w opcjach ustawiamy sobie ilość podziałów
i tworzymy kratownicę. Następnie, wchodząc do trybu edycji Lattice
Point ([PPM] na kratownicy) wykrzywiamy czułki (rys. 14).
Aby zatwierdzić na stałe zmiany wykonane za pomocą kratownic, mając
zaznaczone czułki, korzystamy z Edit -> Delete by Type ->
History, kasując w ten sposób historię konstrukcji obiektu. W ten
sposób udało mi się wykonać całą głowę (rys. 15).
Pamiętajmy, że włączone
Construction History daje nam możliwość nieliniowego modelowania,
np. po wykonaniu polecenia Loft wszystkie krzywe tworzące są połączone
z obiektem wynikowym i zmieniając je, zmieniamy również obiekt.
Dopiero wykonanie polecenia Delete by Type -> History usuwa nam
te połączenia.
Teraz zajmiemy się
tułowiem naszego stwora. Skorzystamy z metody modyfikacji obiektu
podstawowego. W tym wypadku zrezygnuję z dokładnego opisu krok po
kroku. Wykorzystując wskazówki z opisu tworzenia głowy, bez problemów
można stworzyć korpus. Ja ponownie posłużyłem się kulą (rys. 16).
Jeżeli chcemy, by obiekt był doskonale symetryczny, można wykonać
następujące czynności: zaznaczyć izoparmy środka kuli i użyć opcji
Edit Surfaces -> Detach Surfaces, aby rozdzielić połówki. Następnie
kasujemy jedną z nich. Aby widzieć efekt modyfikacji na obu połowach
jednocześnie, poleceniem Edit -> Duplicate[] odbijamy lustrzanie
połówkę. W parametrze Scale odpowiedniej osi (u mnie Z) wpisujemy
-1, co spowoduje odbicie względem tej właśnie osi, a w Geometry
Type zaznaczyć Instance, aby wszystkie zmiany były dokonywane również
na duplikacie. Po skończonych modyfikacjach można ponownie połączyć
obie części, zaznaczając je i korzystając z polecenia Edit Surfaces
-> Attach Surfaces.
Robaczek nie ma jeszcze
rąk. Na ich przykładzie trochę dokładniej omówię zasady tworzenia
połączeń Fillet Blend. Najpierw, modyfikując cylinder, tworzymy
bryłę ręki. Ilość podziałów możemy zwiększyć, nie tylko stosując
opisane wcześniej polecenie Insert Isoparms, lecz modyfikując parametry
wejściowe Inputs -> makeNurbCylinder1 -> Spans i Sections
w Channel Box (rys. 17).
Kiedy już nasza ręka
będzie miała zadowalający kształt (rys. 18), możemy zabrać się za
dłoń.
Tworzymy kulę, z której modelujemy dłoń wraz ze środkowym palcem.
Zwracamy uwagę, by początek kuli (najgrubsza izoparma) przecinał
środkowy palec z góry lub z dołu, a biegun znajdował się na czubku
tegoż palca (rys. 19).
W pobliżu bieguna bardzo
ciężko jest narysować zamkniętą krzywą należącą do obiektu (np.
za pomocą Make Live), tak by miała zadowalający kształt (rys. 20).
Oczywiście można sobie
pokombinować z izoparmami, ale zawsze to o jedno łączenie palca
więcej i w dodatku jest to trudniejsze łączenie.
Teraz stworzymy pozostałe palce, duplikując ten już stworzony. Zaznaczamy
na dłoni izoparmę, w której ma być przeprowadzone cięcie, i poleceniem
Edit Surfaces -> Detach Surfaces odcinamy palec od dłoni. Robimy
to na duplikacie naszego obiektu bądź włączamy wcześniej w opcjach
Detach Surfaces[] Keep Original (rys. 21).
Po stworzeniu dodatkowych
palców ich modyfikacji i odpowiednim umieszczeniu powinniśmy uzyskać
coś podobnego do rys. 22.
Następnie, korzystając z narzędzia Modify -> Make Live, rysujemy
w odpowiednich miejscach krzywe, do których będziemy przyklejać
palce (rys. 23).
W widoku szkieletowym
z włączonym narzędziem Edit Surfaces -> Surface Fillet ->
Fillet Blend Tool wybieramy jedną z krzywych, następnie klawisz
[ENTER], po czym wybieramy izoparmę palca i [ENTER] (rys. 24).
Wynik może nie być satysfakcjonujący nawet przy najwyższych detalach
wyświetlania [3], wtedy jednak mamy kilka możliwości jego poprawy.
Po pierwsze po wciśnięciu klawisza [t] powinny się pojawić dwa niebieskie
manipulatory. Jeżeli łączenie wydaje się być skręcone, możemy, zaznaczając
krzywą na dłoni lub izoparmę palca i wydając polecenie Edit Surfaces
-> Reverse Surface Direction, naprawić to. Możemy również zmodyfikować
kształt krzywej na dłoni lub palec tak, by osiągnąć zamierzony efekt.
Zawsze można zmienić samo połączenie.
Aby łączenia podczas animacji nie rozpadały się, nie wolno ich przypisywać
do szkieletu, chyba że wcześniej wykasujemy im historię konstrukcji
Delete by Type -> History. Dobrze jest też pociąć obiekty narzędziem
Edit Surfaces -> Trim Tool tak, by końcówki obiektów nie wychodziły
spod łączeń w trakcie zginania kończyn. Po połączeniu wszystkich
elementów powinniśmy uzyskać efekt podobny do rys. 25.
Powyższy artykuł przedstawia
tylko jedną z metod wykonania obiektu. Maya posiada również wspaniałe
narzędzia do modelowania polygonami, tzw. Subdivision Surfaces,
czy modelowanie na łatach. Nawet w obrębie samych NURBS-ów jest
to tylko wierzchołek możliwości programu Maya.
Krzysztof
Kamrowski
Tutorial
umieszczony na www.maya3d.users.pl za zgodą autora
|