21
PART V CONTACT PHYSICS Chapter 16 - 17 Aufbaumodul 3: Visuelle Programmierung II Softwaretechnologie II (Teil 2): Simulation und 3D Programmierung Prof. Dr. Manfred Thaller Sommersemester 2012 Dennis Kiewning

PART V CONTACT PHYSICS Chapter 16 - 17 Aufbaumodul 3: Visuelle Programmierung II Softwaretechnologie II (Teil 2): Simulation und 3D Programmierung Prof

Embed Size (px)

Citation preview

Page 1: PART V CONTACT PHYSICS Chapter 16 - 17 Aufbaumodul 3: Visuelle Programmierung II Softwaretechnologie II (Teil 2): Simulation und 3D Programmierung Prof

PART V CONTACT PHYSICSChapter 16 - 17

Aufbaumodul 3: Visuelle Programmierung II

Softwaretechnologie II (Teil 2): Simulation und 3D Programmierung

Prof. Dr. Manfred Thaller

Sommersemester 2012

Dennis Kiewning

Page 2: PART V CONTACT PHYSICS Chapter 16 - 17 Aufbaumodul 3: Visuelle Programmierung II Softwaretechnologie II (Teil 2): Simulation und 3D Programmierung Prof

2

16 STABILITY AND OPTIMIZATION

So weit...

Merkwürdige Effekte (Objekte gequetscht oder verzerrt)

Slow Downs durch viele Objekte

Ziel des Kapitels: Ein stabiles und schnelles System

Page 3: PART V CONTACT PHYSICS Chapter 16 - 17 Aufbaumodul 3: Visuelle Programmierung II Softwaretechnologie II (Teil 2): Simulation und 3D Programmierung Prof

3

Die Probleme in der Übersicht...

Transformation der Matrizen führt zu Rotationsproblemen Schnelle Objekte durchdringen andere Objekte Ruhende Objekte rutschen von schiefen Ebenen ab Unterschiedlich große Mengen wirken unrealistisch

(In Bewegung und Rotation)

16.1 STABILITY

Page 4: PART V CONTACT PHYSICS Chapter 16 - 17 Aufbaumodul 3: Visuelle Programmierung II Softwaretechnologie II (Teil 2): Simulation und 3D Programmierung Prof

4

16.1 QUATERNION DRIFT

Problem Sichtbare Objekte werden verzerrt

Grund Transformationsmatrizen werden aus Positionsvektor und

Quaternion* der Rigid Bodies generiert Quaternion verliert nach vielen Berechnungen seine Einheitslänge

Lösung Vor dem Generieren der Matrix die Quaternion normalisieren

* und/oder Achsen & Längen-Darstellung

Page 5: PART V CONTACT PHYSICS Chapter 16 - 17 Aufbaumodul 3: Visuelle Programmierung II Softwaretechnologie II (Teil 2): Simulation und 3D Programmierung Prof

5

16.1 IINTERPENETRATION ON SLOPES

Problem Ruhende Objekte rutschen von schiefen Ebenen ab

Grund Zwischen dem Update der Rigid Bodies und dem Ausführen der

Kollision besitzen bereits kollidierte Objekte unterschiedliche Richtungen

Lösung Berechnung der relativen Geschwindigkeit:

Jede Geschwindigkeit die sich bei der Kollision aufgebaut hat wird entfernt: calculateLocalVelocity()

Page 6: PART V CONTACT PHYSICS Chapter 16 - 17 Aufbaumodul 3: Visuelle Programmierung II Softwaretechnologie II (Teil 2): Simulation und 3D Programmierung Prof

6

16.1 THE BENEFITS OF PESSIMISTIC COLLISON DETECTION

Problem Objekte „vibrieren“ bei einer Kollision auf der Oberfläche

Grund Durchdringungen in einem einzigen Frame sind nicht sichtbar,

allerdings können sich kontinuierliche Kontakte mit den Objekten in einem Kreislauf verlieren

Lösung Kollisionen nur in der unmittelbaren Nähe von Objekten berechnen

Geometrie der Kollision um eine Einheit erhöhen

Page 7: PART V CONTACT PHYSICS Chapter 16 - 17 Aufbaumodul 3: Visuelle Programmierung II Softwaretechnologie II (Teil 2): Simulation und 3D Programmierung Prof

7

16.1 THE BENEFITS OF PESSIMISTIC COLLISON DETECTION

Page 8: PART V CONTACT PHYSICS Chapter 16 - 17 Aufbaumodul 3: Visuelle Programmierung II Softwaretechnologie II (Teil 2): Simulation und 3D Programmierung Prof

8

16.1 CHANGING MATHEMATICAL ACCURACY

Problem Kollisionsberechnungen sind nicht präzise genug

Grund Floating Points werden in gruppierten Ziffern und einem Exponent

gespeichert Große Unterschiede in der Höhe liefern falsche Ergebnisse

Lösung Von floats zu doubles wechseln (Um ein vielfaches genauer )

Page 9: PART V CONTACT PHYSICS Chapter 16 - 17 Aufbaumodul 3: Visuelle Programmierung II Softwaretechnologie II (Teil 2): Simulation und 3D Programmierung Prof

9

16.2 OPTIMIZATIONS

Zu den Optimierungen…

Berechnungen nur einmalig ausführen Speicherplatz wieder freigeben Überflüssige Berechnungen verkürzen

Page 10: PART V CONTACT PHYSICS Chapter 16 - 17 Aufbaumodul 3: Visuelle Programmierung II Softwaretechnologie II (Teil 2): Simulation und 3D Programmierung Prof

10

16.2 SLEEP

Problem Konsistente Einwirkung von Kraft verhindert Ruhezustand

Ziel Berechnungen für ruhende Objekte vermeiden

Lösung Sleep State hinzufügen

Page 11: PART V CONTACT PHYSICS Chapter 16 - 17 Aufbaumodul 3: Visuelle Programmierung II Softwaretechnologie II (Teil 2): Simulation und 3D Programmierung Prof

11

16.2 ADDING SLEEP STATE

Der Rigid Body Klasse werden 3 Membervariablen hinzugefügt

Boolean: isAwake

informiert die Klasse über den allgemeinen Zustand Boolean: canSleep

Informiert die Klasse ob ein Objekt „einschlafen“ darf Real*: motion

Informiert die Klasse über die Bewegungen eines Objekts

*typef of float

Page 12: PART V CONTACT PHYSICS Chapter 16 - 17 Aufbaumodul 3: Visuelle Programmierung II Softwaretechnologie II (Teil 2): Simulation und 3D Programmierung Prof

12

Ein einfacher Algorithmus…

In jedem Frame wird die Bewegung eines Objekts erfasst Bei einer Stabilisierung über mehrere Frames werden die

Objekte „eingeschläfert“

16.2 PUTTING OBJECTS TO SLEEP

if (motion < sleepEpsilon) { setAwake(false);}

Page 13: PART V CONTACT PHYSICS Chapter 16 - 17 Aufbaumodul 3: Visuelle Programmierung II Softwaretechnologie II (Teil 2): Simulation und 3D Programmierung Prof

13

Hintergrund Ruhende Objekte müssen über Einschläge informiert werden Anliegende Objekte ebenfalls Methode hinzufügen: Contact()

16.2 WAKING OBJECTS UP

void Contact::matchAwakeState() {/* … */if (body0awake ^ body1awake) {

if (body0awake) body[1]->setAwake();else body[0]->setAwake();

}}

Page 14: PART V CONTACT PHYSICS Chapter 16 - 17 Aufbaumodul 3: Visuelle Programmierung II Softwaretechnologie II (Teil 2): Simulation und 3D Programmierung Prof

14

16.2 SETS OF INDEPENT OBJECTS

Page 15: PART V CONTACT PHYSICS Chapter 16 - 17 Aufbaumodul 3: Visuelle Programmierung II Softwaretechnologie II (Teil 2): Simulation und 3D Programmierung Prof

15

16.2 SETS OF INDEPENT OBJECTS

Page 16: PART V CONTACT PHYSICS Chapter 16 - 17 Aufbaumodul 3: Visuelle Programmierung II Softwaretechnologie II (Teil 2): Simulation und 3D Programmierung Prof

16

16.2 CONTACT GROUPING

Prinzip Gruppierte Objekte haben keine Beziehung zu anderen Gruppen

Page 17: PART V CONTACT PHYSICS Chapter 16 - 17 Aufbaumodul 3: Visuelle Programmierung II Softwaretechnologie II (Teil 2): Simulation und 3D Programmierung Prof

17

Die vier Teile der Engine…

force generator Berechnet den „Ist-Zustand“ des Spiels (Kräfte der Objekte)

rigid-body simulator Berechnet die Bewegungen der Körper in Abhängigkeit ihrer

Krafteinwirkung collision dedector

Berechnet die Kollisionen einzelner Objekte collision resolver

Korrigiert die Bewegungen der Rigid Bodies

17PUTTING IT ALL TOGETHER

Page 18: PART V CONTACT PHYSICS Chapter 16 - 17 Aufbaumodul 3: Visuelle Programmierung II Softwaretechnologie II (Teil 2): Simulation und 3D Programmierung Prof

18

17.1DATA FLOW TROUGH THE PHSICS ENGINE

Page 19: PART V CONTACT PHYSICS Chapter 16 - 17 Aufbaumodul 3: Visuelle Programmierung II Softwaretechnologie II (Teil 2): Simulation und 3D Programmierung Prof

19

Algorithmus der das Bewegungsverhalten von menschlichen Körpern simuliert

Bewegungen werden in Echtzeit berechnet Teile eines Körpers werden über Gelenke verbunden

17.1 RAGDOLLS

Page 20: PART V CONTACT PHYSICS Chapter 16 - 17 Aufbaumodul 3: Visuelle Programmierung II Softwaretechnologie II (Teil 2): Simulation und 3D Programmierung Prof

20

Objekte werden realistisch zerstört abhängig von der Position des Einschlags (Bruchstelle)

17.1 FRACTURE PHYSICS

Page 21: PART V CONTACT PHYSICS Chapter 16 - 17 Aufbaumodul 3: Visuelle Programmierung II Softwaretechnologie II (Teil 2): Simulation und 3D Programmierung Prof

21

Vielen Dank!