Postanowiłem przyjrzeć się bliżej możliwością pakietu animacyjnego Havok, przy okazji integrując animacje i fizykę tak, aby pracowały razem. W oparciu o dokumentację i zawarte w sdk dema, udało mi się na chwilę bieżącą zakodować następiujące feature’y:
- wczytywanie animacji z formatu Havoka oraz zarządzanie nimi poprzez prostą maszynę stanów, umożliwiającą płynne przejścia między kolejnymi animacjami
- integracja z silnikiem graficznym Ogre3D; wszystkie kalkulacje animacji odbywają się w Havoku, na końcu następuje przemapowanie tych danych na szkielet modelu w Ogre
- animacje fizyczne – blendowanie animacji szkieletowych z uwzględnieniem np impulsów oddziałujących na ragdolla, będącego synchronizowanego z animacją ale też mającego na nią wpływ (np efekt postrzału w kończynę postaci, odgrywającą animację chodu)
- pełne wsparcie dla Havokowych ragdolli, upadanie w pełnej bezwładności bądź blendowane z animacją
- płynny powrót z ragdolla poprzez kilka animacji wstawania do neutralnej pozycji modelowej; w zależności od tego w jakiej pozie postać jest ułożona, używana jest animacja wstawania z leżenia na plecach bądź brzuchu
- dismemberment, czyli powszechnie lubiane „rozczłonkowywanie” postaci; w procesie tym nie zachodzi żaden podział siatki modelu wspieranego przez Ogre3d ani dublowanie elementów ragdolla, model musi być uprzednio podzielony tak, aby pasował do elementów z których składa się ragdoll
Jeśli chodzi o sam dismemberment, w planie mam połączenie tego feature’a z animacjami fizycznymi, tak aby zaprezentować uderzenie w daną cześć ciała, której rezultatem jest oderwanie kończyny. Wymaga to jednak pewnego doszlifowania.
Chciałbym również w późniejszym czasie zająć się możliwościami IK i tu głównie zależy mi na:
- kierowaniu głowy i rąk trzymających broń, tak aby pokrywało się to z obranym celem, na początek nic wielkiego, coś co można by wykorzystać przy ustawieniu kamery TPP ala Gears of War
- dopasowywaniu stóp do podłoża, a właściwie i nóg przy większych przeszkodach, jak np pokonywanie schodów