Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

P HYSIKALISCHE S IMULATION MIT NVIDIA P HYS X 28.01.2009 David Riedmann André Müller.

Ähnliche Präsentationen


Präsentation zum Thema: "P HYSIKALISCHE S IMULATION MIT NVIDIA P HYS X 28.01.2009 David Riedmann André Müller."—  Präsentation transkript:

1 P HYSIKALISCHE S IMULATION MIT NVIDIA P HYS X David Riedmann André Müller

2 I NHALT Grundlagen physikalischer Simulation Simulation von Bewegungen Probleme bei der Simulation Kollisionen, Stöße Beispielszenario/Demo PhysX Einführung in das SDK Spezialeffekte Hardware-Beschleunigung Demos

3 G RUNDLAGEN PHYSIKALISCHER S IMULATION

4 B ESCHREIBUNG VON B EWEGUNGEN Position eines Objektes: Geschwindigkeit Änderungsrate der Position erste Ableitung nach der Zeit: Beschleunigung Änderungsrate der Geschwindigkeit zweite Ableitung nach der Zeit:

5 BEISPIEL: O BJEKT IM FREIEN F ALL Bewegungsgleichung Beschleunigung = Erdbeschleunigung Lösung: Integrieren einmal Integrieren ergibt Geschwindigkeit nochmal Integrieren ergibt Position Integrationskonstanten Anfangsgeschwindigkeit und -position

6 I N DER S IMULATION Differenzialgleichungen numerisch lösen iteriere über diskrete Zeitschritte addiere Änderungsraten in jedem Zeitschritt Explizites Eulerverfahren in jedem Zeitschritt implizite Verfahren, Runge-Kutta mehrere Zeitschritte in die Zukunft mit verschiedenen Gewichtungen Beschleunigung abhängig von zukünftigen Kräften

7 P ROBLEME BEI DER S IMULATION Energieerhaltung kann verletzt werden Objekte werden z.B. immer schneller Bewegung nicht exakt kein Stillstand/ständige kleine Bewegungen Durchdringungen bei Kollision Ursachen endliche Zeitschritte Rundungsungenauigkeiten (Fließkommazahlen)

8 L ÖSUNGSMÖGLICHKEITEN Zeitschritte verkleinern Rechenzeit! Unerlaubte Durchdringungen in jedem Zeitschritt nachträglich beseitigen eventuell unnatürliche Bewegungen/Sprünge Reibungen vergrößern zehrt unerlaubte Energiezunahme auf muss genau eingestellt werden, damit realistisch Plastische statt elastische Kollisionen weiche Stöße verringert Energie

9 S TATE OF THE A RT - M ETHODEN Langrange-Multiplikator-Methoden bilde Lösung der DGLs auf die Lösung von linearen Gleichungssystemen ab: Linear Complementary Problems (LCP) Nebenbedingungen für Durchdringungsfreiheit Herausforderungen/Probleme singuläre Matrizen schwach besetzte Matrizen Integrator-Probleme bleiben

10 R OTATIONEN Darstellung über Winkel, 3x3 Drehmatrix oder Quaternion (4-Tupel) Rotation um feste Achse durch Schwerpunkt analog zur Translation Position Winkel/Matrix/Quaternion Geschwindigkeit Winkelgeschwindigkeit (Drehachse) Beschleunigung Winkelbeschleunigung Masse Trägheitsmoment Kraft Drehmoment Drehachse im Allgemienen nicht konstant!

11 R OTATIONEN UM BELIEBIGE A CHSEN Veränderung der Drehachse durch Kollisionen oder beim Rollen in jedem Zeitschritt momentane Drehung und Drehachse aktualisieren Trägheitsmoment abhängig von der momentanen Drehachse Trägheitstensor (Darstellung als 3x3-Matrix) bei Drehungen um einer der drei Hauptträgheitsachsen oder dazu Parallele reicht ein skalares Trägheitsmoment z.B. bei gelagerten Drehachsen (Fahrzeugräder)

12 E XTERNE K RÄFTE / D REHMOMENTE beschleunigen Objekte Beschleunigung hängt von Objektmasse ab Winkelbeschleunigung hängt von Trägheitstensor ab Kräfte darstellbar als Kraftvektor Vektorfelder (Kraftvektor abhängig von Position) darstellbare Effekte Gravitation Wind Magnetfelder

13 Z USTAND EINES O BJEKTES Masse Position (Vektor) Geschwindigkeit (Vektor) Drehung (Winkel/3x3-Matrix/Quaternion) Trägheitstensor (3x3-Matrix) Winkelgeschwindigkeit/Drehachse (Vektor) Zustandsänderungen durch Käfte Beschleunigungen Drehmomente Winkelbeschleunigungen

14 K OLLISIONSERKENNUNG Kugeln Kollision falls Summe der Radien > Abstand der Mittelpunkte Quader / Dreiecksobjekte Separating Axis Theorem projiziere Objektausdehnung auf alle möglichen Achsenrichtungen wenn Projektionsintervalle nicht überlappen keine Kollision

15 K OLLISIONSERKENNUNG N Objekte Paare Objekte mit vielen Dreiecken viele Rechenoperationen/Abfragen Bounding Volumes einfache Hüllkörper nähern komplexe Formen an Kugeln Quader (Bounding Box, Oriented Bounding Box) Kapseln (Zylinder mit angeflanschten Halbkugeln) Space Partitioning (Octree) finde wahrscheinliche Kollisionspaare in

16 S TOßPROZESSE an der Ebene: Einfallswinkel = Ausfallswinkel Geschwindigkeit Komponente parallel zur Wand bleibt gleich Komponente senkrecht zur Wand ändert Vorzeichen Elastizität 1 elastisch keine Energie geht verloren 0 plastisch Stoßpartner nach Stoß in Ruhe

17 S TOßPROZESSE : 2 IDENTISCHE K UGELN Geschwindigkeit Tangentialkomponente unverändert Radialkomponente wird ausgetauscht

18 S TOßPROZESSE : VERSCHIEDENE K UGELN Impulserhaltung + Energieerhaltung Elastischer Stoß: Summe der Impulse/Energien vor und nach dem Stoß gleich Radialgeschwindigkeiten nach dem Stoß abhängig von den Massen der Stoßpartner: Einfache Implementierung nicht-elastischer Stöße: reduziere beide Geschwindigkeiten um Faktor

19 S TOßPROZESSE A LLGEMEIN Impulserhaltung + Energieerhaltung für rotierende Objekte führt auf Newton-Hypothese beschreibt Änderung der Geschwindigkeiten und Winkelgeschwindigkeiten beim Stoß Parameter: Elastizität wie zuvor

20 R EIBUNGEN Haftreibung ~ Anpresskraft ~ Haftreibungskoeffizient Gleitreibung ~ Anpresskraft ~ Gleitreibungskoeffizent ~ Relativgeschwindigkeit reibender Objekte Rollreibung ~ Anpresskraft ~ Rollreibungskoeffizient Reibungskoeffizienten Rollen < Gleiten < Haften

21 B EISPIELSZENARIO

22 geschlossener würfelförmiger Behälter Mittelpunkt im Ursprung Seitenlänge 2 L (veränderbar) N Kugeln im Innern Stöße (Elastizität einstellbar) Kugel-Wand Kugel-Kugel Schwerkraft in Richtung (0,-g,0) (einstellbar) keine Rotation/Rollen

23 B EISPIELSZENARIO – I MPLEMENTIERUNG explizites Euler-Verfahren

24 B EISPIEL : K OLLISION K UGEL -W AND

25 B EISPIEL : K OLLISION K UGEL -K UGEL

26 E INFÜHRUNG IN DAS P HYS X SDK Grundlagen / Konventionen Initialisierung Aktoren Gelenke Effektoren Spezialeffekte

27 I NTERESSANTES ÜBER P HYS X 2002 Gründung von Ageia als StartUp Entwicklung und Veröffentlichung von PhysX (vormals NovodeX) im Mai 2006 PhysX besteht aus zwei Komponenten (SDK und einer Zusatzkarte) Zeitgleich entwickelt Havok zusammen mit NVIDIA Havok FX; eine Physik-Engine die die Physikberechnung auf die Grafikkarte holt

28 I NTERESSANTES ÜBER P HYS X September 2007: Intel kauft Havok Havok FX wird eingestellt, da Intels Grafikkarten zu schwach sind. Februar 2008: NVIDIA übernimmt Ageia August 2008: NVIDIA veröffentlicht Geforce Power Pack Jetzt finden die Berechnungen über CUDA auf der Grafikkarte statt. Ergebnis: Eine NVIDIA Grafikkarte ist schneller als eine Ageia Zusatzkarte + Grafikkarte

29 H ARWARE -B ESCHLEUNINGUNG : CUDA Compute Unified Device Architecture Berechnungen über GPU und Texturspeicher nutzt im Prinzip gleiche Hardware- Mechanismen wie Shaderprogramme CUDA normalerweise: C-Funktionen Kernels für die GPU mit speziellem NVIDIA Compiler kompilieren PhysX: kein extra CUDA-Code notwendig PhysX erkennt automatisch, ob ein CUDA- fähiger Grafikkartentreiber installiert ist und führt dann Berechnungen auf der GPU aus.

30 H ARWARE -B ESCHLEUNINGUNG : CUDA Aktuelle Leistungsdaten (theoretisch): NVIDIA GeForce GTX 285:1,06 TFLOP AMD HD 4870 (RV770) X2:2,4 TFLOP Core 2 Quad bei 3 Ghz:96 GFLOPS Mehr Infos zu Cuda hierhier

31 SDK: P RINZIPIELLES Physikalische Eigenschaften und Zustände von der Geometrie entkoppelt spezielle Import-Funktionalität für Geometrie für Cloth und Soft Bodies noch Vorbereitung notwendig Punktverschmelzung möglich Abfasen von Kanten

32 SDK: I NITIALISIERUNG NxPhysicsSDK* gPhysicsSDK NxCreatePhysicsSDK ( NxU32 sdkVersion, NxUserAllocator * allocator = NULL, NxUserOutputStream * outputStream = NULL, const NxPhysicsSDKDesc & desc = NxPhysicsSDKDesc(), NxSDKCreateError * errorCode = NULL ) erstellt bei Vorhandensein des richtigen SDK eine Instanz des PhysX SDK Singleton/ReferenceCounting für jeden Call Release für jede Instanz

33 SDK: S ZENE INITIALISIEREN Definition: Eine Szene ist ein Container für Actors (Körper) Joints (Gelenke) Effectors (Kräfte) NxSceneDesc sceneDesc; sceneDesc.gravity = gDefaultGravity; NXScene *gScene = gPhysicsSDK-> createScene(sceneDesc);

34 SDK: A CTOR ERSTELLEN Ein Actor ist das wesentliche Simulationsobjekt von PhysX wird von einer Szene erstellt und ist in ihr enthalten Kann dynamisch (Body vorhanden) oder statisch (Body nicht vorhanden) sein. referenziert 0 (dynamisch), 1(statisch) oder mehrere Shapes

35 SDK: S HAPES sind an Aktoren gebunden enthalten darstellbare Geometrie enthalten Materialeigenschaften Shape-Typen Kugeln Quader Kapseln Konvexes Mesh Dreiecks-Mesh

36 SDK: A CTOR B EISPIELCODE NxActorDesc actorDesc; NxBodyDesc bodyDesc; NxBoxShapeDesc boxDesc; boxDesc.dimensions.set( 1, 1, 10); boxDesc.localPose.t = NxVec3(0, 0, 0); actorDesc.body = &bodyDesc; actorDesc.density = 1.0f; actorDesc.globalPose.t = NxVec3(-10,40,10); NxActor *gBox = gScene->createActor(actorDesc); if(gBox) gBox->setLinearVelocity(NxVec3(0,50,0));

37 SDK: M ASSEBESTIMMUNG EINES ACTORS erfolgt über das Shape Möglichkeiten der Angabe einer Masse: Masse > 0; keine Dichte und Trägheitstensor Dichte > 0; keine Masse und Trägheitstensor Masse > 0, Trägheitstensor >0; keine Dichte andernfalls schlägt das Erzeugen des Actors fehl aus Dichteinformation wird Masse anhand der Shapegeometrie errechnet

38 SDK: M ATERIALEN Material bestimmt Eigenschaften Elastizität Reibung (Gleit- und Haftreibung) Besonderheit: anisotrope Reibung Masse/Massendichte Problem: Eigenschaften nicht nur von einem Material abhängig Combine-Methoden: (min, max, avg, multiply) zukünftig bewegte Oberflächen und andere Arten der Reibung (Punktreibung)

39 SDK: K OLLISION ZWISCHEN A KTOREN Bedingungen für Kollisionserkennung mindestens einer der Aktoren muss dynamisch sein Kollisionen zwischen den Gruppen der Aktoren müssen deaktiviert sein insbesondere Kollision zwischen Aktoren oder Shapes ist nicht deaktiviert Problem: schnelle Bewegung bei zu großen Zeitschritten => Continuous Collision Detection

40 SDK: J OINTS Ein Joint, auch Constraint genannt, referenziert immer zwei Actors und setzt deren Bewegung in Beziehung zueinander. Der Aufwand der Berechnung eines Joints hängt unmittelbar von der Anzahl der Freiheitsgrade (maximal 6) ab. Kann dynamisch (Body vorhanden) oder statisch (Body nicht vorhanden) sein. Je nach Anwendungsgebiet gibt es angepasste Joints: NxDistanceJoint, NxCylindricalJoint, NxD6Joint, …

41 SDK: J OINTS B EISPIELCODE NxDistanceJointDesc distDesc; distDesc.actor[0] = pSphere1; distDesc.actor[1] = pSphere2; distDesc.localAnchor[0].zero(); distDesc.localAnchor[1].zero(); NxSpringDesc spring; spring.spring = 100; spring.damper = 0.5; distDesc.spring = spring; NxJoint *pJoints = gScene->createJoint(distDesc);

42 SDK: A RCHITEKTUR -D IAGRAMM

43 P HYS X: F LÜSSIGKEITEN Realisiert als Partikelsystem Partikeleigenschaften Position, Geschwindigkeit, Lebenszeit, Dichte,… Szenen-Setup Quellen (Emitter), kann an Shapes gebunden werden Senken (Drain) zusätzliche Manipulationsmöglichkeiten: Partikel hinzufügen, updaten, löschen 3 Berechnungsmethoden zur Auswahl Smoothed Particle Hydrodynamics (SPH) schnell, numerisch robust keine Interaktion zwischen Partikeln gemischt

44 P HYS X: S OFT B ODIES Realisiert als Feder-Masse-System benutzt den Cloth-Solver erfordert Tetraedrisierung von Objekten Federn an den Tetraederkanten hält Tetraedervolumina konstant Dehnungsbeschränkung

45 P HYS X: C LOTH (T EXTILIEN ) Parameter Biegesteifigkeit, Zugsteifigkeit Dichte, Dicke Dämpfung, Reibung externe Kräfte (Wind, Schwerkraft) zulässige Dehnungs- und Biegegrenzen Massepunkte lassen sich an Festkörperpunkte/Shapes binden Realisiert als Feder-Masse-System Selbst-Kollision Kollision mit festen Körpern

46 SDK: K ONVENTIONEN Rückgabewerte und Parameter die NULL sein dürfen, werden als Pointer übergeben. Überprüfen der Gültigkeit/ungewohnter Code: NxActorDesc actorDesc; NxBodyDesc bodyDesc; actorDesc.body = &bodyDesc;

47 SDK: K ONVENTIONEN Rückgabewerte und Parameter die nicht NULL sein dürfen, werden als Referenzen übergeben. Vorteile: Es werden keine überflüssigen Kopien angelegt und Überprüfung auf NULL überflüssig. Objekte werden nicht direkt erstellt. Sondern über Deskriptoren von einer übergeordneten Instanz erzeugt.

48 S IMULATIONEN LAUFEN ASYNCHRON Rigid Bodies Flüssigkeiten Cloth Soft Bodies Kraftfelder

49 P HYS X T HREADING I NTERFACE sceneDesc.flags &= ~NX_SF_SIMULATE_SEPARATE_THREAD; sceneDesc.flags |= NX_SF_SIMULATE_SEPARATE_THREAD; Weiteres Flag: NX_SF_ENABLE_MULTITHREAD

50 P HYS X P ERFORMNACE Quelle:

51 Q UELLEN karten/2008/bericht_nvidia_cuda_physx_ueberblick/1 karten/2008/bericht_nvidia_cuda_physx_ueberblick/1 AMD-stellt-schnellste-Grafikkarte-vor-- /meldung/ AMD-stellt-schnellste-Grafikkarte-vor-- /meldung/ GeForce-GTX-285-an--/meldung/ GeForce-GTX-285-an--/meldung/ g= &source=/newsarchiv_d&noindex g= &source=/newsarchiv_d&noindex


Herunterladen ppt "P HYSIKALISCHE S IMULATION MIT NVIDIA P HYS X 28.01.2009 David Riedmann André Müller."

Ähnliche Präsentationen


Google-Anzeigen