Autor Wątek: Animacja postaci i fizyka - jak to się odbywa  (Przeczytany 1632 razy)

Offline krzysiek9394

  • Użytkownik

# Grudzień 04, 2009, 22:42:31
Jak odbywa się animacja postaci z fizyką? Np. klikamy klawisz Up i uruchamia sie animacja Run.anim postaci która po dwóch sek. chodu przechodzi w bieg. A co zrobić gdy podczas biegu/chodu gracz a) wciśnie klawisz skoku (i co ma być po lądowaniu) b) wciśnie klawisz skoku i w locie klawisz Down (żeby postać sie odwróciła czyli po upadku nie będzie sie raczej poruszać lub będzie szła, i co ma być po lądowaniu). Czyli krótko mówiąc jak zrobić animację chodu/biegu, skoku tak żeby podpięte pod silnik fizyki (np. Newton albo Bullet) chodziło poprawnie i zgodnie z prawami fizyki? Jak to wszytko złożyć do kupy?

Offline Mr. Spam

  • Miłośnik przetworów mięsnych

Offline yarpen

  • Użytkownik

# Grudzień 04, 2009, 23:08:45
Jezeli chcesz miec animacje zgrana z fizyka, to animacje musza byc 'w miejscu', czyli skok to glownie jakies machanie rekoma, a cala kontrola lotu idzie przez fizyke. W momencie kolizji z podlozem odgrywasz ladowanie. W wiekszosci nowych silnikow do definicji przejsc miedzy animacjami stosuja sie graf animacji (znajduje sie w konkretnym stanie i odpowiada na impulsy. Czyli np. stan 'jump' posiada przejscie do stanu 'landwalk'/'landrun' reagujacy na odpowiednie impulsy).

Offline Kos

  • Użytkownik
    • kos.gd

# Grudzień 04, 2009, 23:13:54
Np.:

1) Podzielić animacje na sekwencje: stanie, chód, bieg, ruszanie, zatrzymywanie się, skok, lot, lądowanie...
2) Opisać sekwencję animowaną w danej chwili czasu jako funkcję poprzedniej sekwencji, aktualnego stanu wejścia gracza i aktualnej sytuacji fizycznej postaci (prędkość, kontakt z podłożem, etc), czyli sformułować reguły typu "JEŚLI postać ma kontakt z podłożem ORAZ postać porusza się w poziomie ORAZ gracz wciska klawisz ruchu do przodu TO ustaw sekwencję na chód".
3) Ew. uzależnić prędkość niektórych sekwencji od fizyki (np. im szybciej gracz idzie, tym szybciej sekwencje "chód" lub "bieg" mają być animowane).
4) Ew. zapewnić jakiś mechanizm przejścia między animacjami (choć to w sumie podchodzi pod punkt 2).
5) Zaprogramować :)

Edit:
@yarpen - graf animacji faktycznie brzmi na coś bardziej zrozumiałego (czyt. wydajnego w tworzeniu) niż szereg zasad :)

Offline Krolik

  • Użytkownik

# Grudzień 04, 2009, 23:16:12
Jak jest zrobiona animacja np. wstawania w przypadku gdy np. biegnacy przeciwnik zostaje postrzelony upada, jego poza jest zawsze inna.

Offline Furry

  • Użytkownik
    • DevBlog

# Grudzień 04, 2009, 23:18:43
zazwyczaj to jest po prostu upadek w przód bądź tył z jakimś lekkim obróceniem(czyli 2 animacje)

Offline Kos

  • Użytkownik
    • kos.gd

# Grudzień 04, 2009, 23:21:42
Jak jest zrobiona animacja np. wstawania w przypadku gdy np. biegnacy przeciwnik zostaje postrzelony upada, jego poza jest zawsze inna.

Dobre pytanie (bo to pytanie, tak?) - masz na myśli sytuację, gdy przeciwnik upada jakimś ragdollem do losowej pozycji, a wstać ma za pomocą sekwencji? Hm, można chyba byłoby zrobić zwykłą (szybką) interpolację do klatki "leży na plecach" lub "leży na brzuchu" (da się raczej rozpoznać, jak upadł) i z niej rozpocząć predefiniowaną sekwencję wstawania.

Offline Krolik

  • Użytkownik

# Grudzień 04, 2009, 23:44:00
Tak upadek ragdollem ale na interpolacje to nie wyglądała.

Offline Nazar

  • Użytkownik

# Grudzień 05, 2009, 00:18:56
Można sobie też obejrzeć, jak działa Euphoria:
http://www.youtube.com/watch?v=JXXOY2VmWB4

Offline Mertruve

  • Użytkownik

# Grudzień 05, 2009, 14:44:34
Ale euphoria nie korzysta z animacji jako takich - mógłby co najwyżej kupić od nich silnik, a jak dobrze zrozumiałem temat, chce skumać, jak to się robi tradycyjnie ;)

Cytuj
Tak upadek ragdollem ale na interpolacje to nie wyglądała.
W wielu grach (Assassin's Creed na przykład) możesz zobaczyć, jak przeciwnik przewraca się ragdollem, a potem przez chwilę ma nienaturalnie wyglądające przejście do pozycji wyjściowej animacji wstawania.