Spieleprogrammierung Winter 2011 7. Physik Motivation •! Graphik beschreibt reale Körper –! Unterschiedlichen Materialeigenschaften •! Elastizität, Masse, Dichte, … •! Physik gibt diesen graphischen Gebilden Semantik –! Bewegung, Trägheit, Kollision •! Realismus mit wachsender Objektanzahl und –komplexität extrem rechenaufwendig –! Deformationen, Auseinanderfallen, … –! Partikel und Flüssigkeiten –! Haar und Kleidung (c) Peter Sturm, Universität Trier 1 Spieleprogrammierung Winter 2011 Ansätze •! Typischerweise 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 Newton •! 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. –! 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) Peter Sturm, Universität Trier 2 Spieleprogrammierung Winter 2011 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 = (c) Peter Sturm, Universität Trier p(t + "t) # p(t) V (t + "t) # V (t) aavg = "t "t 3 Spieleprogrammierung Winter 2011 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 ! Beispiel •! Flugbahn eines Projektils –! Kraft = Gravitation g (9.81 m/s2) •! Ortsberechnung 1 p(t ) = pinit + V (t ! tinit ) + g (t ! tinit ) 2 2 •! Beispiel Ballerburg –! Atari ST (c) Peter Sturm, Universität Trier 4 Spieleprogrammierung Winter 2011 … Wind? •! Mehrere konstante Kräft •! Alle Kräfte einfach addieren Wind Resultierende Gesamtkraft g Kollision (Klassische Phyisk) •! Annahmen V1! –! Feste Körper –! Keine Reibung •! Impulsgleichungen m1V1+ = m1V1" + ! m2V2+ = m2V2" " ! " = b!n m1m2 (1 + # )(V1" " V2" ) ! n b=" m1 + m2 (c) Peter Sturm, Universität Trier p1 m1 p2 m2 n V2! •! Stoßzahl ! –! 1 = Perfekt elastisch –! 0 = Perfekt plastisch 5 Spieleprogrammierung Winter 2011 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, … Numerische Integration •! Lineare Approximation der Differentialgleichungen •! Beispielsweise durch Taylorreihe (#t ) n d n S (t + #t ) = S (t ) + ! S (t ) n n ! dt n =1 " •! Terme höherer Ordnung abschneiden = Fehler –! Selten mehr als Ordnung 2 •! Numerische Stabilität •! Spezielle Vorlesungen aus der Mathematik empfehlenswert ! (c) Peter Sturm, Universität Trier 6 Spieleprogrammierung Winter 2011 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(); } Wirkliche Körper •! Punktförmige oder sphärische Massen unrealistisch •! Ermittlung des Schwerpunkts •! Allgemein Volumenintegrale pcenter = 1 ### "rdxdydz m Volume •! In Spielen –! Effiziente Approximation über Polygonoberfläche (c) Peter Sturm, Universität Trier 7 Spieleprogrammierung Winter 2011 Drehmomente •! Rotationen beliebiger Körper um Schwerpunkt •! Graphische Problematik wird mit dem Masse- und Kraftbegriff verknüpft ' J xx % L(t ) = % J xy % J xz & J xy J yy J yz Trägheitsprodukte J xz $ " J yz "! (t ) J zz "# Trägheitsmomente 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) Peter Sturm, Universität Trier 8 Spieleprogrammierung Winter 2011 Federn •! Federelemente (Linear) –! Unterschiedliche Längen •! 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) Peter Sturm, Universität Trier 9 Spieleprogrammierung Winter 2011 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 Kollisionen (Iteriert) •! Berücksichtig man alle Facetten werden Kollisionen deutlich komplizierter –! Reibung beim Aufprall –! Rotationskräfte bei allgemeinen Körpern –! Auseinanderbrechen (c) Peter Sturm, Universität Trier 10 Spieleprogrammierung Winter 2011 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 PPUs •! Physical Processing Unit •! Übernimmt in Analogie zur GPU –! Physikalische Objekteigenschaften –! Kollisionen –! Deformationen CPU •! „Beliebige“ physikalische Manipulationsmöglichkeiten GPU (c) Peter Sturm, Universität Trier PPU 11 Spieleprogrammierung Winter 2011 Beispiel AGEIA •! Entwickelt PhysX HW-Engine •! Board-Entwicklung durch ASUS –! 3. Quartal 2005 (?) –! Immerhin noch News und Award Ende 2005 •! Funktionen –! Kollisionen –! Finite Elemente –! Dynamik weicher Körper –! Flüssigkeiten –! Haar und Kleidung Beispiel Fluids (c) Peter Sturm, Universität Trier 12 Spieleprogrammierung Winter 2011 Trend (2006) •! Spezialisierung PPU klingt bestechend –! Wiederholung der GPU-Spezialisierung –! Leistung durch CPU (auch zusätzliche) nicht erreichbar •! Analog zu GPU ist die numerische Integration für alle beteiligten Objekte parallelisierbar •! Alternativen –! Eine feste Engine hardware-verdrahtet –! Generische Lösung wie bei GPU # SIMD-Rechner •! Andere Spezialisierung •! Numerische Stabilität •! Aber … –! Trend zu einheitlichen Shadern bei GPU (DirectX 10) –! Mehrere Cores auf einem Die –! Cell-Prozessor IBM IBM 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 (c) Peter Sturm, Universität Trier 13 Spieleprogrammierung Winter 2011 Literatur •! Steve Rabin (Herausgeber) Introduction to Game Development Charles River Media, 2005 Kapitel 4.3 •! David M. Bourg Physics for Game Developers OReilly, 2001 –! Deutlich theoretischer –! C++ Beispiele inkl. Aufbau sinnvoller Grundklassen (c) Peter Sturm, Universität Trier 14