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