Rigid Body Dynamics

Werbung
Rigid Body Dynamics
Benjamin Broll
Einleitung
Moderne Spielwelten gewinnen ihre Realitätsnähe immer häufiger nicht nur durch den
Einsatz überzeugend aussehender Grafiken sondern binden den Spieler zunehmend durch
die realistische Nachbildung der geltenden physikalischen Gesetze in das Spielgeschehen
ein. „Rigid Body Dynamics“ beschreiben diese physikalischen Gesetze für eine spezielle
Klasse von Objekten und modellieren das Verhalten dieser Objekte in Computerspielen.
Grundlagen
Im Folgenden werden Objekte betrachtet die in einem Computerspiel nicht deformierbar sind
und welche eine konstante Masse M (und Masseverteilung) aufweisen.
Um diese Objekte nun beschreiben und darstellen zu können müssen zunächst ihre aktuelle
Position x (t ) und Orientierung R (t ) bekannt sein. Des Weiteren werden die
Geschwindigkeit v (t ) und die Winkelgeschwindigkeit ω (t ) eines jeden Objekts benötigt: die
Geschwindigkeit beschreibt wie stark sich die Position des Objekts verändert, die
Winkelgeschwindigkeit hingegen beschreibt die Änderung der Orientierung.
Neben der Beschreibung der Objekte müssen auch die aktuellen Kräfte F (t ) beschrieben
werden welche auf die Objekte wirken.
Bewegungen
Eine der Hauptaufgabe des Computerspielalgorithmus besteht nun darin, die
Fortentwicklung der oben genannten Größen während der Laufzeit des Spiels zu berechnen.
Erst durch diese Berechnungen entsteht die Möglichkeit dynamische Prozesse in das Spiel
zu integrieren.
Es ergibt sich die Frage wie zu diskreten Zeitpunkten, der aktuelle Zustand des Systems aus
dem vorangegangenen Zustand berechnet werden kann. Ein hilfreiches Werkzeug bietet die
Taylorentwicklung einer Funktion:
Y (t 0 + ∆t ) = Y (t 0 ) + ∆tY (t 0 ) + O ( ∆t 2 )
Beschreibt hier Y (t ) den Zustand des Systems zu einem gegebenen Zeitpunkt so erhält
man den Zustand zu einem zukünftigen Zeitpunkt Y (t 0 + ∆t ) im Wesentlichen aus dem
aktuellen Zeitpunkt Y (t 0 ) und seiner Ableitung.
Um dieses Kalkül verwenden zu können bleibt zu klären, wie die Ableitungen der Position,
Orientierung, Geschwindigkeit und Winkelgeschwindigkeit aussehen. Die Ableitungen von
Position und Orientierung ergeben sich aus:
x (t ) = v(t )
R (t ) = ω * (t ) ⋅ R(t )
ω * (t ) unterscheidet sich von ω (t ) so, dass das Produkt auf der rechten Seite dem
Kreuzprodukt von ω (t ) mit den einzelnen Spalten von R (t ) entspricht.
Die Ableitungen von Geschwindigkeit und Winkelgeschwindigkeit ergeben sich nun aus den
Kräften die auf das betrachtete Objekt wirken:
F (t )
M
ω (t ) = I −1 ⋅ τ = I −1 ⋅ ( p × F (t ))
v(t ) =
Die bislang unbekannten Größen I und p sind der Trägheitstensor I des betrachteten
Objekts (konstant) und der Punkt p an dem die Kraft F (t ) auf das Objekt wirkt.
Der Spielalgorithmus kann mit diesen vier Formeln und der Taylorentwicklung somit den
Zustand eines Objekts zum aktuellen Zeitpunkt aus dem Zustand des Objekts zum vorigen
Zeitpunkt berechnen und dadurch Objektbewegungen im Spiel modellieren.
Kollisionen
Bewegen sich Objekte erst einmal in einer Spielwelt so wird man recht schnell die ersten
Situationen beobachten können, in denen die Objekte realistischerweise miteinander
kollidieren sollten.
Solche Kollisionsmomente werden in Computerspielen auch vom Spielalgorithmus
behandelt. Dieser muss nicht nur erkennen ob zu einem bestimmten Zeitpunkt eine Kollision
stattgefunden hat sondern bei einer festgestellten Kollision auch physikalisch korrekt auf die
beteiligten Objekte einwirken um diese je nach Kollision auseinander driften oder zur Ruhe
kommen zu lassen.
Es werden an dieser Stelle zwei unterschiedliche Arten von Kollisionen unterschieden:
Berührungen und echte Kollisionen.
Berühren sich zu einem Zeitpunkt des Spiels zwei Objekte so muss der Spielalgorithmus
prüfen ob diese beiden Objekte im nächsten Zeitpunkt miteinander kollidieren würden. Ist
dies der Fall, so werden auf beide Objekte Kräfte angewandt die die bevorstehende Kollision
vermeiden.
Ist eine echte Kollision aufgetreten, so muss der Algorithmus den Zustand vor der Kollision
wiederherstellen und die Objekte direkt mit Impulsen zu einer Änderung ihrer Position
zwingen, da Kräfte die Objekte nicht schnell genug beeinflussen können.
Literatur
[1] David Baraff, „Rigid Body Simulation”, http://www.cs.cmu.edu/~baraff/sigcourse/
[2] Chris Hecker, Die „Physics“-Reihe, http://www.d6.com/users/checker/dynamics.htm
[3] Roderick Kennedy, „Contact Physics“,
http://www.gamasutra.com/resource_guide/20030121/kennedy_01.shtml
Zugehörige Unterlagen
Herunterladen