Computerspiele (c) 2013, Peter Sturm, Universität Trier Sommer 2013 1 Computerspiele Sommer 2013 7. Physics Motivation • Graphik beschreibt reale Körper – Unterschiedlichen Materialeigenschaften • Elastizität, Masse, Dichte, … • “Physik” gibt graphischen Gebilden Semantik – Bewegung, Trägheit, Kollision (c) 2013, Peter Sturm, Universität Trier 2 Computerspiele Sommer 2013 Rechenaufwand • Realismus mit wachsender Objektanzahl und –komplexität extrem rechenaufwendig • Deformationen, Auseinanderfallen, … – Reibung – Explosionen • Partikel und Flüssigkeiten • Haar und Kleidung Ansätze • Komplexe Differentialgleichungen • Geschlossene Lösungen für einfache Modelle – Punktmassen – Keine Reibung • Echtzeitsimulation der Physik – Approximative Lösung der Gleichungen – Je nach Auflösung sehr hohe Dimensionalität (c) 2013, Peter Sturm, Universität Trier 3 Computerspiele Sommer 2013 Newton • 1642 -­‐1727 • Cambridge – Lucasian Professor for Mathematics – Babbage, Stokes, Dirac, ... – Stephen Hawking (1979-­‐2009) • Newtonsche Gesetze (1687) (nach Wikipedia) Trägheitsprinzip • Ein Körper verharrt in seinem Zustand der Ruhe oder der gleichförmigen geradlinigen Bewegung, solange die Summe aller auf ihn einwirkenden Kräfte Null ist. (c) 2013, Peter Sturm, Universität Trier 4 Computerspiele Sommer 2013 Aktionsprinzip • Die Änderung der Bewegung einer Masse ist der Einwirkung der bewegenden Kraft proportional und geschieht nach der Richtung derjenigen geraden Linie, nach welcher jene Kraft wirkt. Reaktionsprinzip • Kräfte treten immer paarweise auf. Übt ein Körper A auf einen anderen Körper B eine Kraft aus (actio), so wirkt eine gleichgroße, aber entgegen gerichtete Kraft von Körper B auf Körper A (reactio). (c) 2013, Peter Sturm, Universität Trier 5 Computerspiele Sommer 2013 Newton (2) • Gesetze gelten auch in Zeiten der Relativitätstheorie – Solange die Geschwindigkeit nicht relativistisch ist • Zweites Gesetz F (t ) = m ⋅ a(t ) – m = Masse eines Objektes (in Kilogramm) – a = Beschleunigung (m/s2) – F = Kraft (in Newton: N = kg m / s2) Beschleunigung, Geschwindigkeit, Ort d d2 a(t ) = V (t ) = 2 p(t ) dt dt • Funktionen in der Zeit • Mittlere Beschleunigung bzw. Geschwindigkeit Vavg = p(t + Δt) − p(t) Δt (c) 2013, Peter Sturm, Universität Trier aavg = V (t + Δt) − V (t) Δt 6 Computerspiele Sommer 2013 Konstante Kraft • F = m·∙a konstant • Geschwindigkeit V (t ) = ∫ a dτ = ∫ F F F dτ = Vinit + τ = Vinit + (t − tinit ) m m m • Position p(t ) = ∫ V (τ ) dτ = ∫ (Vinit + F F τ )dτ = pinit + V (t − tinit ) + (t − tinit ) 2 m 2m • Einfach ausrechnen J Beispiel • Flugbahn eines Projektils – Kraft = Gravitation g (9.81 m/s2) • Ortsberechnung 1 p(t ) = pinit + V (t − tinit ) + g (t − tinit ) 2 2 (c) 2013, Peter Sturm, Universität Trier 7 Computerspiele Sommer 2013 Ballerburg (Atari ST) … Wind? • Mehrere konstante Kräft • Alle Kräfte einfach addieren Wind Resultierende Gesamtkraft g (c) 2013, Peter Sturm, Universität Trier 8 Computerspiele Sommer 2013 Kollision (Klassische Phyisk) V1− p2 • Annahmen – Feste Körper – Keine Reibung p1 • Impulsgleichungen m1 m2 n V2− m1V1+ = m1V1− + Β m2V2+ = m2V2− − Β • Stoßzahl ε Β = b⋅n b=− m1m2 (1 + ε )(V − V ) ⋅ n m1 + m2 − 1 − 2 – 1 = Perfekt elastisch – 0 = Perfekt plastisch Etwas mehr Realismus • Realistisch sind es aber Funktionen in der Zeit: – a(t), V(t), p(t) d d2 a(t ) = V (t ) = 2 p(t ) dt dt • Geschlossene Lösung selten möglich • Numerische Integration – Diverse Verfahrensweisen • Euler, Verlet, Runge-­‐Kutta, … (c) 2013, Peter Sturm, Universität Trier 9 Computerspiele Sommer 2013 Numerische Integration • Lineare Approximation der Differentialgleichungen • Beispielsweise durch Taylorreihe (Δt ) n d n S (t + Δt ) = S (t ) + ∑ S (t ) n! dt n n =1 ∞ • Terme höherer Ordnung abschneiden = Fehler – Selten mehr als Ordnung 2 • Numerische Stabilität • Spezielle Vorlesungen aus der Mathematik empfehlenswert J Simulationsschleife • Δt in der numerischen Integration – Fehlerschranke – Numerische Stabilität • Entkopplung von Framerate float float float float delta_t = 0.02; game_time; prev_game_time; physical_lag_time = 0.0; while (game running) { game_time = current_time(); physical_lag_time += (game_time – prev_game_time); while (physical_lag_time > delta_t) { SimulatePhysics(delta_t); physical_lag_time -= delta_t; } prev_game_time = game_time; RenderScene(); } (c) 2013, Peter Sturm, Universität Trier 10 Computerspiele Sommer 2013 Wirkliche Körper Wirkliche Körper • Punktförmige & sphärische Massen unrealistisch • Ermittlung des Schwerpunkts • Allgemein Volumenintegrale pcenter = • In Spielen 1 ∫∫∫ ρrdxdydz m Volume – Effiziente Approximation über Polygonoberfläche (c) 2013, Peter Sturm, Universität Trier 11 Computerspiele Sommer 2013 Drehmomente • Rotationen beliebiger Körper um Schwerpunkt • Tensor ⎡ J xx ⎢ L(t ) = ⎢ J xy ⎢ J xz ⎣ J xy J yy J yz J xz ⎤ ⎥ J yz ⎥ω (t ) J zz ⎥⎦ Trägheitsmomente Trägheitsprodukte Beispielkörper • r = Radius J xx = 1 m(3r 2 + h 2 ) 12 J yy = J xx J zz = 1 2 mr 2 • Trägheitsprodukte sind 0 (c) 2013, Peter Sturm, Universität Trier 12 Computerspiele Sommer 2013 • Federelemente (Linear) – Unterschiedliche Längen Federn • Ruhelänge (es wirken keine Kräfte) • Größer als Ruhelänge: Kompression • Kleiner als Ruhelänge: Expansion FSpring = k (l − lRe st )vd aus Rabin – k = Stärke der Feder – vd = Vektor (parallel zur Feder, Länge 1) Viskose Dämpfung • Zwei Körper bewegen sich in vergleichsweise dichten Medien aufeinander zu – Luft, Wasser, Öl, … • Kraft ist relativ zum Volumen und zur Geschwindigkeit des Objekts Fdamping = c ⋅ ((Vep 2 − Vep1 ) ⋅ dˆ ) ⋅ dˆ – d ist Vektor in pe1 und pe2 (Länge 1) – c Dämpfungskoeffizient (c) 2013, Peter Sturm, Universität Trier 13 Computerspiele Sommer 2013 Reibung • Kräfte parallel zur Kontaktfläche zweier Objekte • Statische Reibung – Überwindung einer Anfangsenergie • Dynamische Reibung – Während der Bewegung – Häufig Ruckartig – Meist kleiner als statische Reibung Veranschaulichung aus Rabin (c) 2013, Peter Sturm, Universität Trier 14 Computerspiele Sommer 2013 Kollisionen (Iteriert) • Berücksichtig man alle Facetten werden Kollisionen deutlich komplizierter – Reibung beim Aufprall – Rotationskräfte bei allgemeinen Körpern – Auseinanderbrechen Status Quo • Einige Spiele kommen mit wenig bis keine Physik aus – Häufig reichen einfache geschlossene Lösungsansätze • Gros der Spiele – Physik für die „Hauptcharaktere“ • Person, Gegner, Raumschiff, Auto – Ggf. Physik für einzelne Szenenobjekte • Gegner “stirbt“ durch fallende Tonne o.ä. • Der Realismus nimmt zu – Numerische Simulation unausweichlich – Quantitativ und mathematische komplexe Aufgabenstellung (c) 2013, Peter Sturm, Universität Trier 15 Computerspiele Sommer 2013 PPUs • Physical Processing Unit • Übernimmt in Analogie zur GPU – Physikalische Objekteigenschaften – Kollisionen – Deformationen CPU • „Beliebige“ physikalische Manipulationsmöglichkeiten GPU PPU Beispiel AGEIA • Entwickelt PhysX HW-­‐Engine • Board-­‐Entwicklung durch ASUS – 3. Quartal 2005 (?) – Immerhin noch News Ende 2005 • Funktionen – Kollisionen – Finite Elemente – Dynamik weicher Körper – Flüssigkeiten – Haar und Kleidung (c) 2013, Peter Sturm, Universität Trier 16 Computerspiele Sommer 2013 Beispiel Fluids Trend (2006) • Spezialisierung PPU klingt bestechend – Wiederholung der GPU-­‐Spezialisierung – Leistung durch CPU (auch zusätzliche) nicht erreichbar • Numerische Integration hochgradig parallelisierbar • Alternativen – Eine feste Engine hardware-­‐verdrahtet – Generische Lösung wie bei GPU ⇒ SIMD-­‐Rechner • Andere Spezialisierung • Numerische Stabilität (c) 2013, Peter Sturm, Universität Trier 17 Computerspiele Sommer 2013 Aber ... • Trend zu einheitlichen Shadern bei GPU • Mehrere Cores auf einem Die • Cell-­‐Prozessor IBM http://physxinfo.com/news/wp-­‐content/uploads/2010/05/mafia-­‐ii_physx_01.jpg (c) 2013, Peter Sturm, Universität Trier 18 Computerspiele Sommer 2013 Trend (2009) • Dedizierte PPUs haben sich nicht durchgesetzt • PhysX von nvidia aufgekauft – Verlagerung auf GPUs und CUDA-­‐Plattformen • Havok (jetzt Intel) – Physikbereich vergleichbar zu PhysX – AI, Characterverhalten, Kleidung, … • Integration in Engine – Wenigsten Entwickler sind Physiker – Nicht mehr nur 3D-­‐Rendering Havok Call of Duty: Black Ops II (c) 2013, Peter Sturm, Universität Trier 19 Computerspiele Sommer 2013 Literatur • Steve Rabin (Herausgeber) Introduction to Game Development Charles River Media, 2005 Kapitel 4.3 • David M. Bourg Physics for Game Developers O’Reilly, 2001 – Deutlich theoretischer – C++ Beispiele inkl. Auyau sinnvoller Grundklassen (c) 2013, Peter Sturm, Universität Trier 20