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