Ramlande Ragdoll

Förutom att (tydligen) vara en kattras så brukar ragdoll vara namnet för en fysiksimulerad datorspelskaraktär. Namnet är rätt logiskt för den som sett dem i aktion; de beter sig precis som livlösa trasdockor. Faktum är att även om en spelkaraktär kan ha alla möjliga rörelser så är det oftast bara de “livlösa” — fall etc — som simuleras i fysikalisk mening. I regel sker en övergång mellan dessa två lägen: en spelkaraktär som t ex springer gör så enligt en förutbestämd animering. När karaktären så “dör” övergår denna i en simulering, som i sin tur beräknar hur karaktären faller och interagerar med omgivningen.

Eftersom simuleringen är dynamisk så kan man aldrig förutsäga exakt vad som ska hända. Alla som spelat spel med ragdoll-fysik vet att det kan uppstå rätt komiska kroppsställningar när en spelkaraktär faller ihop. Det kan även hända att objekt kläms utanför spelvärldens geometri eller att lemmar fortsätter röra på sig.

Svårigheterna med att göra bra ragdolls täcker flera discipliner, från karaktärsmodellering till animering. Ur ett matematiskt perspektiv handlar det primärt om följande tre problem:

  • Flerkroppssystem: Varje kroppsdel beror på alla andra kroppsdelar. Om en fot slår i marken så kommer det att påverka huvudets position och hastighet, trots att de inte har direkt kontakt med varandra. Detta ställer krav på programmets förmåga att lösa ekvationssystem. Fler kroppsdelar innebär större system, som är svårare att lösa.
  • Stabila leder: Kroppsdelarna sitter ihop med hjälp av leder eller joints (vrist, knä, höft etc). En bra led ser till att kroppsdelarna som den ansvarar för (vristen ansvarar för foten och vaden osv) hålls samman ordentligt utan glapp och oscillationer.
  • Vinkelbegränsningar: Varje led måste dessutom se till att vinkeln mellan dess två kroppsdelar håller sig inom ett visst tillåtet intervall. Knäleden tillåter t ex en vridning på ca 150 grader mellan vaden och låret.

Nedan finns en ragdoll-simulering i mitt program Tau2d. Den ramlande stackaren består av 15 kroppsdelar och 16 leder.

Advertisements

4 thoughts on “Ramlande Ragdoll

  1. Coolt. Har du funderat något på att göra ett spel av det där? Till exempel ett enkelt 2d-spel med fysiksimulering som främsta ingrediens?

    • Det hade varit en dröm helt klart, är ett stort fan av spel i den genren som Crayon Physics Deluxe, And Yet it Moves, World of Goo m.fl. Problemet är att jag är osäker på om jag har intresse nog för de många andra aspekter (grafisk design, ljud etc) som ett komplett spel hade innefattat…utpräglade spelkreatörer är ett sällsynt släkte. Men visst, det finns både idéer och envishet så vem vet!? Annars får jag helt enkelt rekrytera dig när du är klar med ditt eget spel :)

  2. Haha, när jag väl är klar med mitt spel kommer jag att bli stormrik ju, och aldrig mer behöva jobba för någon annan =)
    Men du kanske kan köpa in grafik och ljud, eller göra det opensource och hoppas på att frivilliga dyker upp.

    Intressant att se rena experiment som det här också iofs. Keep it up!

  3. Då får det bli du som rekryterar mig istället då :P
    Tack för tipsen. Programmet är just nu en del av mitt exjobb som jag tänkte se till att bli klar med först, så får vi se vad som händer sedan. Tills dess blir det nog fortsatt lek & meck, som nu med trasdockan. Programmet är så pass flexibelt och stabilt nu att att man faktiskt kan göra en hel del. Och med de suveräna high-end fysikmotorerna som finns (Havok, Bullet, ODE m fl) så är det omöjligt att inte inspireras att jobba vidare…
    Lycka till du med!

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