Physics for Game(r)s

Werbung
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
Herunterladen