Physik in Computerspielen
Transcription
Physik in Computerspielen
Seminar Technik in Computerspielen Physik in Computerspielen Florian Kleinert [email protected] Inhalt Einleitung 3 Grundlagen 3 Physikalische Bereiche 3 Simulierte Größen 3 Beispiel: Wurf einer Granate 4 Exakte Lösung 4 Lösungsansätze 4 Physikengines 5 Rigid Bodies 5 Kollisionsabfragen 5 Joints 6 Ragdolls 7 Kleidung & Haare 7 Aktuell verfügbare Engines 8 Havok – Physics3 & Havok FX 8 Ageia - Novodex 8 OpenDynamicsEngine 9 Tokamak 9 NewtonGameDynamics 9 Ausblick Hardware Ausblick 9 10 Havok 10 Ageia 10 Quellenangabe 10 Bildnachweis 11 Einleitung Spielephysik nimmt in heutigen Computerspielen eine immer wichtigere Rolle ein. Eine realistische Simulation physikalischer Effekte trägt wesentlich zur Spieleathmosphäre bei. In aktuellen Umsetzungen tritt die Spielephysik bereits als fester Bestandteil des Spielgeschehens auf. Grafikengines berechnet und wurden bereits in einem früheren Vortrag gewürdigt. Die Akustik oder besser der „Game Sound“ werden zur Zeit noch direkt von der Spielengine berechnet. Diese Verfahren zu beschreiben würde den Rahmen dieser Ausarbeitung wohl sprengen. Grundlagen Bevor man in die Materie von Physikengines einsteigen kann, sind zuerst einige Grundlagen vonnöten.. Was ist unter Physik eigentlich zu verstehen? Wikipedia beschreibt es folgendermaßen: „Die Physik ist die Naturwissenschaft, welche die grundlegenden Gesetze der Natur, ihre elementaren Bausteine und deren Wechselwirkungen untersucht. Sie befasst sich sowohl mit den Eigenschaften und dem Verhalten von Materie und Feldern in Raum und Zeit als auch mit der Struktur von Raum und Zeit selbst.“ Physikalische Bereiche Die heutige Physik lässt sich grob in diese Bereiche einteilen: • (klassische) Mechanik • Wärmelehre • Akustik • Optik • Elektrodynamik • Atom & Kernphysik • Relativistische Mechanik • Quantenmechanik Wenn man schon einmal ein Computerspiel gespielt hat, wird einem auffallen, dass einige physikalische Effekte aus den verschiedenen Bereichen keine Beachtung finden. Zum Beispiel hat die Wärmelehre noch keinen Einzug gehalten.- Sonst würde wohl ein Schuss aus einer Laserwaffe dieselbe sofort verdampfen lassen. Auch die Bereiche Quantenmechanik, Atom- und Kernphysik, Elektrodynamik und relativistische Mechanik sind eher schwach vertreten. Eine realistische Umsetzung relativistischer Effekte würde die Spieldauer einer Weltraumsimulation unnötig in die Länge ziehen. Optische Effekte werden typischerweise von Damit verbleibt als letzter Bereich die Mechanik, auf die man sich auch üblicherweise bezieht, wenn man von Spielephysik spricht. Simulierte Größen In modernen Physikengines finden folgende Größen Beachtung: • Kräfte • Impuls • Drehmoment • Drehimpuls • Ort • Geschwindigkeit • Winkelgeschwindigkeit • Schwerpunkt/Massenverteilung Je nach Spiel oder verwendeter Engine kommen dazu noch andere Größen wie z.B. Reibungskoeffizienten oder Elastizität. Diese physikalischen Größen werden für jedes Grundobjekt einer Spielewelt gespeichert und bilden die Grundlage für Simulationen. Eine - wenn nicht „die“ - Aufgabe für Physikengines ist es, die Bewegungsgleichung einzelner Elemente zu lösen. Eine Bewegungsgleichung drückt aus, an welchem Ort sich ein Körper zu einem bestimmten Zeitpunkt befindet. Beispiel: Wurf einer Granate Auf der Abbildung sieht man den Wurf einer Granate in Quake4. Möchte der Physiker nun eine Bewegungsgleichung aufstellen, so bedient er sich des 2. Newtonschen Gesetzes: „Force is equal to the change in momentum per change in time“ oder auch ein wenig mathematischer ausgedrückt: Ť mŤx F Anfangsbedingungen : Ťx xŤ0 hierbei Ťv vŤ0 die (die Punkte über dem xt0 bezeichnen aAbleitung Ŧt ŧŤ g des Ortes nach der Zeit) zweifache Ťx Ŧt ŧŤ t Im Falle eines Wurfes (einer Granax5 Ŧt ŧŤv Ŧt ŧvŤ0 Ő d Ǝ Ť a ŦƎŧvŤ0 ŐŤ gt Ť te) unter Einfluss der0Schwerkraft unseres t Planteten und unter Nichtberücksichti1 2 ŧAuftrieb, xŤ0ŤxŐ d Ǝ Luftreibung, gt gungŤxF von ŤŦt Ťv ŦƎŧxŤ0 ŐvŤrelativim 0 tŐ Ť 2 0 stischer Massenzunahme usw. Anfangsbedingungen t0 :erhält v vŤ0 Ťx xŤman 0 Ť Ťx Ŧt ŧaŤ Ŧt ŧgŤ t Integriert nunazwei ŧvŤdieses ŦƎŧmal vŤ0 ŐŤ gt Ťx5 Ŧt ŧŤv Ŧtman 0 Ő d Ǝ Ť t a ŦƎŧvŤ0 ŐŤ gt Ťx5 Ŧt ŧŤv Ŧt ŧvŤ0 Ő d Ǝ Ť Exakte Lösung t Ť mŤx F Anfangsbedingungen t0: Ťx xŤ0 Ťv vŤ0 nachŤx der soŤ Ŧt ŧZeit, a Ŧt ŧ gerhält man: Ť 0 1 2 Ťx Ŧt ŧxŤ0 Ő d Ǝ Ťv ŦƎŧxŤ0 ŐvŤ0 tŐ gŤ t 2 0 t 0 1 2 gt Ťx Ŧt ŧxŤ0 Ő d Ǝ Ťv ŦƎŧxŤ0 ŐvŤ0 tŐ Ť 2 0 Man sieht an dem Term „1/2 gt²“ die berühmte Parabelbahn, wie auch in dem Beispiel gut zu erkennen. Lösungsansätze Das Problem besteht nun darin, dass die Lösung nicht immer so einfach ist wie in diesem Fall. Betrachtet man z.B. Kräfte die sich mit der Zeit ändern oder miteinander interagierende Körper, so erhält man auch gerne einmal gekoppelte nichtlineare Differentialgleichungen (DGL‘s), die sich nicht so ohne weiteres lösen lassen. Zum Glück kennt die Mathematik einige Methoden die Bewegungsgleichungen zu vereinfachen oder zu nähern. Beispielsweise sei hier genannt: • Lagrange-Multiplikatoren: zum Vereinfachen von DGL‘s unter Zwangsbedingungen. Z.B. eine Kugel die von zwei Schienen auf einer geraden Bahn gehalten wird. • Reduzierte Koordinaten: Berechnungen können auf weniger Dimensionen reduziert werden. Z.B. eben genannte Kugel stellt eine eindimensionale Bewegung in einem 3D-Raum dar. Kollisionsabfragen Kollisionsabfragen sind immer dann relevant, wenn sich zwei Rigid Bodies anfangen zu überschneiden. Dies zu erkennen ist die Aufgabe der Kollisionserkennung. Da sich Abfragen, die auf den Original Rigid Bodies beruhen, als sehr komplex bzw. rechenaufwändig erweisen, wird bei vielen Verfahren die Originalform des Körpers genähert. • Verlet-Integration: Geschwindigkeitslose Darstellug bei der die Position zum nächsten Zeitintervall aus dem aktuellen Aufenthaltsort und dem Vorhergehenden berechnet wird. Physikengines Es kann natürlich nicht behauptet werden, dass alle Physikengines gleich sind. Es gibt jedoch einige Grundtechniken, die fast alle aktuelle Engines implementieren. Rigid Bodies Rigid Body Elements heißt auf deutsch „Starre Körper“. Aus diesen Elementen ist aus Sicht einer Physikengine die ganze, zur Berechnung interessante, Welt aufgebaut. Diese Elemente können zum Beispiel sein: • Axis aligned bounding box: Ein gedachter Quader, dessen Kanten parallel zu den Raumachsen der Welt liegen, wird um den Körper gelegt und bildet die Basis für die Kollisionserkennung. Das wohl schnellste Verfahren, da nur nacheinander für die 3 Achsen die Positionen der Boxen verglichen werden müssen. • Quader • Kugeln • Polygon Netze • etc. Diese Körper haben die unter „Simulierte Größen“ (S.3) genannten Eigenschaften zugwiesen und bilden die Grundlage für Objektinteraktionen. Warum starre Körper? Momentan würden so genannte Soft Bodies einen zu großen Rechenaufwand verursachen, da bei der Berechnung zusätzlich die Verformung unter Einfluß externer Kräfte berücksichtigt werden müßte. (siehe auch „Ausblick“) • Sphere: Um den Mittelpunkt des Körpers wird eine Kugel gelegt, die diesen gerade komplett einschließt. Die Kollisionsabfrage gestaltet sich wiederum sehr einfach, da nur der Abstand der Mittelpunkte zweier Objekte berechnet werden muss. Joints Um die Bewegung zweier Objekte zueinander einzuschränken, bedient man sich so genannter Joints. Wohl am besten zu übersetzen mit „Gelenken“. Es gibt dabei verschiedene Arten wie: • Oriented bounding box: Um den Körper wird ein Quader gelegt, der diesmal allerdings parallel zu den Achsen des Körpers ausrichtet wird. Die Erkennung von Kollisionen erfordert hierbei schon einiges an Aufwand und Mathematik. • Mesh: ein Netz von Polygonen (typischerweise mit geringerer Polygonanzahl als der originale Körper) nähert dabei die Form des Körpers an. Die wohl aufwändigste und präziseste Art der Kollisionserkennung. Außer den genannten Arten gibt es noch weitere: • Heightfields: Bei dieser Technik wird ein dreidimensionales Objekt aus einer Graustufengrafik abgeleitet, wobei die Helligkeitsinformation die Höhe an dieser Stelle wiederspiegelt. • Alle möglichen Arten von konvexen Objekten • Andere Grundobjekte wie: Kapsel und Zylinder • Kugelgelenk • Scharniergelenk • Schiebegelenk Um eine Idee davon zu erhalten was diese Joints bewirken betrachtet man am besten die dazugehörigen Grafiken. Allen diesen Verbindungen ist gemeinsam, dass sie die in der Physik bekannten Freiheitsgrade einschränken. Betrachtet man der Einfachheit halber einmal ein System aus zwei Körpern, die nicht miteinander verbunden sind, so kann man sich überlegen, dass sich das Geamtsystem in 3 Richtungen bewegen und um 3 Achsen rotieren kann. Nun können sich die Körper auch noch innerhalb des Systemes in 3 Achsen gegeneinander bewegen und in 3 Achsen gegeneinander rotieren. Das ergibt somit für das Gesamtsystem: 2*3 Freiheitsgrade der Translation + 2*3 Freiheitsgrade der Rotation. Insgesamt also 12 Freiheitsgrade. Verbindet man diese zwei Körper nun über ein Schiebegelenk, so erhält man immer noch: 3 Freiheitsgrade der Translation und 3 der Rotation für das Gesamtsystem. Der Joint erlaubt nun allerdings nur noch einen Freiheitsgrad der Translation und einen der Rotation der Teilchen zueinander (siehe auch die Grafik „Schiebegelenk“ auf Seite 6). Insgesamt also nur noch 8 Freiheitsgrade. Es gibt nun noch in jeder Engine weitere Jointarten, die sich allerdings alle durch Einschränkungen der Freiheitsgrade beschreiben lassen. Je nach Implementierung der Engine können diesen Gelenken auch noch weitergehende Eigenschaften zugewiesen werden, z.B. der verbindet so kann man eine relitätsnahe Version eines (menschlichen) Körpers erschaffen. Man würde z.B. für ein Kniegelenk ein Schaniergelenk verwenden und dafür Eigenschaften, wie maximaler Winkel und Drehwiderstand, definieren. Unter Anderem finden Ragdollanimationen Anwendung, um frischverstorbene Gegner möglichst realistisch mit anderen Gegenständen kollidieren zu lassen. Kleidung & Haare • Dämpfungskonstanten • Federkonstanten • Motoren/Aktuatoren Ragdolls Mithin den größten Rechenaufwand verursachen zur Zeit Simulationen von Haaren oder Kleidern. Eine Stoffbahn eines Kleidungsstückes stellt sich für eine Physikengine als ein System aus über Federn verbundene Massenpunkte dar. Da viele Massenpunkte, die miteinander interagieren viel Rechenaufwand verursachen, vereinfacht man dieses Modell weiter und lässt die Federhärte gegen unendlich gehen. Also eher eine Stahlstange als eine Feder. Außerdem wird die Anzahl der Massenpunkte stark verringert und die harten Kanten, die entstehen würden, geglättet. Ragdoll heißt in der Übersetzung „Lumpenpuppe“ man erhält aber ein besseres Bild, wenn man an „Gliederpuppe“ denkt. Wenn man Rigid Bodies über Joints miteinan Aktuell verfügbare Engines Auf dem Markt gibt es ein Vielzahl von Physikengines. Dazu ein kleiner Überblick über die weitverbreitetsten. Havok – Physics3 & Havok FX Bei dem Screenshot würde der Autor die Anzahl der Punkte im Kleid der jungen Dame auf nicht mehr als 20 schätzen. Erwähnenswert ist auch, dass, um ein realistisches Schwingverhalten der Oberweite moderner weiblicher Charaktere zu erhalten, die gleiche Technik wie bei Kleidungsstücken verwendet wird. Haarsimulationen verwenden das gleiche Prinzip wie bei Kleidung, Allerdings mit einer eindimensionalen Massenpunktkette. Es gibt in heutigen Computerspielen noch keine realitätsnahe Einzelhaarsimulation. Der Rechenaufwand wäre bei einer Haaranzahl, die in die zehntausende geht, einfach zu groß. Bei realistisch schwingenden Pferdeschwänzen ist momentan leider Schluss. Wie man an der Anzahl der Lizenznehmer und der Spiele die Engines von Havok einsetzen schon sieht, ist diese Firma momentan Marktführer. Beinahe alle großen Titel, sei es für PC oder Konsole, sofern sie keine Eigenentwicklungen verwenden, kommen mit einer Engine von Havok. Einige Titel wie z.B. Half Life 2 implementieren eine modifizierte Version. Über die Gründe des hohen Verbreitungsgrads kann nur spekuliert werden. An einer mit Informationen gespickten Internetseite liegt es sicherlich nicht. Die Physics 3 Engine unterstützt alle zuvor aufgezählten Features. Außerdem besteht auch die Möglichkeit, seit der ersten Version Soft Bodies zu verwenden. Wobei laut einem Entwickler von Havok „[..] die Entwicklung der Funktionen für Rigid Bodies Priorität hatte“. Havok liefert den Entwicklern außerdem viele Tools, z.B. für komplette Fahrzeugsimulationen mit. Lobend sei an dieser Stelle auch der Support erwähnt, da sich ein Programmierer Zeit nahm, um einige Fragen im Rahmen dieser Ausarbeitung zu beantworten. Ageia - Novodex Die Novodexengine wurde erst im Jahre 2004 von Ageia gekauft. Ebenso verleibte sich die Firma Mitte 2005 das Entwicklungsteam der Meqon Engine ein, um damit den Funkti onsumfang der Novodexengine zu erweitern. Damit ist diese Engine eine recht junge und es existieren vorerst nur Spieleankündigungen und Absichtserklärungen zur Zusammenarbeit. Es bestehen gute Chancen, dass sich diese Engine auf dem Markt etablieren kann, da die kommende Unreal3 Engine als Standardphysiksystem die Novodex Engine verwenden wird. Außerdem wird der kommende PhysX Chip aus eigenem Haus diese Engine nativ unterstützen. OpenDynamicsEngine Ausblick In Zukunft wird die Physik in Computerspielen eine immer größere Rolle spielen. Damit steigen auch die Anforderungen an kommende Physikengines. Insbesondere wird zur Zeit gearbeitet an: • Soft Bodies: Im Gegensatz zu Rigid Bodies die bisher die kleinsten Teile einer Szene waren, verformen sich Soft Bodies unter Einfluss von Kräften. Damit wird man z.B. einen Wasserball darstellen können, der sich beim Auftreffen auf den Boden korrekt verformt. Die wohl interessanteste Eigenschaft der ODE ist, dass der Quellcode frei verfügbar ist. Die Engine unterstützt alle wichtigen Funktionen und fand auch schon Anwendung in einigen kommerziellen Titeln, wie zum Beispiel Blood Rayne2. Eine Vielzahl der Anwendungen ist allerdings im Simulationssektor zu Hause. Tokamak NewtonGameDynamics zwei weiter Physikengines, die es allerdings noch nicht in größere Spieleproduktionen geschafft haben. • Flüssigkeiten: Realistische Flüssigkeiten sind bisher leider nicht möglich, da auf Grund der hohen Teilchenanzahl und Kräfte zwischen den einelnen Teilchen ein sehr hoher Rechenaufwand entsteht. Mit realistischem Wasser wäre dann z.B. ein echt aussehender Wasserfall möglich und nicht nur eine animierte Textur. • Realistische Haare/Kleidung: Insbesondere Einzelhaaranimationen stellen derzeit zu große Ansprüche an die CPU. Ebenso realistische Kleider. In Zukunft ist z.B. denkbar, dass Stoff unter zu hoher Belastung zerreißt. • Finite-Elemente-Analyse: Mit Hilfe der FEA wird für ein System von Flächen (z.B. ein Mesh aus Polygonflächen) die auftretenden Kräfte an jedem Eckpunkt berechnet. Damit liese sich z.B. bei einer Kollision eines Autos mit Buschwerk oder Ähnlichem die wirkenden Kräfte berechnen und damit die Stoßstange wirklichkeitsnah verformen. Hardware Ausblick Havok Vor allem als Konkurrenzangebot zu PhysX plant Havok derzeit mehrere Neuerungen, um die Effizienz seiner Engines zu steigern. So ist z.B HavokFX darauf optimiert, Dualkern CPUs, die in Zukunft eine immer wichtigere Rolle spielen sollen, optimal auszunutzen. Außerdem ist eine Verlagerung der Physikberechnung weg von der CPU und hin zur GPU angedacht. Seit der Einführung des Shader Models 3.0 können Shaderprogramme deutlich komplexer sein (z.B. Schleifen und bedingte Sprünge enthalten). Da im Speicher der Grafikkarte Teile der Informationen über die einzelnen Objekte vorgehalten werden, hat solch ein Ansatz durchaus Chancen sich durchzusetzen. Andererseits ist in modernen Computerspielen meistens sowieso die Grafikkarte der Flaschenhals und daher die GPU auch recht ausgelastet. Ageia Hier die technischen Daten: • 125M Transistoren - zum Vergleich: Athlon64 Venice E6:68,5 M Nvidia GeForce 7800 GTX: 302 M • 182² mm Die-Größe • 130nm von TSMC • 20W Energieaufnahme • 128MB GDDR3 Der angestrebte Preis der von Asus gebauten Karte soll zwischen 249€ und 299€ liegen. Hier sieht man auch schon den größten Nachteil von PhysX. Es muss eine nicht gerade billige Zusatzkarte gekauft werden, um in den Genuss von Physikbeschleunigung zu kommen. Leider sind zum jetzigen Zeitpunkt noch keine weiteren Informationen oder Benchmarkergebnisse verfügbar, um die Leistungsfähigkeit des Chips zu bewerten. Laut Ageia soll folgendes mit dem Physikprozessor möglich sein/beschleunigt werden: • 32000 Rigid Body-Objekte • Soft Body-Objekte • Flüssigkeiten • Partikelsysteme (40-50 tausend Partikel) • Kollisionserkennung Die bisher verfügbaren Demos sehen auf jeden Fall sehr vielversprechend aus. Man kann gespannt sein, wie künftige Spiele den Realismusgrad weiter erhöhen werden. Im Jahr 2005 kündigte Ageia einen Zusatzchip, namens PhysX, an, dessen Aufgabe es sein soll, Physikberechnungen deutlich zu beschleunigen. Die Firma kommt urspünglich aus dem Bereich der Hochgeschwindigkeits-Netzwerkprozessoren und hat somit einiges an Erfahrung wenn es darum geht, große Datenmengen in kurzer Zeit zu bewegen. Daher hat der angkündigte PhysX-Chip dieser Firma gute Chancen die Physikberechnung wesentlich zu beschleunigen. Der Flaschenhals bei Physikberechnungen liegt wohl weniger in der eigentlichen Berechnung als vielmehr in der verfügbaren Speicherbandbreite. Dies macht sich auch in der Speicherausstattung der PhysX-Zusatzkarte bemerkbar. 10 Quellenangabe http://www.gamasutra.com/resource_guide/20030121/ http://ode.org/ode-latest-userguide.html http://www.ageia.com/developers/downloads.html http://www.gamedev.net/reference/list.asp?categoryid=28 http://www.d6.com/users/checker/dynamics.htm http://www.havok.com http://ai.eecs.umich.edu/soar/Classes/494/talks/Physics.pdf http://www.gdhardware.com/interviews/agiea/002.htm Bildnachweis 1: Realtime fluids - Ageia 3: Motor - ODE Dokumentation 4.: Screenshot Quake4 - ID Software 5-6: Bounding Boxes - Eigenanfertigung 6: Joints - ODE Dokumentation 7: Ragdoll & Kleidung - Eigenanfertigung 8: Spieleverpackungen - www.havok. com & Herstellerseiten der Spiele 9: Realtime Fluids - Ageia 9: PhysX - Asus 11