Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

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

Ähnliche Präsentationen


Präsentation zum Thema: "PART V CONTACT PHYSICS Chapter 16 - 17 Aufbaumodul 3: Visuelle Programmierung II Softwaretechnologie II (Teil 2): Simulation und 3D Programmierung Prof."—  Präsentation transkript:

1 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

2 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

3 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

4 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

5 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()

6 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

7 7 16.1 THE BENEFITS OF PESSIMISTIC COLLISON DETECTION

8 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 )

9 9 16.2 OPTIMIZATIONS Zu den Optimierungen… Berechnungen nur einmalig ausführen Speicherplatz wieder freigeben Überflüssige Berechnungen verkürzen

10 10 16.2 SLEEP Problem Konsistente Einwirkung von Kraft verhindert Ruhezustand Ziel Berechnungen für ruhende Objekte vermeiden Lösung Sleep State hinzufügen

11 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

12 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); }

13 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(); }

14 14 16.2 SETS OF INDEPENT OBJECTS

15 15 16.2 SETS OF INDEPENT OBJECTS

16 16 16.2 CONTACT GROUPING Prinzip Gruppierte Objekte haben keine Beziehung zu anderen Gruppen

17 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 17 PUTTING IT ALL TOGETHER

18 18 17.1 DATA FLOW TROUGH THE PHSICS ENGINE

19 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

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

21 21 Vielen Dank!


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

Ähnliche Präsentationen


Google-Anzeigen