następny punkt » |
Dotychczas zajmowaliśmy się tworzeniem pojedynczego - statycznego obrazu. Jednak otaczająca nas rzeczywistość nie jest statyczna i metody grafiki komputerowej muszą umożliwić również rozwiązanie problemu wizualizacji zmian zachodzących w funkcji czasu. Zajmuje się tym animacja komputerowa. W animacji generowane są zestawy klatek (obrazów, ramek) odzwierciedlających wygląd sceny w kolejnych, dyskretnych chwilach. Z kolei, dzięki pewnej bezwładność naszego systemu wzrokowego, przy dostatecznie szybkim wyświetlaniu kolejnych klatek uzyskuje się wrażenie ciągłości zmian zachodzących w funkcji czasu.
Warto tu od razu zaznaczyć, że animacja nie ogranicza się jedynie do ruchu - każda zmiana występująca między kolejnymi klatkami jest pewną formą animacji. Tak więc na przykład, zmiana kształtu obiektu czy zmiana wyglądu obiektu to też są pewne formy animacji. Zauważmy również, że przy wyświetlaniu sekwencji obrazów, kolejne obrazy można traktować jako próbki rzeczywistej ciągłej sekwencji zdarzeń, pobierane w określonych odstępach czasu.
Przy wyświetlaniu sekwencji obrazów możemy spotkać się z dwoma parametrami: z częstotliwością odświeżania i z częstotliwością uaktualniania. Ten pierwszy parametr określa z jaką częstotliwością są wyświetlane kolejne klatki. Natomiast drugi parametr mówi o tym jak często są tworzone nowe obrazy. Wartości obu tych parametrów nie muszą być takie same.
Częstotliwość wyświetlania, tak jak to było już omawiane wcześniej, powinna być na tyle duża żeby nie pojawiał się efekt migotania. Natomiast częstotliwość tworzenia nowych klatek powinna być taka żeby zapewnić wrażenie ciągłości zmian zachodzących w scenie. Okazuje się, że przeciętny obserwator akceptuje znacznie mniejsze częstotliwości wyświetlania kolejnych obrazów niż to ma miejsce w przypadku efektu migotania. Akceptowalny ruch można uzyskać już przy wyświetlaniu kilku czy kilkunastu obrazów na sekundę. Przypomnijmy, że w kinie wyświetla się 24 klatki na sekundę. Stąd też, jeżeli system nie jest w stanie obliczać nowych obrazów tak szybko, żeby można je było wyświetlać z przyjętą częstotliwością odświeżania ekranu stosuje się rozwiązanie polegające na tym, że jeden obraz jest wyświetlany na przykład w dwóch albo w trzech kolejnych ramkach. Inne rozwiązanie polega na tym, że sekwencja klatek tworzących animację jest tworzona off-line i można ją wyświetlać z wymaganą częstotliwością.
Rozróżnia się animację wspomaganą komputerem i animację tworzoną komputerowo. W tym pierwszym przypadku chodzi o komputerową realizację klasycznego procesu animacji. W drugim przypadku animator pracuje w syntetycznym trójwymiarowym środowisku i określa ruch zarówno obserwatora (kamery) jak i obiektów 3D.
Wiele początkowych systemów animacji komputerowej działało na podobnej zasadzie jak w klasycznej animacji, kiedy to główny animator rysował ramki kluczowe dla animowanej sekwencji a asystenci rysowali na tej podstawie ramki pośrednie. W animacji komputerowej ramki pośrednie są wyznaczane automatycznie za pomocą odpowiedniej procedury, najczęściej interpolacji.
Na rysunku XIII.1 pokazano przykład prostej interpolacji między dwoma figurami (trójkątami). Najpierw łączy się odcinkami odpowiadające sobie punkty (wierzchołki) obu figur. Następnie wyznacza się metodą interpolacji położenia punktów dla klatek pośrednich. Dla uproszczenia, na rysunku XIII.1 pokazano tylko jedną klatkę pośrednią K3 leżącą w połowie drogi między klatkami K1 i K5.
![]() |
Rys. XIII.1. Przykład wyznaczania klatki pośredniej
Problem trochę komplikuje się kiedy nie ma pełnej odpowiedniości między punktami w obu wyjściowych ramkach kluczowych. Wtedy trzeba wprowadzić punkty pomocnicze, tak żeby uzyskać pełny zestaw par punktów. Przykład postępowania jest pokazany na rysunku XIII.2.
![]() |
Rys. XIII.2. Przykład wprowadzenie pomocniczego punktu P dla potrzeb wyznaczenia klatki pośredniej
W powyższych przykładach pokazano najprostszy przypadek, kiedy poszczególne punkty przemieszczają się po odcinkach i w dodatku ze stałą prędkością, co w efekcie pozwalało stosować zwykłą interpolację liniową pomiędzy poszczególnymi parami punktów. W bardziej złożonych problemach poszczególne punkty mogą się przemieszczać po dowolnych liniach (ścieżkach), i w dodatku różnych dla poszczególnych punktów. Zmienna może być również prędkość przemieszczania się punktów po tych ścieżkach. Na przykład, można określić, że obiekt, który w ramce K1 jest w jakimś położeniu, powinien do ramki K10 przyspieszać, potem utrzymywać stałą prędkość do ramki K20 a następnie zwalniać do ramki K30 kiedy znajdzie się w końcowym położeniu. Możliwe jest również wprowadzanie przestojów w poruszaniu się po krzywej.
W takich przypadkach określenie parametrów dla klatek pośrednich komplikuje się i z reguły wymaga stosowania odpowiednich narzędzi (programów) wspomagających, które pozwalają na przykład opisywać zmiany parametrów proceduralnie albo za pomocą określania odpowiednich reguł i ograniczeń. Zmiany te, podkreślmy raz jeszcze, mogą dotyczyć nie tylko zmian położenia ale również zmian kształtu czy wyglądu w funkcji czasu.
W animacji często istotne jest również określenie orientacji obiektu. Dotyczy to na przykład sytuacji kiedy obserwator (kamera) porusza się po pewnym torze krzywoliniowym i należy zapewnić to, żeby kierunek patrzenia był zawsze zgodny z kierunkiem przemieszczania się. W innej sytuacji może być istotne, żeby kierunek patrzenia obserwatora poruszającego się po określonym torze zawsze przechodził prze ustalony punkt.
Animacji mogą podlegać obiekty, których zachowanie musi być zgodne z prawami fizyki. Naturalnie w takich przypadkach należy korzystać z praw fizyki. Niemniej, niejednokrotnie wiąże się to ze złożonymi i czasochłonnymi obliczeniami. Dlatego też często korzysta się z obliczeń przybliżonych, kierując się zasadą, dość powszechnie stosowaną w grafice komputerowej, że liczy się końcowy efekt wizualny, natomiast to jak został on osiągnięty nie jest sprawą krytyczną. Oczywiście, mimo stosowania uproszczonych obliczeń, należy przestrzegać zasady, że efekt końcowy powinien być zgodny z intuicją obserwatora, a więc niesprzeczny z tym co spotyka się w rzeczywistości.
następny punkt » |