Nieodłącznym elementem każdego programu graficznego jest możliwość tworzenia animacji. Większość programów wykorzystuje pojęcia wymyślone przez autorów pierwszych "kreskówek" rysowanych na papierze, dostosowane z czasem do możliwości komputerów. Program Blender nie różni się tutaj zasadniczo od reszty. Niemniej jednak, animacja 3D wprowadza pewne pojęcia, które nie występują w aplikacjach do animacji w 2D, takie jak: szkielety i IK (rzadko używane w 2D), ograniczanie obiektów w przestrzeni 3D na podstawie ustalonych reguł oraz przede wszystkim zaawansowane silniki fizyki operujące w przestrzeni 3D. Na tych ćwiczeniach, podobnie jak na poprzednich, poznamy tylko podstawowe narzędzia animacji, ale w tekście będzie wskazane, jakich informacji szukać do poszerzenia wiedzy z zakresu animacji 3D.
Najprostszy sposób animacji, wykorzystywany w większości programów posiadających narzędzia do animacji, to kluczowanie (ang. keying). Pojęcie to wywodzi się ze sztuki tworzenia animacji na papierze i/lub foliach przezroczystych. W tym przypadku, najpierw tworzymy "kluczowe klatki" animacji przedstawiające główne punkty akcji w filmie animowanym, a potem uzupełniamy film dorysowując pozostałe klatki pomiędzy w taki sposób, żeby animacja wyglądała jak najbardziej naturalnie.
Animacja komputerowa ułatwia nieco to zadanie, ponieważ klatki pośrednie można wygenerować w sposób automatyczny. Zadanie animatora sprowadza się do określenia klatek kluczowych oraz sposobu przechodzenia między nimi, a program sam generuje wszystkie klatki pośrednie. Inna różnica polega na tym, że zazwyczaj animujemy obiekty w przestrzeni wektorowej, więc w odróżnieniu od tradycyjnej animacji staramy się raczej manipulować dyskretnymi punktami w przestrzeni 3D niż odmalowywać całe obrazy. W Blenderze w zasadzie można "kluczować" dowolną wartość w programie. Skrót klawiszowy I (duża litera i) służy do dodawania "klucza" do danej wartości w bieżącej klatce animacji. Najeżdżając kursorem nad (prawie) dowolną wartością liczbową w interfejsie Blendera i naciskając klawisz I na klawiaturze możemy animować daną wartość (niektórych wartości, np. rozdzielczości animacji, nie można animować z powodów oczywistych).
Jednym z podstawowych zastosowań animacji w Blenderze jest sterowanie kamerą. Nawet jeśli mamy statyczny model w 3D (np. pomnik albo element architektury), to dodanie animacji kamery może znacznie uatrakcyjnić odbiór tego dzieła i wzmocnić poczucie realizmu. Zacznij więc od stworzenia prostej sceny:
ustaw domyślny sześcian w pozycji (0,0,1)
dodaj Plane na środek sceny i zwiększ go 100 razy
zmień domyślne światło na Sun
Teraz zaznacz kamerę (np. z listy obiektów na górze po prawej) i wejdź do widoku kamery (klawiszem 0 na klawiaturze numerycznej). Chcemy dokonać tzw. "przelotu" kamery (ang. flyby) obok powierzchni sześcianu, więc ustawmy najpierw kamerę w pewnej odległości od sześcianu (dla przypomnienia: najłatwiej to osiągnąć wchodząc w tryb chodzenia wciskając SHIFT-F na klawiaturze i używając myszy i klawiszy A,W,S,D,Q,E). Po ustawieniu kamery w odpowiednim miejscu na początku animacji, upewnij się, że znajdujesz się w pierwszej klatce. Spójrz na oś czasu na samym dole ekranu i sprawdź, czy kursor znajduje się w pierwszej klatce. Ewentualnie użyj skrótu klawiszowego SHIFT-← (shift i strzałka w lewo). Następnie ustaw kursor myszy nad widokiem 3D i wciśnij klawisz I na klawiaturze. Pojawi się menu z opcjami, czego ma dotyczyć kluczowanie. Ponieważ będziemy zmieniać tylko pozycję i obrót kamery, wybierz opcję LocRot z listy.
W tym momencie ustawiliśmy pierwszą klatkę kluczową animacji. Przesuń teraz kursor osi czasu na klatkę numer 100 i przesuń kamerę do kolejnej pozycji - gdzieś blisko sześcianu. Znowu wciśnij I na klawiaturze (pamiętaj, żeby kursor był położony nad widokiem 3D!) i ustaw kolejną klatkę kluczową LocRot. Przejdź teraz do klatki 150 i zmień kamerę tak, żeby nadal była blisko sześcianu, ale patrzyła na niego z innej strony i dodaj kolejną klatkę kluczową. Na sam koniec przejdź do klatki 250 i oddal się kamerą od sześcianu w innym kierunku niż na początku. Wszystko powinno wyglądać mniej więcej tak:
Żeby odtworzyć animację, przejdź do jej początku (SHIFT-←) i wciśnij guzik odtwarzania (lub skrót klawiszowy ALT-A).
Jeśli klikniesz na ikonę zegara w dolnym lewym rogu osi czasu, to możesz zmienić widok z osi czasu na Graph Editor. Jest to alternatywny sposób na podgląd i edycję animacji, ale używa krzywych do reprezentacji poszczególnych parametrów. Jeśli chcesz, możesz tutaj dopracować poszczególne ruchy i obroty kamery, ale powyższe rozwiązanie zupełnie wystarczy.
Ruch jakiegoś obiektu można często zdefiniować na podstawie prostej ścieżki. Można to zrobić, używając kluczowania i edytora krzywych, ale jest jeszcze prostszy sposób. Zacznijmy od narysowania krzywej:
dodaj do sceny obiekt typu Curve/Bezil;'er i podnieś go o 2 jednostki do góry (żeby leżała na sześcianie)
przejdź do widoku z góry (7 na klaw. numerycznej) i włącz widok ortogonalny (5 na klaw. num.)
wejdź do widoku edycji i zaznacz jeden z wierzchołków
przesuń go w inne miejsce (kl. G) i użyj rotacji (kl. R) oraz skalowania (kl. S) do zmiany punktów kontrolnych krzywej
do dodania kolejnego punktu użyj przycisku E
dodaj kilka punktów żeby zrobić (prawie) zamknięty kształt
kliknij na Toggle Cyclic w menu po lewej
Później możesz wrócić i poprawić poprzednio utworzone punkty albo je skasować przyciskiem X na klawiaturze. Powinno to wyglądać na przykład tak:
Teraz możemy spróbować dodać jakiś obiekt poruszający się po tej krzywej:
wciśnij 2 na klawiaturze tekstowej (nad literami), żeby przejść do drugiej warstwy w scenie - wszystko na chwilę zniknie, ale nie martw się, nadal tam jest, tylko zostało chwilowo ukryte
wciśnij SHIFT-C, żeby wyśrodkować scenę i dodaj do niej jakiś obiekt 3D (np. Cone albo Monkey)
podnieś go o 0.25 jednostek do góry i zmniejsz 4 razy (skaluj o 0.25) - możesz go też obrócić i dopracować w dowolny inny sposób pod warunkiem, że całość będzie umieszczona nad powierzchnią
wciśnij CTRL-A i wybierz Location, a potem znowu CTRL-A i wybierz Scale - w ten sposób zastosujemy rozmiar i pozycję przedmiotu w scenie - w zakładce Object Data (ikona sześcianu) pozycja będzie 0, a skala 1, chociaż została ona przez nas zmieniona
teraz przejdź do zakładki Object Constraints (ikona dwóch połączonych ogniw łańcucha) i dodaj ograniczenie o nazwie Follow path (z listy Relationship całkiem po prawej) - początkowo będzie zamalowane na czerwono
wybierz powyższą krzywą z listy obok opcji Target - obiekt zostanie umieszczony na miejscu krzywej, a ograniczenie już nie będzie czerwone
obiekt jest we właściwym miejscu, ale nadal się nie porusza - kliknij na guzik Animate Path żeby automatycznie wygenerować animację po krzywej
Możesz puścić animację i zaobserwować ruch obiektu po krzywej. Teraz połączmy go z resztą sceny:
przy zaznaczonym obiekcie wciśnij M (jako move) i cyfrę 1 (na klawiaturze tekstowej), żeby go przesunąć do pierwszej warstwy
wciśnij 1, żeby przejść do pierwszej warstwy
Po puszczeniu, całość powinna wyglądać tak:
Blender zawiera całkiem zaawansowany silnik fizyki o nazwie Bullet, którego można zresztą używać w dowolnym programie (dostępne jest SDK w wielu językach programowania). W nim można dokonywać różnego rodzaju symulacji fizycznych: przedmiotów stałych, miękkich, tkanin, cieczy, dymu/ognia, itd. Część z nich jest bardziej skomplikowana niż inne. Przykładowo ciecz jest stosunkowo łatwa do zrobienia w podstawowej wersji, ale wymaga dużo pracy i mocy obliczeniowej, żeby wyglądała doskonale. Dym i ogień z kolei są efektami, które bardzo trudno uchwycić kamerą nawet w prawdziwym życiu, więc w Blenderze jest to jeszcze trudniejsze. My się skupimy na dwóch najprostszych przykładach.
Ciała stałe (ang. rigid bodies) to jedna z najprostszych symulacji fizycznych, jaką można zrobić w Blenderze. Ciała stałe dzielimy na dwa rodzaje:
pasywne - stale przytwierdzone w przestrzeni, nieporuszające się, ale uczestniczące w symulacji poprzez oddziaływanie (jako bariera) na ciała aktywne
aktywne - normalne przedmioty uczestniczące w symulacji fizycznej, ze wszystkimi siłami oddziałującymi na nie
Jest jeszcze trzeci rodzaj obiektów w scenie, a to są obiekty niebędące częścią symulacji. Obiekty te będą rysowane, ale wszelkie ciała stałe będą ignorować ich obecność (będą je przenikać tak, jakby one nie istniały). Zacznijmy budowę naszej sceny od następujących kroków:
zaznacz sześcian i w menu całkiem po lewej otwórz zakładkę Physics i kliknij guzik Add Passive
zaznacz tło (podłogę) i zrób to samo
teraz zaznacz nasz obiekt poruszający się po krzywej i kliknij na Add Active - nie chcemy, żeby na niego działały prawa fizyki (ponieważ jest on już przez nas animowany), ale ponieważ nie stoi w miejscu, musi być oznaczony jako przedmiot aktywny
przejdź teraz do zakładki Physics w menu całkiem po prawej (ikona odbijającej się piłki) - po dodaniu do obiektu właściwości Active zauważ, że obiekt ma krzyżyk obok opcji Rigid Body oraz pod spodem typ ustawiony jako Active
zaznacz haczyk obok Animated - tym sposobem rozwiążemy problem związany z animacją
dodaj teraz do sceny jakiś płaski przedmiot, np. Torus i umieść gdzieś w powietrzu nad sześcianem
kliknij na opcję Rigid Body i upewnij się, że jest ustawiony jako Active
Teraz jeśli przewiniesz animację na początek (SHIFT-← ) i uruchomisz play (ALT-A), zobaczysz, jak ten przedmiot spada z prawami fizyki. Co więcej, możesz go powielić dowolną ilość razy (SHIFT-D - poniższy przykład obejmuje ok. 30 obiektów) i wszystkie będą się zachowywać w ten sam sposób:
Symulacje typu Rigid Body są bardzo ciekawe i można za ich pomocą zrobić bardzo wiele. Jednym z częstszych przykładów są rozpadające się konstrukcje (np. budynki, mosty). To jest dodatkowo wzmocnione możliwością dodania połączeń między przedmiotami - zarówno stałych, łamiących się, jak i sprężystych (zob. Constraints). Innym ciekawym zastosowaniem są łańcuchy: przy odpowiednich ustawieniach można z powyższych kółek zrobić łańcuch albo nawet całą kolczugę. Ostatnim ciekawym przykładem są całe mechanizmy zegarowe: jeśli zrobimy modele kół zębatych odpowiednich kształtów i rozmiarów, powinny się one zachowywać jak prawdziwe części zegara. Oczywiście na pewnym poziomie szczegółowości symulacja fizyki się zepsuje i nie będzie w stanie odtworzyć prawdziwych warunków świata rzeczywistego. Ustawienia dokładności symulacji fizycznych można zmienić w zakładce sceny (ikona trzech małych obiektów, trzecia od lewej), w dziale Rigid Body World. Szczegóły tego jednak nie będą omawiane na tych ćwiczeniach.
Inny ciekawie wyglądający i łatwy przykład to symulacja tkaniny:
dodaj do sceny obiekt typu Plane i ustaw go 50 jednostek do góry oraz zwiększ go 5 razy - ustawiamy go tak wysoko, żeby spadł na scenę dopiero w drugiej części animacji
wejdź do trybu edycji (klawisz TAB) i wybierz opcję Subdivide ok. 5 razy (nie więcej) - poszukaj jej w menu po lewej, w zakładce Tools
wyjdź z Edit Mode (znowu klawisz TAB) i przejdź do zakładki fizyki w menu po prawej (tej z odbijającą się piłką)
zaznacz opcję Cloth i zwróć uwagę na kilka ustawień poniżej
w dziale Cloth Collision zaznacz Self Collision i zmień parametr Distance (ten po lewej) na 0.1 - ustawienie to spowoduje, że przedmioty nie będą "przenikać" przez cienkie płótno
teraz zaznacz wszystkie obiekty, które mają kolidować z płótnem i dodaj do nich właściwość fizyczną Collision (bezpośrednio nad Cloth)
Obiekty te powinny na pewno być podłogą i sześcianem, ale powinien też być poruszający się po ścieżce przedmiot oraz wszelkie inne przedmioty wchodzące w interakcję z płótnem. Jak teraz puścisz animację, to powinieneś zobaczyć ciekawie wyglądające płótno spadające na scenę. Za pierwszym razem animacja będzie powolna (bo działa silnik fizyki), ale po dodaniu animacji do cache'a, powinna działać już płynnie. Na samym końcu, jako element estetyczny, możesz dodać do płótna modyfikator Subdivision Surface na poziomie 2 oraz zmienić cieniowanie na Smooth. Efekt końcowy może wyglądać mniej więcej tak:
Aby uzyskać najwyższą ocenę, należy "podrasować" powyższą scenę (dodać materiały i światła) i zrobić z niej ostateczny render. Render animacji nie różni się specjalnie od renderu obrazu, ale trwa o wiele dłużej (dokładnie 250 razy dłużej w tym przypadku). Należy sprawdzić następujące ustawienia w zakładce Render (ikona aparatu, pierwsza po lewej):
ustaw wartość procentową pod rozdzielczością na 25% - to znacznie przyspieszy pracę, bo zmniejszy rozdzielczość animacji 4-krotnie
w dziale output powinna być ustawiona jakaś ścieżka, np. do pliku z rozszerzeniem AVI
jako format powinien (zamiast PNG) być ustawiony jakiś format filmowy (np. H.264)
zadbaj o kolorystykę, ustawienie tekstury oraz grę świateł tak, aby Twoja praca była niepowtarzalna i olśniewająca!
po ustawieniu wszystkiego należy kliknąć na przycisk Animation obok przycisku Render
I tu się zacznie czekanie. Jest duża szansa na to, że nie uda Ci się dokończyć tego zadania na lekcji. Z tego powodu, można to ćwiczenie dokończyć w domu i przynieść (autorskie!) rozwiązanie na następną lekcję. Na wszelki wypadek, przed opuszczeniem sali, nie zapomnij pokazać Prowadzącemu tego, co Ci się udało zrobić, żeby otrzymać jakąkolwiek ocenę .