Animacja komputerowa: Różnice pomiędzy wersjami

[wersja przejrzana][wersja przejrzana]
Usunięta treść Dodana treść
m drobne merytoryczne, drobne redakcyjne, poprawa linków
m drobne merytoryczne, drobne redakcyjne, poprawa linków
Linia 10:
== Prosty przykład ==
[[Plik:CompAnimationExample.gif|146px|thumb|Przykład animacji komputerowej]]
[[Plik:Ziemiaanim.gif|170px200px|thumb|Animacja Ziemi (w stronę przeciwną do rzeczywistego obrotu)]]
 
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.
Linia 34:
 
== Sprzętowa strona techniki animacyjnej ==
[[Plik:Pyramid of 35 spheres animation large.gif|160px300px|thumb|right|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.
Linia 41:
 
* zawartość bufora tylnego można skopiować do bufora głównego, którego zawartość jest aktualnie wyświetlana;
* komputer może dokonać przełączenia ustawiając 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ójne buforowanie|podwójnym buforowaniem]] albo nieoficjalnie „przerzutką” (ang. ''flip''), gdyż komputer dokonuje „przerzucenia” buforów miejscami między sobą.
Osobą, która wymyśliła to podejście jest John MacArthur. Proces zwykle nazywa się [[podwójne buforowanie|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, a dogodnym do tego momentem jest sygnał [[Synchronizacja pionowa|synchronizacji pionowej]]. W klasycznych monitorach [[Monitor kineskopowy|CRT]] następuje on, gdy [[działo 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 [[Kineskop|kineskopie]] pozostaje widoczny. Podczas powrotu działa elektronowego 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.
 
Przełączenie to powinno nastąpić w sposób niewidoczny dla użytkownika, a dogodnym do tego momentem jest sygnał [[Synchronizacja pionowa|synchronizacji pionowej]]. W klasycznych monitorach [[Monitor kineskopowy|CRT]] następuje on, gdy [[działo 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 [[Kineskop|kineskopie]] pozostaje widoczny. Podczas powrotu działa elektronowego 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.
 
Jeśli komputer nie może zamienić obrazów podczas sygnału powrotu plamkidziała elektronowego, pojawiato siędokonuje zjawiskotego przełamaniaw duszkaczasie, lubgdy przełamaniajuż pewna część poprzedniego obrazu (zzostała wyświetlona, co prowadzi do zjawiska zwanego przełamaniem duszka (ang. ''sprite breakup''), /przełamaniem obrazu (ang. ''image breakup'') lub [[Rozrywanie obrazu|rozrywaniem obrazu]] (ang. ''screen tearing''). Jest to efekt wysoce niepożądany i powinno się gu unikać wszelkimi sposobami, by nie udaremnić efektu płynnej animacji.
== Przyszłość ==
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: Wojna dusz|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„z krwi i kości"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 Tima Burtona|Gnijąca panna młoda]]''. Stylizowany fotorealizm i tradycyjnie "kreskówkowa"„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„dziewięciu starców"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 [[Fotorealizm (grafika komputerowa)|fotorealizmu]] jest w stanie przypominać zdjęcie (pod warunkiem, ze jest solidnie wykonana), lecz pojedyncza klatka animacji "kreskówkowej"„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 ==
W animacji dwuwymiarowej poruszające się po scenie obiekty nazywane są [[sprite|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:
 
<presource>
var int x = 0, y = wysokośćEkranu / 2
while x < szerokośćEkranu
Linia 61 ⟶ 59:
rysujDuszkaWPozycjiXY(x, y) // rysowanie duszka na wierzchu tła
x = x + 5 // przesunięcie w prawo
</presource>
 
Nowoczesne techniki animacji (stosowane od roku [[2001 w informatyce|2001]]) tworzą sekwencje w zupełnie inny sposób. Najczęściej odbywa się to w drodze skomplikowanych obliczeń [[matematyka|matematycznych]] przeprowadzanych na trójwymiarowych [[płaszczyzna]]ch, na które nakłada się [[teksturowanie|tekstury]], dodaje oświetlenie i inne efekty, a na koniec [[renderowanie|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)
<pre>
(0, 10, 0) (10, 10, 0)
 
(0,0,0) (10, 0, 0)
</pre>
 
Ścianę najbardziej oddaloną od obserwatora opisać można następująco:
(0, 10, 20) (10, 10, 20)
 
(0, 0, 20) (10, 0, 20)
<pre>
(0, 10, 20) (10, 10, 20)
 
(0, 0, 20) (10, 0, 20)
</pre>
 
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ę zapunktemza punktem 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 [[teksturowanie|teksturą]]. W tym celu bardzo często wykorzystuje się technikę [[mapowanie tekstur|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.