Podstawy animacji komputerowej

Opis kursu:

Kurs obejmuje 15 jednostek wykładowo-laboratoryjnych, skupionych na metodach animacji poklatkowej, animacji punktu materialnego oraz animacji szkieletowej. Istotna część wykładu skupiona będzie wokół zagadnień fizycznych wspartych aspektami metod numerycznych. W efekcie słuchacz uzyska teoretyczne podstawy do konstrukcji oprogramowania animacyjnego, jak i nauczy się korzystać z narzędzi umożliwiających szybką produkcję scen animowanych. Praktycznym celem kursu jest przyswojenie przez uczestników zaprezentowanego materiału teoretycznego na poziome pozwalającym zaimplementować dane zagadnienie w dowolnym języku programowania. Ponadto kurs wprowadza podstawową wiedzę z dwóch potrzebnych tu dziedzin: wizualizacja ruchu w 3D będzie realizowana przez bibliotekę OpenGL (nie jest to pełny kurs podstaw OpenGL), natomiast reprezentacja ścieżek ruchu oraz (w mniejszym stopniu ze względu na ograniczenia czasowe) reprezentacja bardziej skomplikowanej geometrii powierzchni oparta będzie na koncepcjach modelowania parametrycznego.

Zarys tematyczny kursu:

W skrócie materiał kursu przedstawia się następująco:

  1. Wprowadzenie do OpenGL:Potok graficzny OpenGL i jego związek z procesorami CPU oraz GPU, język GLSL.
  2. Reprezentacje przekształceń i ich uwarunkowania numeryczne: przekształcenia macierzowe i błędy zaokrągleń, ortonormalizacja podmacierzy obrotu, reprezentacja położeń kątowych i punkty osobliwe (r. z ustalonymi osiami, katy Eulera, kąt i oś obrotu, kwaterniony, r. wykładnicza), interpolacja ruchu wzdłuż krzywej (całkowanie długości łuku), interpolacja położeń kątowych (interpolacja kwaternionów), interpolacja wzdłuż ścieżki (układ Freneta, wygładzanie ścieżki, wyznaczanie ścieżki na powierzchni).
  3. Animacja punktu materialnego: równanie różniczkowe ruchu punktu materialnego i metody jego rozwiązania (m.in. Euler i Verlet, Runge-Kutta), układy punktów materialnych
  4. Animacja oparta na interpolacji: systemy oparte na ramkach kluczowych, języki animacji, interpolacja kształtów trójwymiarowych, morfing
  5. Kolizje układów punktów materialnych: zderzenia sprężyste (wyprowadzenie wzorów na prędkość po zderzeniu w przykładowej sytuacji), model animacji płótna przez układ sprężyn - czynniki tłumiące, kolizje punkt-wielokąt, układy cząstek
  6. Animacja modeli hierarchicznych: notacja Denavita-Hartenberga, sformułowanie zagadnienia kinematyki odwrotnej w języku położeń (prosty przykład obliczeniowy), zagadnienie kinematyki odwrotnej w języku prędkości (Jakobian), uogólniony operator odwrotny dla macierzy, metody numeryczne rozwiązywania równania wymagającego odwracania macierzy niekwadratowej, Animacja ruchu człowieka - zastosowanie kinematyki odwrotnej, warstwowy model postaci (szkielet (artykulacja), animacja chodu.

Wymagania:

  1. Analiza matematyczna, Algebra liniowa, Umiejętność programowania w jednym z języków: C++/C#/Java/Python – preferowany c++

Literatura:

  1. J. de Vries, Learn OpenGL: Learn modern OpenGL graphics programming in a step-by-step fashion, wersja online: https://learnopengl.com/
  2. M.Dunsky, G.Szauer, C++ Game Animation Programming - Learn modern animation techniques from theory to implementation using C++, OpenGL, and Vulkan, Pack 2023.
  3. R. Parent, Animacja komputerowa. Algorytmy i techniki, PWN 2011.
  4. A. Watt, M. Watt, Advanced Animation and Rendering Techniques, Addison-Wesley 1992.
  5. J. Matulewski, T. Dziubak, M. Sylwestrzak, R. Płoszajczak, Grafika. Fizyka. Metody numeryczne. Symulacje fizyczne z wizualizacją 3D, PWN 2010.
  6. K. Erleben, J. Sporring, K. Henriksen and H. Dohlmann, Physics Based Animation, Charles River Media 2006
  7. D.H. Eberly, Game Physics, Second Edition, Morgan Kaufmann 2010.
  8. N. Lever, Real-time 3D Character Animation with Visual C++, Focal Press 2002.
  9. E. Lengye, Mathematics for 3D Game Programming and Computer Graphics, Third Edition, Course Technology 2012.
  10. C. Ericson, Real-Time Collision Detection, Morgan Kaufmann 2005.