Spotlight: Motion Matching w/ Emotions: “Guardians of the Galaxy”

Door Glenn van Waesberghe

Op GDC dit jaar presenteerde Eidos Montreal hun workflow voor animaties voor "Guardians of the Galaxy." Ze deden dit binnen twee talks, een eerste focuste op de facial animation pipeline, en een tweede, de focus van deze blogpost, ging over het toevoegen van emotional body language bovenop locomotion. (Deze talks zitten weliswaar achter de GDC Vault paywall.)

Een van de pijlers van "Marvel's Guardians of the Galaxy" game was dat ze de speler het gevoel wilden geven dat ze echt met de Guardians op pad waren. Om dit te bereiken, en om de characters echt tot leven te brengen maken ze gebruik van veel humor tussen de verschillende characters. Om herhaling te voorkomen moesten de animators enorm veel diverse animatie content creëren, niet alleen in cinematics, maar ook tijdens gameplay. Dit soort animaties kunnen niet gescript worden, hetwelke een echte uitdaging is binnen het production budget. Kortweg: ze moesten slim omgaan met de resources die ze hadden.

Om dit te bereiken maakten ze gebruik van een nieuwe animation technique gebaseerd op Machine Learning! 

Motion Capture

Om animaties op te nemen maakten ze gebruik van zowel facial als full-body motion capture. Specifiek maakten ze gebruik van Faceware voor de facial tracking, en een Optitrack systeem voor de Full-Body capture. Ze kozen ervoor om de voiceline audio tegelijkertijd op te nemen als de facial animations, en deze dus niet "procedureel" te genereren. Elke facial animation werd uniek opgenomen.

Motion Matching

Voor Full-Body animations gebruikten ze Motion Matching, kort samengevat, in plaats van complexe animation graphs, kun je met motion matching stukjes animatie selecteren uit een motion capture dataset, en deze afspelen om het character van zijn huidige pose naar een gewenste pose te brengen. We voeren dus een soort gewenste "toekomstige" pose in het systeem in, en het selecteert dan automatisch de kandidaat die het beste overeenkomt met de input.

Voor meer over Motion Matching, zie onze webinar over de verschillende aanpakken tot Datagedreven Animatie, of, bekijk de blogpost over de volgende iteratie: Learned Motion Matching! Alternatively, zijn de GDC talks op bovenstaande slide zeker ook het bekijken waard!

Emotion Matching

Het motion matching-systeem werd uitgebreid om met emotiegegevens te kunnen werken. Bij het zoeken naar een animatieclip bevatte de queryvector zowel de toekomstige pose als de gewenste emotiedata.

Dit zorgde ervoor dat er kon worden gezocht naar een willekeurige gezichtsanimatie waarbij bijvoorbeeld de acteur een boze emotie toonde, en deze animatieclip kon worden gebruikt om expressieve dialoog tussen de personages te maken.

De originele gezichtsanimatie en de stem van de acteur, die op hetzelfde moment werden opgenomen, werden samen afgespeeld, en lichaamsgebaren werden via dit systeem toegevoegd om de emoties van het personage beter uit te drukken.

Het emotie matchingsysteem draaide "offline", omdat de animation artists de animatie-inhoud direct in de engine wilde afspelen en bewerken.

In tegenstelling tot de character locomotion, hoeft het motion matching systeem niet responsief te zijn en te matchen met de speler input. Je kunt de emotie curven en data scripten en offline afspelen.

Detecting Emotions

De dataset die gebruikt werd door het emotie matchingsysteem was een FCurve zoals te zien is op de screenshot. Deze bestaat uit verschillende sporen met de emoties van de acteur te zien in de linkerbenedenhoek.

Deze werden gemaakt door een senior animator die een face capture video bekeek en handmatig in motion builder keyframes instelde voor verschillende tracks. Je kan je voorstellen hoe lang het duurde om dit te doen... Dit was een gigantische time sink en koste veel te veel middelen.

In het begin van production deden ze dit volledig handmatig, totdat ze een soort vertical slice van de game hadden. Vanaf dan, trainden ze op basis van de handmatig geannoteerde data een machine learning systeem dat de gezichtsopname videos analyzeert voor emoties, en exporteert naar "baked" emotie curves!

Training Dataset

De "training dataset" die manueel ge-annoteerd werd is kleiner dan 1/10e van de totale facial capture dataset. In totaal werden ongeveer 23k lijnen dialoog opgenomen, goed voor 60 videos van elks ongeveer 2h30min, verdeeld over 4 acteurs. Vier emoties werden geannoteerd, "Content", "Anger", "Sad" en "Nervous" op 5 intensiteitsniveaus (0, 25, 50, 75, 100%). Er kan maar 1 emotie per keer geannoteerd worden, en daarnaast annoteerden ze ook ofdat er al dan niet gesproken werd. Annotaties werden gedaan op 5 frames/sec, goed voor 45k labels.

Om de gezichtsposes te detecteren gebruikten ze dlib, een C++ Python library dat werkt met 68 2D face landmarks. Het is snel, maar niet erg accuraat. Noemenswaardig: ze gebruiken hiervoor dus geen commercial product zoals Faceware, hetwelke wel voor de facial animations zelf gebruikt werd.

Model Accuracy

Het model wordt vaak verward tussen "Nervous" en "Anger", hetwelke logisch is aangezien ze dicht bij elkaar liggen. Het model neigt duidelijk naar "Anger", omdat die duidelijker aanwezig is, terwijl het "Sadness" veel minder voorspelt.

Om dit soort bias en overfitting te vermijden, tuneden zij hyperparameters met gebruik van "Hyper Bound", toegepast op de "Random Forest" classifier. Dit resulteert in een visualisatie waar je makkelijk kan zien welke parameters voor de beste resultaten zorgen. (volg de felle gele lijnen voor de beste parameters)

Conclusion

Kort samengevat, introduceerde Eidos Montreal een nieuwe techniek die automatisch emoties detecteert uit de gezichtsopnames, en deze gebruikt om emotie-curves te genereren, die als input voor een motion matching systeem gebruikt kunnen worden om de body language van de characters te doen passen bij de conversaties die op eender welk moment gaande zijn.

Ook noemenswaardig: ze concludeerden zelf dat machine learning een krachtige tool is voor game development, die in staat is om de workload van animators, specifiek bij repetitieve taken, te verlichten. Dit is iets waar we, uiteraard, al eventjes van overtuigd waren, maar toch mooi om het nog maar eens te horen zeggen vanuit een grote AAA studio!