Animacja komputerowa

Z Wikipedii, wolnej encyklopedii
Skocz do: nawigacji, wyszukiwania

Animacja komputerowa – sztuka tworzenia ruchomych obiektów z wykorzystaniem komputerów. Jest poddziedziną grafiki komputerowej i animacji. W coraz większym zakresie jest ona realizowana jako animacja 3D (trójwymiarowa), choć w zastosowaniach dysponujących niską przepustowością sprzętową i wymagających przetwarzania obrazów w czasie rzeczywistym cały czas ważną pozycję utrzymuje animacja 2D (dwuwymiarowa, płaska). Czasami docelowym medium animacji jest sam system komputerowy, ale zdarza się, ze animacja przeznaczona jest dla innych mediów, takich jak film. Animację komputerową czasami określa się skrótem CGI (od ang. Computer Generated Imagery, lub Computer Generated Imaging) - szczególnie w zastosowaniach kinematograficznych.

By stworzyć iluzję ruchu, na ekranie komputera wyświetlany jest określony obraz, po czym szybko zamienia się go na następny - podobny do poprzedniego, lecz z nieznacznymi zmianami w pozycji obiektów. Technika ta jest identyczna z zastosowaniami telewizyjnymi i kinowymi.

Animacja komputerowa jest generalnie rzecz biorąc cyfrowym spadkobiercą sztuki animacji nieruchomych obiektów trójwymiarowych (np. kukiełek) i animacji poklatkowej ilustracji płaskich. W przypadku animacji 3D, obiekty (modele) budowane (modelowane) są na ekranie komputera, po czym trójwymiarowe figury otrzymują wirtualny szkielet. W przypadku animacji płaskich, korzysta się z oddzielnych obiektów (ilustracji) i oddzielnych przezroczystych warstw, nie zawsze zaś z wirtualnych szkieletów. Kończyny, oczy, usta, czy ubrania modelu są następnie poruszane przez animatora w kolejnych klatkach kluczowych. Różnice wyglądu między klatkami kluczowymi są następnie przeliczane przez komputer, korzystając z procesów tweeningu i morfingu. Ostatnim stadium prac jest rendering.

W przypadku animacji trójwymiarowych konieczny jest rendering wszystkich klatek po zakończeniu modelowania. W pracach nad dwuwymiarowymi animacjami wektorowymi, proces renderingu jest tożsamy ze stworzeniem każdej klatki kluczowej, zaś klatki pośrednie są renderowane w razie potrzeb. W przypadku prezentacji, które są przeznaczone do późniejszego odtworzenia, wyrenderowane klatki są przenoszone do postaci filmu cyfrowego, lub na zewnętrzne medium (np. film). Poszczególne klatki mogą również być renderowane w czasie rzeczywistym, w trakcie przeprowadzania prezentacji materiału wideo. Animacje przesyłane przez Internet i zadowalające się niską przepustowością łącza (dwuwymiarowe animacje Flash, X3D) często korzystają z oprogramowania zainstalowanego na komputerze klienta, które renderuje materiał w czasie rzeczywistym, co stanowi przeciwwagę dla materiału przygotowanego wcześniej i przesyłanego strumieniowo przez łącza o dużej szybkości.

Prosty przykład[edytuj | edytuj kod]

Przykład animacji komputerowej
Animacja Ziemi

Ekran jest zapełniony kolorem tła, w tym wypadku czarnym. Z prawej strony ekranu rysowana jest koza. Następnie ekran jest ponownie zamazywany kolorem tła, ale koza rysowana jest nieco na lewo od swojej poprzedniej pozycji. Proces jest powtarzany, zaś koza za każdym razem przesuwa się nieco w lewo. Jeśli powtórzenia nastąpią wystarczająco szybko, tworzy się iluzja kozy sunącej gładko w lewo. Ta podstawowa procedura jest szeroko wykorzystywana w telewizji i filmie.

Poruszająca się koza jest prostym przykładem animacji opartym na przemieszczaniu obiektu na ekranie. Bardziej skomplikowane modyfikacje cech animowanego obiektu (rozmiar, kształt, efekty oświetlenia) często wymagają skomplikowanych obliczeń i renderowania za pomocą komputera, nie zaś prostej duplikacji.

Wyjaśnienie zjawiska animacji[edytuj | edytuj kod]

By oko i mózg dały się nabrać na iluzję gładko poruszającego się obiektu, kolejne klatki animacji (kompletne obrazy) powinny się pojawiać z częstotliwością co najmniej 12 razy na sekundę. Jeśli zmiany będą następować szybciej, niż 70 razy na sekundę, widz nie odczuje zwiększonego realizmu, czy gładkości animacji, co jest związane ze specyfiką przetwarzania obrazu przez oczy i mózg. Gdy częstotliwość pojawiania się nowych klatek spada poniżej 12 razy na sekundę, większość obserwatorów odczuwa "rwanie" się animacji i zauważa proces pojawiania się kolejnych klatek, co psuje iluzję realistycznie płynnego ruchu. Tradycyjnie animowane kreskówki podają widzowi w ciągu sekundy 15 nowych klatek obrazu, by możliwa była oszczędność w ilości niezbędnych do wykonania rysunków. Takie rozwiązanie jest jednak najczęściej do zaakceptowania, ze względu na samą naturę filmów rysunkowych. Przez fakt, że animacja komputerowa przedstawia widzom o wiele bardziej realistyczne efekty, w celu osiągnięcia zamierzonego efektu płynności wymagana jest większa ilość klatek przedstawianych w ciągu sekundy.

Przyczyna tego, że oko ludzkie nie odczuwa „rwania się” animacji przy wyższych częstotliwościach odświeżania obrazu leży w efekcie powidoku. Od czasu do czasu oko pracujące razem z mózgiem przechowuje obserwowane obrazy przez ułamek sekundy i wygładza automatycznie pomniejsze przeskoki. Filmy wyświetlane w kinach najczęściej w ciągu sekundy prezentują 24 klatki, co jest ilością absolutnie wystarczającą do stworzenia złudzenia ciągłego ruchu. Wiele osób daje się „nabrać” na efekt poruszania się obrazów właśnie ze względu na dużą szybkość ich prezentacji.

Tworzenie postaci i obiektów przy użyciu komputera[edytuj | edytuj kod]

Animacja komputerowa stanowi połączenie grafiki wektorowej i zaprogramowanego ruchu. Punktem wyjścia do stworzenia animacji jest najczęściej szkielet figurki, który w każdym ważniejszym punkcie (kończyny, usta, itd.) definiowany jest przy użyciu tzw. Avars (ang. animation variables, zmienne animacyjne).

Woody, jeden z bohaterów filmu Toy Story opisany został na przykład za pomocą 700 zmiennych animacyjnych, z których 100 znajduje się na jego twarzy. Poszczególne zestawy zmiennych kontrolują poruszanie się postaci od jednej klatki filmu do drugiej. Gdy szkielet postaci porusza się już w zadowalający sposób, zmienne przenosi się na model siatkowy postaci, złożony z wielokątów. Na końcu do modelu dodawane są powierzchnie, a po długim procesie renderingu powstaje scena.

By otrzymać realistyczne wrażenie ruchu istnieje kilka metod ustalania zmiennych "Avar". Metoda śledzenia ruchu wykorzystuje umieszczone na żywym modelu światełka lub czujniki. Aktor odgrywa scenę, przy czym obserwowany jest przez kamerę. "Avary" można dodawać również za pomocą joysticka, lub innego urządzenia do wprowadzania danych. W filmie "Toy Story" nie wykorzystywano metody śledzenia ruchu, najprawdopodobniej z tego powodu, że tylko wprawny animator był w stanie oddać skomplikowane ruchy, niemożliwe do odegrania przez żywych aktorów.

Urządzenia do tworzenia animacji komputerowych[edytuj | edytuj kod]

Animację komputerową stworzyć można za pomocą komputera wyposażonego w odpowiednie oprogramowanie. Niektóre tytuły to: Amorphium, Art of Illusion, Poser, Ray Dream Studio, Bryce, Maya, Blender, TrueSpace, Lightwave, 3D Studio Max, SOFTIMAGE|XSI, Houdini i Adobe Flash (animacje 2D). Ich ceny różnią się w zależności od sugerowanego odbiorcy programu. Spektakularne efekty można osiągnąć również przy użyciu podstawowych programów, jednak proces renderowania sceny może się wydłużyć, jeśli wykorzystujemy do animacji zwykły domowy komputer. Z tych przyczyn projektanci grafiki w grach komputerowych skłaniają się raczej ku prostszym animacjom, opartym o mniejszą ilość wieloboków, by nawet komputery domowe były w stanie renderować zaprojektowane animacje w czasie rzeczywistym. Animacja o jakości fotorealistycznej byłaby w takich kontekstach niepraktyczna.

Profesjonalni animatorzy sekwencji filmowych wykorzystywanych w grach tworzą animacje fotorealistyczne o dużej szczegółowości. Wyrenderowanie sekwencji nasyconej do takiego stopnia szczegółami mogłoby zając w warunkach domowych dziesiątki, nawet setki lat. Dlatego w pracach tego typu wykorzystywane są stacje robocze. Są one wyposażone w dwa do czterech procesorów, co znacznie zwiększa ich moc, ich konstrukcja również odzwierciedla specjalistyczne zastosowania tworzenia grafiki. Istnieją również zestawy stacji roboczych, tak zwane "farmy", które połączone w sieć działają jak jeden potężny komputer. Efektem takich działań jest możliwość wyrenderowania filmu w okresie od jednego roku do 5 lat - nie cały ten czas poświęcony jest na renderowanie kolejnych klatek. Ceny stacji roboczych wahają się najczęściej w przedziale 3600-24000 złotych i więcej, przy czym droższe stacje są w stanie prowadzić obliczenia o wiele szybciej, dzięki zastosowaniu nowocześniejszych komponentów. Oprogramowanie Renderman firmy Pixar na dobre zadomowiło się w świecie scen renderowanych na potrzeby przemysłu filmowego, konkurując z rozwiązaniem Mental Ray. Oficjalna strona Pixar sprzedaje program w cenie od 5000 do 8000 dolarów, sam program zaś działa na komputerach wyposażonych w systemy operacyjne Linux, MacOS X i Microsoft Windows, współpracując z oprogramowaniem Maya, czy SOFTIMAGE|XSI. Profesjonalni twórcy filmów animowanych komputerowo posługują się w swojej pracy takimi zdobyczami techniki, jak kamery, urządzenia motion capture i performance capture, niebieskie ekrany, oprogramowanie do edycji materiału wideo, rekwizyty i inne narzędzia właściwe animacjom kinowym.

Sprzętowa strona techniki animacyjnej[edytuj | edytuj kod]

Przykład animacji renderowanej komputerowo

Gdy komputer ma zamiar wyświetlić na ekran jakiś obraz, najczęściej tworzony jest on w tak zwanym buforze tylnym. W tym miejscu komputer może swobodnie rysować obraz i wprowadzać wszystkie niezbędne zmiany. Podczas, gdy komputer wykonuje prace w buforze tylnym, ekran pokazuje zawartość tak zwanego bufora głównego, lub przedniego.

Po zakończeniu przeliczeń związanych z renderowaniem, komputer przesyła do ekranu polecenie wyrysowania zawartości bufora tylnego. Może się to odbyć na jeden z dwóch sposobów: zawartość bufora tylnego można skopiować do bufora głównego (którego zawartość jest aktualnie wyświetlana), lub komputer może dokonać przełączenia i ustawić bufor tylny w roli bufora przedniego. W takim wypadku bufor przedni automatycznie staje się buforem tylnym. Osobą, która wymyśliła to podejście jest John MacArthur. Proces zwykle nazywa się podwójnym buforowaniem, albo nieoficjalnie "przerzutką" (ang. flip), gdyż komputer dokonuje "przerzucenia" buforów miejscami między sobą.

Przełączenie to powinno nastąpić w sposób niewidoczny dla użytkownika. Dogodnym do tego momentem jest sygnał synchronizacji pionowej. W klasycznych monitorach CRT następuje on, gdy działko elektronowe dociera do prawego dolnego rogu ekranu i musi przenieść wystrzeliwany strumień elektronów do lewego górnego rogu. Odbywa się to bardzo szybko, a w tym czasie obraz naświetlony na kineskopie pozostaje widoczny. Podczas powrotu działek elektronowych do pozycji umożliwiającej rozpoczęcie rysowania w lewym górnym rogu ekranu, komputer ma wystarczająco dużo czasu, by dokonać przełączenia i by zawartość bufora przedniego mogła być wyrysowana na ekranie podczas kolejnego odświeżenia. Obraz pozostanie na ekranie do czasu kolejnej zamiany buforów.

Jeśli komputer nie może zamienić obrazów podczas sygnału powrotu plamki, pojawia się zjawisko przełamania duszka, lub przełamania obrazu (z ang. sprite breakup / image breakup). Jest to efekt wysoce niepożądany i powinno się gu unikać wszelkimi sposobami, by nie udaremnić efektu płynnej animacji.

Przyszłość[edytuj | edytuj kod]

Jednym z otwartych wyzwań rzuconych technice animacji komputerowej jest fotorealistyczna animacja postaci ludzkich. W chwili obecnej większość filmów stworzonych techniką animacji komputerowej korzysta w roli postaci albo ze zwierząt (Gdzie jest Nemo?), fantastycznych stworów (Shrek, Potwory i spółka), albo z celowo zbliżonych do kreacji kreskówkowych bohaterów ludzkich (Iniemamocni). Jako pierwszy tytuł, którego twórcy dołożyli starań, by stworzyć realistycznie wyglądające postacie ludzkie dość często cytowany jest Final Fantasy: The Spirits Within. Jednak z uwagi na wielką złożoność ciała ludzkiego, jego mechanizmów poruszania się i warunków biomechanicznych realistyczna animacja postaci ludzkich nadal pozostaje kwestią otwartą, stanowiąc swego rodzaju "świętego Graala" animacji. Punktem dążeń jest udostępnienie programu, który dałby animatorowi możliwość wyprodukowania sekwencji filmowej z realistycznie wyglądającą postacią ludzką, poruszającą się w naturalny sposób (wliczywszy w to zachowanie ubrań i włosów) w skomplikowanym środowisku naturalnym, pożądana byłaby również możliwość interakcji stworzonej postaci z innymi bohaterami sekwencji. Całość powinna być wygenerowana w sposób uniemożliwiający widzowi stwierdzenie, czy oglądana przez niego sekwencja została stworzona za pomocą komputera, czy odegrana przez żywych aktorów występujących przed kamerą filmową. Osiągnięcie takiego efektu oznaczałoby, że do nakręcenia filmu nie są już niezbędni aktorzy "z krwi i kości", a technikami animacji komputerowej da się zrealizować każdy film, nie tylko animowany. Aktorzy nadal będą niezbędni w produkcjach filmowych, choćby na etapie udźwiękowienia produkcji, czy podczas prac techniką przechwycania ruchu. Całkowitego realizmu najprawdopodobniej nie da się osiągnąć szybko, ale przedstawione powyżej koncepcje na pewno czynią pewne założenia co do filozofii przyszłości przemysłu filmowego.

Naturalnie istnieją studia filmowe, które nie wykazują zainteresowania realistyczną animacją komputerową, lub dokładniej rzecz ujmując cenią sobie wolność wyboru i wybierają odpowiednie techniki prac, w zależności od charakteru realizowanego przedsięwzięcia. W chwili obecnej wydaje się, że trójwymiarowa animacja generowana komputerowo da się podzielić na dwa główne nurty - fotorealistyczny i niefotorealistyczny. Pierwsza z tak stworzonych kategorii da się podzielić jeszcze bardziej szczegółowo - prawdziwy fotorealizm (gdzie podczas tworzenia wirtualnych aktorów stosowane są techniki typu przechwytywanie ruchu) oraz stylizowany fotorealizm. Wspomniany wyżej film Final Fantasy starał się osiągnąć fotorealizm pierwszego podtypu, który w przyszłości prawdopodobnie umożliwi stworzenie postaci takich, jak bohaterowie filmu Ciemny kryształ bez potrzeby uciekania się do technik pracy z lalkami i animatroniki. Przykładem stylizowanego fotorealizmu jest Mrówka Z (w przyszłości stylizowany fotorealizm ma szansę zastąpić animację poklatkową, taką jak choćby zastosowana w filmie Gnijąca panna młoda. Stylizowany fotorealizm i tradycyjnie "kreskówkowa" animacja powinny być raczej traktowane jak rozszerzona i poprawiona wersja tradycyjnej animacji, jako próba spowodowania, by animacja uzyskała trzeci wymiar. Ten trend ciągle wykorzystuje i usprawnia kanony animacji wytyczone przez "dziewięciu starców", takie, jak zgniatanie i rozciąganie bohaterów. Jeśli chodzi o jakość generowanego materiału - wprawdzie pojedyncza klatka sekwencji filmowej zrealizowanej w myśl fotorealizmu jest w stanie przypominać zdjęcie (pod warunkiem, ze jest solidnie wykonana), lecz pojedyncza klatka animacji "kreskówkowej" będzie zawsze wyglądać, jak rysunek (efektu tego nie należy utożsamiać z techniką cel-shading, której efekty są jeszcze prostsze).

Szczegółowy przykład wraz z pseudokodem[edytuj | edytuj kod]

W animacji dwuwymiarowej poruszające się po scenie obiekty nazywane są duszkami. Duszek jest obrazkiem, do którego przypisane jest odpowiednie położenie. Położenie to jest z każdą kolejną klatką filmu nieco zmieniane, by uzyskać wrażenie poruszania się duszka. Cytowany niżej pseudokod powoduje przesuwanie się duszka w prawo:

var int x = 0, y = wysokośćEkranu / 2
while x < szerokośćEkranu
  rysujTło()
  rysujDuszkaWPozycjiXY(x, y)  // rysowanie duszka na wierzchu tła
  x = x + 5  // przesunięcie w prawo

Nowoczesne techniki animacji (stosowane od roku 2001) tworzą sekwencje w zupełnie inny sposób. Najczęściej odbywa się to w drodze skomplikowanych obliczeń matematycznych przeprowadzanych na trójwymiarowych płaszczyznach, na które nakłada się tekstury, dodaje oświetlenie i inne efekty, a na koniec renderuje całość. W tworzeniu animacji i ustawianiu jej choreografii przydatny jest skomplikowany graficzny interfejs użytkownika. Inna z wykorzystywanych technik o angielskiej nazwie "constructive solid geometry" definiuje obiekty na podstawie obliczeń algebry Boole's stosowanych do regularnych figur. Jej zaletą jest umożliwienie tworzenia dokładnych animacji w dowolnej skali.

Prześledźmy proces renderowania prostej sceny - zawiera ona pokój o płaskich drewnianych ścianach, w którego centrum umieszczona jest szara piramida. Scena oświetlona jest przez reflektor. Każda ściana, sufit i podłoga to prosty wielokąt, w tym przypadku prostokąt. Narożnik każdego z czworoboków zdefiniowany jest przy pomocy trzech wartości o symbolach X, Y i Z. X oznacza położenie punktu na osi lewo-prawo, Y na osi dół-góra, zaś Z na osi blisko-daleko. Ściana najbliższa obserwatorowi zdefiniowana więc będzie przez cztery punkty, z których każdy podano w zapisie (X, Y, Z) w następujący sposób:

(0, 10, 0)                        (10, 10, 0)

(0,0,0)                           (10, 0, 0)

Ścianę najbardziej oddaloną od obserwatora opisać można następująco:

(0, 10, 20)                        (10, 10, 20)

(0, 0, 20)                         (10, 0, 20)

Piramida stojąca w środku pokoju składa się z pięciu wielokątów: czworokątnej podstawy i czterech trójkątnych ścian. W celu narysowania obrazka, komputer musi dokonać przeliczeń trójwymiarowych danych na postać dającą się wyświetlić na dwuwymiarowym ekranie.

Po pierwsze, niezbędne jest ustalenie punktu, z którego obserwowana jest cała scena. Ustalmy go wewnątrz pokoju, nieco nad podłogą i skierujmy w stronę piramidy. najpierw komputer przeliczy więc, które ze zdefiniowanych przez nas w scenie wielokątów są dla nas widoczne. Ściana znajdująca się z przodu sceny (pierwsza z opisanych współrzędnymi powyżej) nie będzie na przykład rysowana, gdyż znajduje się zapunktem obserwacyjnym. Podobnie tylna ścianka piramidy, zasłonięta przez resztę bryły.

Następnie komputer dokonuje rzutu każdego punktu obrazu na ekran. Fragmenty ściany leżącej najdalej od punktu widzenia będą wydawać się mniejsze od ścian leżących blisko, ze względu na zastosowanie perspektywy. By upodobnić ściany do drewna, jest na nie nakładany odpowiedni wzór, nazywany teksturą. W tym celu bardzo często wykorzystuje się technikę mapowania tekstur. Niewielki obrazek przedstawiający drewnianą powierzchnię, który można wielokrotnie nałożyć na zestaw wielokątów (podobnie jak ma to miejsce z klasycznymi tapetami) jest rozciągany i dopasowywany do ostatecznego kształtu ścian. Piramida wykonana jest z jednolicie szarego materiału, więc jej ścianki można wyrenderować również w jednolitym szarym kolorze. Pozostaje jeszcze kwestia reflektora. W miejscach, gdy jego światło pada na obiekty, ich kolory są rozjaśniane, zaś w miejscach, które są zasłonięte innymi obiektami, kolory są przyciemniane.

Następnie całość sceny rysowana jest na ekranie. Gdybyśmy teraz zmienili liczby opisujące pozycje poszczególnych wierzchołków piramidy i ponownie wyrenderowali scenę, piramida zdawałaby się poruszać.

Filmy[edytuj | edytuj kod]

Krótkie filmy realizowane za pomocą komputerów pojawiały się jako animacje niezależne od lat 70. XX wieku, choć popularność komputerowego wkładu w kinematografię (szczególnie w dziedzinie efektów specjalnych) znacznie wzrosła po roku 1988. Pierwszym filmem pełnometrażowym zrealizowanym wyłącznie techniką animacji komputerowej był Toy Story.

Animacje amatorskie[edytuj | edytuj kod]

Popularność serwisów internetowych takich, jak YouTube, których użytkownicy mogą dzielić się ze społecznością internetową własnymi klipami filmowymi, spowodowała pojawienie się pewnej liczby amatorskich animacji. Istnieje wiele darmowych narzędzi, na przykład Windows Movie Maker, za pomocą których możliwe jest stworzenie animacji przeznaczonej dla wielu odbiorców.