system do animacji postaci w grach komputerowych



Podobne dokumenty
Wykład 12. Animacja postaci

Symulacje komputerowe

Techniki animacji komputerowej

Referat Pracy Dyplomowej

Transformacja współrzędnych geodezyjnych mapy w programie GEOPLAN

Rysunek 1: Okno timeline wykorzystywane do tworzenia animacji.

Falowniki Wektorowe Rexroth Fv Parametryzacja

Brain Game. Wstęp. Scratch

XQTav - reprezentacja diagramów przepływu prac w formacie SCUFL przy pomocy XQuery

Plan wykładu. Akcelerator 3D Potok graficzny

Aleksandra Zając. Raport. Blender. Pokemon: Eevee

Autodesk 3D Studio MAX Animacja komputerowa i praca kamery

Oświetlenie. Modelowanie oświetlenia sceny 3D. Algorytmy cieniowania.

Program V-SIM tworzenie plików video z przebiegu symulacji

Gry Komputerowe - laboratorium 2. Kamera FPP / TPP. mgr inż. Michał Chwesiuk 1/11. Szczecin, r

Kompletny system multimedialny, łatwe w użyciu a jednocześnie bogate w oferowane funkcje narzędzie wspomagające oprawę liturgii i pracę duszpasterską

Sieciowe Technologie Mobilne. Laboratorium 2

Grafika Komputerowa Materiały Laboratoryjne

Misja#3. Robimy film animowany.

Manipulatory i roboty mobilne AR S1 semestr 5

Uniwersytet Zielonogórski. Kurs: Autodesk 3D Studio MAX Komputerowa grafika 3D. 3dsmax Tworzenie animacji 3D.

Metody animacji komputerowych

Lista 0. Kamil Matuszewski 1 marca 2016

Rok akademicki: 2017/2018 Kod: JFM s Punkty ECTS: 7. Poziom studiów: Studia I stopnia Forma i tryb studiów: Stacjonarne

Nowości Autodesk Simulation Włodzimierz Dżygadło PROCAD SA

Pętle Gry. rozwiązania dla gier realtime. Jan Darowski. 14 maja 2014

Programowanie Współbieżne. Algorytmy

Autodesk 3D Studio MAX Teksturowanie modeli 3D

ALGEBRA Z GEOMETRIĄ MACIERZE ODWZOROWAŃ LINIOWYCH

1. Od czego zacząć? - Instalacja środowiska pracy

Rozdział 7 ZARZĄDZANIE PROJEKTAMI

Wahadło. Celem ćwiczenia jest zapoznanie się z zasadą dokonywania wideopomiarów w systemie Coach 6 oraz obserwacja modelu wahadła matematycznego.

Modelowanie i wstęp do druku 3D Wykład 1. Robert Banasiak

tel.: (+48) mail.

INTERAKTYWNA KOMUNIKACJA WIZUALNA ANIMACJA

Modelowanie terenu na bazie symulacji erozji z wykorzystaniem deformowalnych wokseli

Przykłady grafów. Graf prosty, to graf bez pętli i bez krawędzi wielokrotnych.

Pierwsze komputery, np. ENIAC w 1946r. Obliczenia dotyczyły obiektów: o bardzo prostych geometriach (najczęściej modelowanych jako jednowymiarowe)

Praca dyplomowa magisterska

Projektowanie Scalonych Systemów Wbudowanych VERILOG

5.4. Efekty specjalne

Wyświetlanie terenu. Clipmapy geometrii

Gry Komputerowe Laboratorium 4. Teksturowanie Kolizje obiektów z otoczeniem. mgr inż. Michał Chwesiuk 1/29. Szczecin, r

Zad. 3: Układ równań liniowych

1 Zrozumieć Flasha... 1 Co można zrobić za pomocą Flasha?... 2 Tworzenie obrazków do strony 3 Animowanie witryny 4 Tworzenie filmów

Technologie Informacyjne

Przygotowanie grafiki 3D do gier komputerowych

Próby techniczne do naboru do klas sportowych o profilu koszykówka (Szkoła Podstawowa, Liceum)

Rozszerzony konspekt preskryptu do przedmiotu Podstawy Robotyki

Ping-Pong. Gra dla dwóch graczy.

Gry Komputerowe Interaktywna kamera FPP

Grafika 2D. Animacja Zmiany Kształtu. opracowanie: Jacek Kęsik

Interpolacja funkcji

Ćwiczenie numer 4 JESS PRZYKŁADOWY SYSTEM EKSPERTOWY.

Politechnika Poznańska, Instytut Informatyki, SUM-TWO

Podstawą w systemie dwójkowym jest liczba 2 a w systemie dziesiętnym liczba 10.

Zapis liczb binarnych ze znakiem

PLAN SZKOLEŃ Femap. Nasza oferta: Solid Edge najefektywniejszy dostępny obecnie na rynku system CAD klasy mid-range,

Liczba godzin. Poziom wymagań ponadpodstawowy

Programowanie w Scratch robot mbot

Programowanie obiektowe

Programowanie gry Smerf w labiryncie

Pierwsza strona internetowa

4. Projekt Bazy Danych

PLAN SZKOLEŃ FEMAP. Nasza oferta: Solid Edge najefektywniejszy dostępny obecnie na rynku system CAD klasy mid-range,

3. Macierze i Układy Równań Liniowych

Obliczenia Naukowe. Wykład 12: Zagadnienia na egzamin. Bartek Wilczyński

1. Eliminuje się ze zbioru potencjalnych zmiennych te zmienne dla których korelacja ze zmienną objaśnianą jest mniejsza od krytycznej:

Sieciowe Technologie Mobilne. Laboratorium 4

Podstawy technologii WWW

Podstawy programowania, Poniedziałek , 8-10 Projekt, część 1

Załącznik KARTA PRZEDMIOTU. KARTA PRZEDMIOTU Wydział Automatyki, Elektroniki i Informatyki, Rok akademicki: 2009/2010 KOMPUTEROWA

Implementacja sieci neuronowych na karcie graficznej. Waldemar Pawlaszek

GUI - projektowanie interfejsów

Programista samouk : profesjonalny przewodnik do samodzielnej nauki kodowania / Cory Althoff. Gliwice, copyright Spis treści

TITAN 2.0. Analiza czasowo- przestrzenna. Opis zmian wprowadzonych do wersji 2.0 w odniesieniu do wersji 1.0

1 Moduł Inteligentnego Głośnika

Pogromcy duchów. Wstęp. Krok 1: Stwórz latającego ducha

Programowanie i techniki algorytmiczne

Skalowalność obliczeń równoległych. Krzysztof Banaś Obliczenia Wysokiej Wydajności 1

GLKit. Wykład 10. Programowanie aplikacji mobilnych na urządzenia Apple (IOS i ObjectiveC) #import "Fraction.h" #import <stdio.h>

1 Moduł Inteligentnego Głośnika 3

Spadające jabłuszka. licencja CC-BY-SA Uznanie autorstwa Na tych samych warunkach 3.0 Polska. Strona 51

Rozwiązywanie układów równań liniowych

Technologie informacyjne lab. 3

SKĄD WYWODZI SIĘ NAZWA PROGRAMU?

do drukowania tekstu służy funkcja echo <?php echo "hello world!";?> jeżeli użyjemy jej kilka razy: <?php

DZIAŁ 1. STATYSTYKA DZIAŁ 2. FUNKCJE

Poszukiwanie formy. 1) Dopuszczalne przemieszczenie pionowe dla kombinacji SGU Ciężar własny + L1 wynosi 40mm (1/500 rozpiętości)

Katalog książek cz. 3: Web Service

Wykonanie modelu 3D w Blenderze oraz eksport do formatu obsługiwanego przez silnik Panda 3D

Obszary diagnostyczne w przygotowaniu technicznym

Ekonometria. Regresja liniowa, współczynnik zmienności, współczynnik korelacji liniowej, współczynnik korelacji wielorakiej

Próby techniczne do naboru do klas sportowych o profilu koszykówka (Gimnazjum, Liceum)

SZKOŁA PODSTAWOWA MISTRZOSTWA SPORTOWEGO RESOVIA RZESZÓW. Testy sprawnościowe do. Szkoły Podstawowej Mistrzostwa Sportowego.

Egzamin z Metod Numerycznych ZSI, Egzamin, Gr. A

Grafika 2D. Animacja - wstęp. Wykład obejmuje podstawowe pojęcia związane z animacja komputerową. opracowanie: Jacek Kęsik

Reprezentacje grafów nieskierowanych Reprezentacje grafów skierowanych. Wykład 2. Reprezentacja komputerowa grafów

Zad. 5: Układ równań liniowych liczb zespolonych

Platfomry programistyczne:.net i Jawa L ABORATORIUM 3: HACKATHON - JTTT

Transkrypt:

system do animacji postaci w grach komputerowych Rafał Rudnicki Vertex 2010

plan prezentacji ważne pytania cele systemu animacji obliczanie klatki interpolacja graf animacji zapętlanie animacji przejścia wyzwalacze wdrażanie animacji i przykładowe rozwiązanie

ważne pytania czy będziemy korzystać z motion capture? czy tylko animacje tworzone ręcznie? czy interesuje nas fizyka animacji / efekty IK? czy postać będzie składała się z kilku siatek? czy chcemy mieć jej bounding-boxa i czy ma być to AABB czy OBB? czy chcemy mieć ładne przejścia między animacjami? czy sami je zrobimy? czy chcemy mieć animacje proceduralne (np. postać chodzi ale mierzy ręką w stronę wroga)?

cele systemu animacji animacja oparta o animację kości oddzielenie wyglądu siatki od jej animacji łatwe dodawanie obsługi animacji postaci do istniejącego kodu gry 3D oddzielenie animacji od logiki animacji umieszczene animacji i logiki animacji w zasobach tak, by unikać potrzeby rekompilacji kodu gry proste sterowanie animacją Rafał Rudnicki Vertex 2010

cele systemu animacji (2) płynna animacja (maksymalne) wykorzystanie GPU

animacja animowane modele = model + animacja dla podejścia mesh skinning (w tym SSD) kluczowy jest szkielet szkielet = pozycje i orientacje kości + hierarhia kości

obliczanie klatki animacji w pliku - jak trzymać kości? w przestrzeni rodzica w przestrzeni modelu przestrzeń rodzica: lepsza interpolacja międzyklatkowa w przypadku łańcuchów kości (uwzględnia obrót rodzica) szkelet przetwarzany BFS/DFS od korzenia słabe zrównoleglanie przestrzeń modelu można przetwarzać równolegle nie umożliwia efektów typu IK liczonych realtime jeżeli nie potrzebne nam IK to oszczędzimy sporo mocy

obliczanie klatki animacji (2) skąd pochodzą dane: z pliku z modułu fizyki / AI z mixu różnych źródeł liczy się aby co klatę otrzymać zestaw macierzy dobry system animacji nie rysuje niczego zestaw końcowych macierzy (+ inne dane) wystarcza = przenośność i elastyczność

obliczanie klatki animacji (3) geometria dopasowuje się do szkieletu SSD (Skeletal Subspace Deformation) uwaga na błędy na łokciu / kolanie

obliczanie klatki animacji (4) w praktyce wystarczają max. 4 kości na wierzchołek (tak zrobił ID Software w MD5) co bardzo cieszy GPU animacja dzieje się w Vertex Shaderze np. GLSL: skinned_position += weights.x * (bonematrices[int(matrixindices.x)] * gl_vertex); skinned_position += weights.y * (bonematrices[int(matrixindices.y)] * gl_vertex);...

interpolacja klatek dane animacji mają skończoną dokładność mając dane dot. klatki m i n musimy: obliczyć chwile t n i t m odpowiadające tym klatkom obliczyć w jakim stopniu (0 1) zmiksować dane potrzeba przechowywać dane m i n wraz ze zmianą klatki obliczać tylko te, które nie są jeszcze wyliczone/które się zmieniły być może m i n będą dotyczyć różnych animacji Rafał Rudnicki Vertex 2010

0,00 0,10 0,20 0,30 0,40 0,50 0,60 0,70 0,80 0,90 1,00 1,10 1,20 1,30 1,40 1,50 1,60 1,70 1,80 1,90 2,00 2,10 2,20 2,30 2,40 2,50 2,61 2,70 2,80 2,91 3,00 3,11 3,21 3,30 3,41 3,51 3,61 3,71 3,80 3,91 4,01 4,11 4,21 4,31 4,41 4,51 4,61 4,71 4,81 4,91 interpolacja klatek (2) 6 łączna różnica położeń i kątów kości - jakość pierwotna; 25 fps 5 4 dpos dort błędne zapętlenia animacji 3 2 1 0

0,02 0,10 0,20 0,30 0,41 0,52 0,61 0,71 0,82 0,91 1,02 1,12 1,21 1,32 1,42 1,52 1,62 1,72 1,82 1,92 2,02 2,12 2,22 2,32 2,42 2,52 2,62 2,72 2,82 2,92 3,02 3,12 3,22 3,32 3,42 3,52 3,62 3,72 3,82 3,92 4,02 4,12 4,22 4,32 4,42 4,52 4,62 4,72 4,82 4,92 interpolacja klatek (3) 6 łączna różnica położeń i kątów kości - jakość 1/8; 3,125 fps 5 dpos dort błędne zapętlenie danych 4 3 2 1 0

0,00 0,10 0,20 0,30 0,40 0,50 0,60 0,70 0,80 0,90 1,00 1,10 1,20 1,30 1,40 1,50 1,61 1,70 1,80 1,91 2,00 2,11 2,21 2,30 2,41 2,51 2,61 2,71 2,80 2,91 3,01 3,11 3,21 3,31 3,41 3,51 3,61 3,71 3,81 3,91 4,01 4,11 4,21 4,31 4,41 4,51 4,61 4,71 4,81 4,91 interpolacja klatek (4) 6 łączna różnica położeń i kątów kości - jakość 1/8; 3,125 fps; interpolacja 5 4 dpos dort błędne zapętlenia animacji 3 2 1 0

interpolacja klatek (5) efekt interpolacji międzyklatkowej: płynniej mniejsza ilość danych (do 8x niezauważalna) mniejsza szczegółowość animacji

interpolacja klatek (6) macierze czy inne reprezentacje? (w SSD) przed wysłaniem należy przemnożyć przez odwrotną macierz kości w rest pose

interpolacja klatek (7) macierze: 3x4 lub 4x4 dobre dla GPU słabo się intepolują (liniowo wzór jest skomplikowany, w praktyce nie da się bez konwersji na inne typy) wektor pozycji + wektor Eulerowski / axis-angle: dobre dla GPU słabo interpolowane (błędy) wektor + kwaternion przed wysłaniem do GPU należy przerobić na macierz bardzo dobrze interpolowane (lerp + slerp)

interpolacja klatek (8) pozycja interpolowana liniowo (lerp, mix) zachowanie prędkości liniowej orientacja interpolowana sferycznie (slerp, mix) zachowanie prędkości kątowej

grafy animacji typowa gra akcji: stanie, bieg do przodu, odskok do tyłu, chodzenie do przodu, skakanie, pochylenie się, chodzenie pochylonym, krok w prawo / lewo, atak bronią palną, atak bronią krótką, zmiana broni, radość po zabiciu, przeżywanie bólu, śmierć dla gracza liczy się zarówno jakość animacji jak i czas trwania przejścia wojny o to, by w FPP przejścia były krótkie zmiana broni w Quake III to 0.6s

grafy animacji (2) prosty przykład: ile trwa oryginalna animacja walk/stand_cycle? ile może trwać?

zapętlanie animacji (cykle) w zależności od źródła danych: jeżeli animację tworzymy ręcznie to mamy szansę ją idelanie zapętlić jeżeli źródłem jest motion capture to nie tak samo przy animacjach proceduralnych

zapętlanie animacji (cykle) (2) rozwiązanie self fading (wygładzanie) musimy je robić od pierwszego przejścia przez koniec pętli (podczas pierwszego przejścia przez początek pętli jest dobrze) parametr - długość

0,00 0,10 0,20 0,30 0,40 0,50 0,60 0,70 0,80 0,90 1,00 1,10 1,20 1,30 1,40 1,50 1,60 1,70 1,80 1,90 2,00 2,10 2,20 2,30 2,40 2,50 2,61 2,70 2,80 2,91 3,00 3,11 3,21 3,30 3,41 3,51 3,61 3,71 3,80 3,91 4,01 4,11 4,21 4,31 4,41 4,51 4,61 4,71 4,81 4,91 zapętlanie animacji (cykle) (3) 6 łączna różnica położeń i kątów kości - jakość 1/8; 3,125 fps; interpolacja; wygładzanie 3 klatki 5 4 dpos dort 3 wygładzone zapętlenia animacji 2 1 0

przejścia gracz naciska klawisz (wyzwalacz) animacja dochodzi do pewnego momentu (może być natychmiast) (opcjonalnie) odgrywane jest przejście do nowego stanu animacji odtwarzana jest nowa animacja

przejścia (2) automatyczne wyznaczanie przejść w systemach opartych o motion capture skomplikowane.. ;/

przejścia (3) problem: ile to trwa? czy jest grywalne? po podzieleniu cyklu na kilka części można szybciej dojść do przejścia np. prawa-lewa noga, lewa-prawa noga dla chodzenia idealnie pozwolić na natychmiastowe odtwarzanie przejścia ale w wielu przypadkach źle to wygląda skomplikowanie (ilość animacji/przejść) ~ 1/jakość

przejścia (4) problem 2: nie da się natychmiast przejść z animacji leżenia do animacji biegania problem 3: nie da się z biegu natychmiast zatrzymać

przejścia (5) cześć przejść można wyliczyć, część trzeba samemu stworzyć dla animacji mocap można je łatwo zdobyć efekt: przejść jest duuużo animacje cykli muszą być porozdzielane na wiele kawałków należy stworzyć graf legalnych przejść pomiędzy węzłami (logika animacji) ciężko to utrzymać i sporo się trzeba napracować

przejścia (6) parametry: długość (czasem definiuje początek i koniec) charakterystyka czasowa

przejścia (7) 12 łączna różnica położeń kości dla różnych funkcji przejścia - jakość 1/8; 3,125 fps 10 8 linear quad in quad out quad-inout 6 4 2 0

wyzwalacze kiedy przejść? input od gracza fizyka AI koniec animacji funkcja bool fun(void) wyzwalacz rejestracja wyzwalaczy mapa <string, callback>

wyzwalacze (2) kiedy przejść? zaraz po naciśnięciu odczekać do przejścia co jeżeli wyzwalacz został uruchomiony po idealnym momencie? przejść z mniejszą długością czekać na następny

wdrażanie animacji do gry np. Blender: stworzenie modelu / animacji być może skorzystanie z animacji mocapowych eksport do wybranych formatów (opcjonalny edytor:) stworzenie przejść stworzenie logiki przejść (grafu) silnik gry / kod gry: uaktualnianie pozy wyświetlanie

wdrażanie animacji do gry (2) przykładowy eksporter

wdrażanie animacji do gry (3) edytor

wdrażanie animacji do gry (4) psmodeldata md = loadmodeldatafromfile("ludwig.model"); model = createmodelfrommodeldata(md); psgraphdata gd = loadgraphdatafromfile("ludwig_walkrun_lowres_2.graph"); psgraph graph = creategraphfromgraphdata(gd); psanimation animation = createnullanimation(); setanimationgraph(animation, graph); setanimationsource(animation, AnimationSource::GRAPH); setanimationstartnd(animation, "walk_passing P-L"); registertransitiontrigger("keyup_a", checkkeyupa); registertransitiontrigger("keydown_a", checkkeydowna);... setanimationstate(animation, AnimationState::PLAY);

wdrażanie animacji do gry (5) // kod w pętli czasu... advanceanimation(animation, time - lasttime); updatemodel(animation, model);... // kod w funkcji wyświetlającej... glloadidentity(); drawanim(model, transformmatrix);...