part v contact physics chapter 16 - 17 aufbaumodul 3: visuelle programmierung ii softwaretechnologie...
TRANSCRIPT
![Page 1: PART V CONTACT PHYSICS Chapter 16 - 17 Aufbaumodul 3: Visuelle Programmierung II Softwaretechnologie II (Teil 2): Simulation und 3D Programmierung Prof](https://reader035.vdocuments.pub/reader035/viewer/2022062418/55204d8149795902118d338d/html5/thumbnails/1.jpg)
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](https://reader035.vdocuments.pub/reader035/viewer/2022062418/55204d8149795902118d338d/html5/thumbnails/2.jpg)
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](https://reader035.vdocuments.pub/reader035/viewer/2022062418/55204d8149795902118d338d/html5/thumbnails/3.jpg)
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](https://reader035.vdocuments.pub/reader035/viewer/2022062418/55204d8149795902118d338d/html5/thumbnails/4.jpg)
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](https://reader035.vdocuments.pub/reader035/viewer/2022062418/55204d8149795902118d338d/html5/thumbnails/5.jpg)
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](https://reader035.vdocuments.pub/reader035/viewer/2022062418/55204d8149795902118d338d/html5/thumbnails/6.jpg)
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](https://reader035.vdocuments.pub/reader035/viewer/2022062418/55204d8149795902118d338d/html5/thumbnails/7.jpg)
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](https://reader035.vdocuments.pub/reader035/viewer/2022062418/55204d8149795902118d338d/html5/thumbnails/8.jpg)
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](https://reader035.vdocuments.pub/reader035/viewer/2022062418/55204d8149795902118d338d/html5/thumbnails/9.jpg)
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](https://reader035.vdocuments.pub/reader035/viewer/2022062418/55204d8149795902118d338d/html5/thumbnails/10.jpg)
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](https://reader035.vdocuments.pub/reader035/viewer/2022062418/55204d8149795902118d338d/html5/thumbnails/11.jpg)
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](https://reader035.vdocuments.pub/reader035/viewer/2022062418/55204d8149795902118d338d/html5/thumbnails/12.jpg)
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](https://reader035.vdocuments.pub/reader035/viewer/2022062418/55204d8149795902118d338d/html5/thumbnails/13.jpg)
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](https://reader035.vdocuments.pub/reader035/viewer/2022062418/55204d8149795902118d338d/html5/thumbnails/14.jpg)
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](https://reader035.vdocuments.pub/reader035/viewer/2022062418/55204d8149795902118d338d/html5/thumbnails/15.jpg)
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](https://reader035.vdocuments.pub/reader035/viewer/2022062418/55204d8149795902118d338d/html5/thumbnails/16.jpg)
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](https://reader035.vdocuments.pub/reader035/viewer/2022062418/55204d8149795902118d338d/html5/thumbnails/17.jpg)
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](https://reader035.vdocuments.pub/reader035/viewer/2022062418/55204d8149795902118d338d/html5/thumbnails/18.jpg)
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](https://reader035.vdocuments.pub/reader035/viewer/2022062418/55204d8149795902118d338d/html5/thumbnails/19.jpg)
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](https://reader035.vdocuments.pub/reader035/viewer/2022062418/55204d8149795902118d338d/html5/thumbnails/20.jpg)
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](https://reader035.vdocuments.pub/reader035/viewer/2022062418/55204d8149795902118d338d/html5/thumbnails/21.jpg)
21
Vielen Dank!