Filledukkefysikk

Fra Wikipedia, den frie encyklopedi
Gå til: navigasjon, søk
Bilde fra tidlig animasjon fra 1997, laget vha. filledukkefysikk

I en fysikkmotor i en datamaskin, er filledukkefysikk (engelsk Ragdoll Physics) en prosedyrisk animasjon som ofte blir brukt i stedet for statiske dødsanimasjoner.

Introduksjon[rediger | rediger kilde]

I tidlige videospill ble det brukt animasjoner laget manuelt for figurenes dødssekvenser. Fordelen var at dette brukte lite CPU-kraft, siden alt som måtte gjøres var å animere en «døende» figur ble valgt fra et satt nummer av tidligere tegnede animasjoner.

Stadig kraftigere datamaskiner gjorde begrensete sanntids fysikksimuleringer mulige. En filledukke er derfor en samling av flere stive legemer. Disse er igjen vanligvis knyttet til et bein i grafikkmotorens skjelettanimasjonssystem. Legemene er forbundet til restriksjoner som begrenser hvordan beina kan bevege seg i forhold til hverandre. Disse begrensningene blir brukt når figuren dør, og bestemmer bevegelsen til leddene for figuren, noe som oftest ser mer realistisk ut.

På grunn av begrensninger i programvaren vil leddene til figurene ha liten eller ingen ledd/skjelettmuskulatursstivhet, noe som fører til en figur med en hofte som faller på samme måte som en lekedukke eller filledukke, og ender ofte i usannsynlige posisjoner. Herfra kommer begrepet.

Det første spillet som gjorde seg bruk av filledukkefysikk var det Jurassic Park lisensierte spillet Jurassic Park: Trespasser, som fikk sprikende kritiker; de fleste negative. Spillet et stort antall bugs, men ble husket som en pioneer i fysikkmotorer for videospill.

Bruk av filledukkefysikk i dag strekker seg utover dødssekvenser — det finnes slåssespill der spilleren kontrollerer en del av kroppen av figuren og resten følger etter, som Rag Doll Kung Fu, og til og med racingspill som FlatOut serien.

Metoder[rediger | rediger kilde]

Filledukker har blitt implementert ved hjelp av Featherstones algoritme og fjærdemper kontakter.[1] En alternativ metode benytter seg av restriksjonsløser og idealiserte kontakter.[2] Selv om begrenset-stiv-kropp metoden for filledukker er mest vanlig, finnes det andre «pseudo-filledukke» teknikker i bruk.

  • Verlet integration: brukt av Hitman: Codename 47 og gjort populær av Thomas Jakobsen [1], modellerer denne teknikken hvert av beina til figuren som et punkt koblet til et vilkårlig antall andre punkter via enkle begrensninger. Verletbegrensninger er mye enklere og raskere å beregne enn de fleste av de andre fullt modellerte rigide kroppssystemene, noe som fører til mye mindre bruk av CPU for figurene.
  • Inverse kinematics etterbehandling: brukt i Halo. Denne teknikkene er avhengig av å spille av en forhåndssinnstillt dødsanimasjon og siden bruke omvendt kinematikk for å tvinge figuren inn i en mulig posisjon etter at animasjonen er avspilt. Dette betyr at en figur kan ende opp med å klippe gjennom verdenen under en animasjon, men etter at animasjonen er avsluttet vil alle bein være på et gyldig sted.
  • Blended ragdoll: Denne teknikken (brukt i Halo 2) fungerer ved å spille av en forhåndslaget animasjon, men begrenser animasjonen til det et fysisk system vil tillate. Dette letter på den slarkete filledukke-følelsen, men tilbyr korrekt interaksjon med omgivelsene. Dette krever både animasjonsprosessering og fysikkprosessering, noe som gjør den enda tregere enn kun tradisjonell filledukketeknikk, men dette blir overskygget av fordelen med den ekstra realismen dette tilbyr.

Fordeler / ulemper[rediger | rediger kilde]

Siden å utføre simuleringer er dyrt CPU-messig, benytter de fleste spill seg av tilnærmelsesvise filledukker for sine figurer.

  • Bein i ekstremitetene, som fingre, blir som oftest ikke simulert.
  • Enkle ledd blir brukt i sted for ekte begrensninger som blir gitt av et ekte skjelett. For eksempel, blir et menneskelig kneledd ofte modellert som et stivt hengsel, selv om et ekte kne vil tillate noe rotasjon.
  • Forenklede kollisjonshylster er brukt for å oppdage kontakt med andre rigide kropper, i stedet for å oppdage kollisjoner med rutenettet.

Hovedfordelen med filledokker over tradisjonell animasjon er at de åpner for mye mer korrekt samhandling med omgivelsene. Der det ville ha vært uoverkommelig tidskrevende å prøve å håndlage egendefinerte animasjoner for alle mulige omstendiger, overtar filledukker og genererer en akseptabel tolkning av hendelser på direkten.

Se også[rediger | rediger kilde]

Referanser[rediger | rediger kilde]

  1. ^ Mal:Cite patent "Method and system for generating realistic collisions in graphical simulations"
  2. ^ Baraff, David and Witkin, Andrew (1997). «Physically Based Modeling: Principles and Practice». Proc. SIGGRAPH '97. SIGGRAPH 97. Los Angeles: Association for Computing Machinery Special Interest Group on Graphics. 

Eksterne lenker[rediger | rediger kilde]

Eksempler[rediger | rediger kilde]