+ All Categories
Home > Documents > PART V CONTACT PHYSICS Chapter 16 - 17 Aufbaumodul 3: Visuelle Programmierung II Softwaretechnologie...

PART V CONTACT PHYSICS Chapter 16 - 17 Aufbaumodul 3: Visuelle Programmierung II Softwaretechnologie...

Date post: 06-Apr-2015
Category:
Upload: siegmund-boeschen
View: 106 times
Download: 1 times
Share this document with a friend
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
Transcript
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!


Recommended