Animacje Pyłu w Unity

Trochę czasu minęło od ostatniej aktualizacji ale to nie znaczy iż nic się nie dzieje…

Raz że miałem sporo pracy ostatnio i nie mogłem zbytnio Pyłowi czasu poświęcać a dwa miałem trudną rzecz do zrobienia – przenieść obiekty i ich animacje do Unity. Jako iż Unity bazuje na standardowych formatach znanych narzędzi to rozejrzałem się którego formatu użyć. Po krótkiej analizie wyszło iż w zasadzie tylko Autodesk udostępnia porządne SDK do swojego formatu – FBX. Zatem wybrałem ten format.

Niestety SDK do FBX nie jest fajne – zbyt skomplikowane interfejsy klas, zbyt przekombinowany model obiektowy i niezbyt jasna dokumentacja. Trochę więc czasu zajęło mi zrozumienie jak to działa. Poza tym pojawił się inny problem…

Nie dysponuje materiałami źródłowymi dla animacji obiektów w Pył – mam tylko dane użyte w grze. A te są już mocno przekształcone dla celów optymalizacji szybkości i oszczędności pamięci (tak tak – to były czasy gdy 640kb miało wszystkim wystarczyć 🙂 ). Animacje w Pyle pierwotnie były oparte są o ramki kluczowe – (określone pozycje postaci), oraz interpolacje b-splinami pomiędzy tymi ramkami. Tzn. jeśli pozy postaci są ułożone przez animatora np. co sekundę to pomiędzy tymi pozami trzeba jakoś ruch interpolować pomiędzy pozycją A a pozycją B – np. za pomocą krzywych zwanych b-splinami. Niestety obliczanie takich krzywych jest trochę złożone więc w Pyle było to zrobione w narzędziach zewnętrznych i grze animacje były w postaci ramek co 0,1 sekundy by nie trzeba było nic liczyć.

Ale to nie był duży problem – ważniejsze było to iż animacje w narzędziach 3D oparte są, o kąty eulera – yaw, pich i roll. Czyli obrót w lewo prawo w pionie, unoszenie w górę i w dól oraz obracanie wokół poziomej osi. Jest to po prostu wygodne dla animatora bo te ruchy są łatwe do wyobrażenia.

W Pyle, z racji ograniczenia obliczeń, te kąty były od razu dla każdej ramki animacji przekształcone do macierzy transformacji. I teraz, by uzyskać animacje w formacie FBX trzeba było te kąty odtworzyć. Są oczywiście do tego opracowane wyliczenia, jednakże z racji niestandardowego układu współrzędnych w Pyle, musiałem te wzory nieco przekształcać. Do tego nie da się niestety odtworzyć kątów z macierzy dla wszystkich pozycji obrotu (albo inaczej – da się lecz wyliczenia dają kilka rozwiązań i nie wiadomo – automatycznie – które jest poprawne). Tym samym animacje ciągle mają pewne błędy – raczej do skorygowania ręcznie lub poprzez implementacje własnego kodu animacji w Unity (by korzystać od razu z macierzy z Pyłu a nie z wyznaczonych kątów eulera). Zobaczymy jak będzie.

Ważne że się udało i mam wszystkie materiały Pyłu w formatach czytelnych dla Unity. A do tego animatorzy mogą dowolnie teraz poprawić jakość obiektów z gry 🙂

Teraz czas na głębsze wejście w Unity.

Poniżej animacje dwóch typów postaci w Unity, po konwersji – tzw. “GUS” – z pierwszego etapu gry, oraz “Technik” z etapów późniejszych.

 

 

Advertisements

2 thoughts on “Animacje Pyłu w Unity

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s