Click here to load reader

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

  • View
    105

  • Download
    0

Embed Size (px)

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

  • Folie 1
  • P HYSIKALISCHE S IMULATION MIT NVIDIA P HYS X 28.01.2009 David Riedmann Andr Mller
  • Folie 2
  • I NHALT Grundlagen physikalischer Simulation Simulation von Bewegungen Probleme bei der Simulation Kollisionen, Ste Beispielszenario/Demo PhysX Einfhrung in das SDK Spezialeffekte Hardware-Beschleunigung Demos
  • Folie 3
  • G RUNDLAGEN PHYSIKALISCHER S IMULATION
  • Folie 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:
  • Folie 5
  • BEISPIEL: O BJEKT IM FREIEN F ALL Bewegungsgleichung Beschleunigung = Erdbeschleunigung Lsung: Integrieren einmal Integrieren ergibt Geschwindigkeit nochmal Integrieren ergibt Position Integrationskonstanten Anfangsgeschwindigkeit und -position
  • Folie 6
  • I N DER S IMULATION Differenzialgleichungen numerisch lsen 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 abhngig von zuknftigen Krften
  • Folie 7
  • P ROBLEME BEI DER S IMULATION Energieerhaltung kann verletzt werden Objekte werden z.B. immer schneller Bewegung nicht exakt kein Stillstand/stndige kleine Bewegungen Durchdringungen bei Kollision Ursachen endliche Zeitschritte Rundungsungenauigkeiten (Fliekommazahlen)
  • Folie 8
  • L SUNGSMGLICHKEITEN Zeitschritte verkleinern Rechenzeit! Unerlaubte Durchdringungen in jedem Zeitschritt nachtrglich beseitigen eventuell unnatrliche Bewegungen/Sprnge Reibungen vergrern zehrt unerlaubte Energiezunahme auf muss genau eingestellt werden, damit realistisch Plastische statt elastische Kollisionen weiche Ste verringert Energie
  • Folie 9
  • S TATE OF THE A RT - M ETHODEN Langrange-Multiplikator-Methoden bilde Lsung der DGLs auf die Lsung von linearen Gleichungssystemen ab: Linear Complementary Problems (LCP) Nebenbedingungen fr Durchdringungsfreiheit Herausforderungen/Probleme singulre Matrizen schwach besetzte Matrizen Integrator-Probleme bleiben
  • Folie 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 Trgheitsmoment Kraft Drehmoment Drehachse im Allgemienen nicht konstant!
  • Folie 11
  • R OTATIONEN UM BELIEBIGE A CHSEN Vernderung der Drehachse durch Kollisionen oder beim Rollen in jedem Zeitschritt momentane Drehung und Drehachse aktualisieren Trgheitsmoment abhngig von der momentanen Drehachse Trgheitstensor (Darstellung als 3x3-Matrix) bei Drehungen um einer der drei Haupttrgheitsachsen oder dazu Parallele reicht ein skalares Trgheitsmoment z.B. bei gelagerten Drehachsen (Fahrzeugrder)
  • Folie 12
  • E XTERNE K RFTE / D REHMOMENTE beschleunigen Objekte Beschleunigung hngt von Objektmasse ab Winkelbeschleunigung hngt von Trgheitstensor ab Krfte darstellbar als Kraftvektor Vektorfelder (Kraftvektor abhngig von Position) darstellbare Effekte Gravitation Wind Magnetfelder
  • Folie 13
  • Z USTAND EINES O BJEKTES Masse Position (Vektor) Geschwindigkeit (Vektor) Drehung (Winkel/3x3-Matrix/Quaternion) Trgheitstensor (3x3-Matrix) Winkelgeschwindigkeit/Drehachse (Vektor) Zustandsnderungen durch Kfte Beschleunigungen Drehmomente Winkelbeschleunigungen
  • Folie 14
  • K OLLISIONSERKENNUNG Kugeln Kollision falls Summe der Radien > Abstand der Mittelpunkte Quader / Dreiecksobjekte Separating Axis Theorem projiziere Objektausdehnung auf alle mglichen Achsenrichtungen wenn Projektionsintervalle nicht berlappen keine Kollision
  • Folie 15
  • K OLLISIONSERKENNUNG N Objekte Paare Objekte mit vielen Dreiecken viele Rechenoperationen/Abfragen Bounding Volumes einfache Hllkrper nhern komplexe Formen an Kugeln Quader (Bounding Box, Oriented Bounding Box) Kapseln (Zylinder mit angeflanschten Halbkugeln) Space Partitioning (Octree) finde wahrscheinliche Kollisionspaare in
  • Folie 16
  • S TOPROZESSE an der Ebene: Einfallswinkel = Ausfallswinkel Geschwindigkeit Komponente parallel zur Wand bleibt gleich Komponente senkrecht zur Wand ndert Vorzeichen Elastizitt 1 elastisch keine Energie geht verloren 0 plastisch Stopartner nach Sto in Ruhe
  • Folie 17
  • S TOPROZESSE : 2 IDENTISCHE K UGELN Geschwindigkeit Tangentialkomponente unverndert Radialkomponente wird ausgetauscht
  • Folie 18
  • S TOPROZESSE : VERSCHIEDENE K UGELN Impulserhaltung + Energieerhaltung Elastischer Sto: Summe der Impulse/Energien vor und nach dem Sto gleich Radialgeschwindigkeiten nach dem Sto abhngig von den Massen der Stopartner: Einfache Implementierung nicht-elastischer Ste: reduziere beide Geschwindigkeiten um Faktor
  • Folie 19
  • S TOPROZESSE A LLGEMEIN Impulserhaltung + Energieerhaltung fr rotierende Objekte fhrt auf Newton-Hypothese beschreibt nderung der Geschwindigkeiten und Winkelgeschwindigkeiten beim Sto Parameter: Elastizitt wie zuvor
  • Folie 20
  • R EIBUNGEN Haftreibung ~ Anpresskraft ~ Haftreibungskoeffizient Gleitreibung ~ Anpresskraft ~ Gleitreibungskoeffizent ~ Relativgeschwindigkeit reibender Objekte Rollreibung ~ Anpresskraft ~ Rollreibungskoeffizient Reibungskoeffizienten Rollen < Gleiten < Haften
  • Folie 21
  • B EISPIELSZENARIO
  • Folie 22
  • geschlossener wrfelfrmiger Behlter Mittelpunkt im Ursprung Seitenlnge 2 L (vernderbar) N Kugeln im Innern Ste (Elastizitt einstellbar) Kugel-Wand Kugel-Kugel Schwerkraft in Richtung (0,-g,0) (einstellbar) keine Rotation/Rollen
  • Folie 23
  • B EISPIELSZENARIO I MPLEMENTIERUNG explizites Euler-Verfahren
  • Folie 24
  • B EISPIEL : K OLLISION K UGEL -W AND
  • Folie 25
  • B EISPIEL : K OLLISION K UGEL -K UGEL
  • Folie 26
  • E INFHRUNG IN DAS P HYS X SDK Grundlagen / Konventionen Initialisierung Aktoren Gelenke Effektoren Spezialeffekte
  • Folie 27
  • I NTERESSANTES BER P HYS X 2002 Grndung von Ageia als StartUp Entwicklung und Verffentlichung 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
  • Folie 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 verffentlicht Geforce Power Pack Jetzt finden die Berechnungen ber CUDA auf der Grafikkarte statt. Ergebnis: Eine NVIDIA Grafikkarte ist schneller als eine Ageia Zusatzkarte + Grafikkarte
  • Folie 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 fr die GPU mit speziellem NVIDIA Compiler kompilieren PhysX: kein extra CUDA-Code notwendig PhysX erkennt automatisch, ob ein CUDA- fhiger Grafikkartentreiber installiert ist und fhrt dann Berechnungen auf der GPU aus.
  • Folie 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
  • Folie 31
  • SDK: P RINZIPIELLES Physikalische Eigenschaften und Zustnde von der Geometrie entkoppelt spezielle Import-Funktionalitt fr Geometrie fr Cloth und Soft Bodies noch Vorbereitung notwendig Punktverschmelzung mglich Abfasen von Kanten
  • Folie 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 fr jeden Call Release fr jede Instanz
  • Folie 33
  • SDK: S ZENE INITIALISIEREN Definition: Eine Szene ist ein Container fr Actors (Krper) Joints (Gelenke) Effectors (Krfte) NxSceneDesc sceneDesc; sceneDesc.gravity = gDefaultGravity; NXScene *gScene = gPhysicsSDK-> createScene(sceneDesc);
  • Folie 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
  • Folie 35
  • SDK: S HAPES sind an Aktoren gebunden enthalten darstellbare Geometrie enthalten Materialeigenschaften Shape-Typen Kugeln Quader Kapseln Konvexes Mesh Dreiecks-Mesh
  • Folie 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));
  • Folie 37
  • SDK: M ASSEBESTIMMUNG EINES ACTORS erfolgt ber das Shape Mglichkeiten der Angabe einer Masse: Masse > 0; keine Dichte und Trgheitstensor Dichte > 0; keine Masse und Trgheitstensor Masse > 0, Trgheitstensor >0; keine Dichte andernfalls schlgt das Erzeugen des Actors fehl aus Dichteinformation wird Masse anhand der Shapegeometrie errechnet
  • Folie 38
  • SDK: M ATERIALEN Material bestimmt Eigenschaften Elastizitt Reibung (Gleit- und Haftreibung) Besonderheit: anisotrope Reibung Masse/Massendichte Problem: Eigenschaften nicht nur von einem Material abhngig Combine-Methoden: (min, max, avg, multiply) zuknftig bewegte Oberflchen und andere Arten der Reibung (Punktreibung)
  • Folie 39
  • SDK: K OLLISION ZWISCHEN A KTOREN Bedingungen fr Kollisionserkennung mindestens einer der Aktoren muss dynamisch sein Kollisionen zwischen den Gruppen der Aktoren mssen deaktiviert sein insbesondere Kollision zwischen Aktoren oder Shapes ist nicht deaktiviert Problem: schnelle Bewegung bei zu groen Zeitschritten => Continuous Collision Detection
  • Folie 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 hngt 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,
  • Folie 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);
  • Folie 42
  • SDK: A RCHITEKTUR -D IAGRAMM
  • Folie 43
  • P HYS X: F LSSIGKEITEN Realisiert als Partikelsystem Partikeleigenschaften Position, Geschwindigkeit, Lebenszeit, Dichte, Szenen-Setup Quellen (Emitter), kann an Shapes gebunden werden Senken (Drain) zustzliche Manipulationsmglichkeiten: Partikel hinzufgen, updaten, lschen 3 Berechnungsmethoden zur Auswahl Smoothed Particle Hydrodynamics (SPH) schnell, numerisch robust keine Interaktion zwischen Partikeln gemischt
  • Folie 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 hlt Tetraedervolumina konstant Dehnungsbeschrnkung
  • Folie 45
  • P HYS X: C LOTH (T EXTILIEN ) Parameter Biegesteifigkeit, Zugsteifigkeit Dichte, Dicke Dmpfung, Reibung externe Krfte (Wind, Schwerkraft) zulssige Dehnungs- und Biegegrenzen Massepunkte lassen sich an Festkrperpunkte/Shapes binden Realisiert als Feder-Masse-System Selbst-Kollision Kollision mit festen Krpern
  • Folie 46
  • SDK: K ONVENTIONEN Rckgabewerte und Parameter die NULL sein drfen, werden als Pointer bergeben. berprfen der Gltigkeit/ungewohnter Code: NxActorDesc actorDesc; NxBodyDesc bodyDesc;......... actorDesc.body = &bodyDesc;
  • Folie 47
  • SDK: K ONVENTIONEN Rckgabewerte und Parameter die nicht NULL sein drfen, werden als Referenzen bergeben. Vorteile: Es werden keine berflssigen Kopien angelegt und berprfung auf NULL berflssig. Objekte werden nicht direkt erstellt. Sondern ber Deskriptoren von einer bergeordneten Instanz erzeugt.
  • Folie 48
  • S IMULATIONEN LAUFEN ASYNCHRON Rigid Bodies Flssigkeiten Cloth Soft Bodies Kraftfelder
  • Folie 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
  • Folie 50
  • P HYS X P ERFORMNACE Quelle: www.computerbase.de
  • Folie 51
  • Q UELLEN www.nvidia.com http://www.computerbase.de/artikel/hardware/grafik karten/2008/bericht_nvidia_cuda_physx_ueberblick/1 http://www.computerbase.de/artikel/hardware/grafik karten/2008/bericht_nvidia_cuda_physx_ueberblick/1 http://www.heise.de/newsticker/Radeon-HD-4870-X2- AMD-stellt-schnellste-Grafikkarte-vor-- /meldung/114131 http://www.heise.de/newsticker/Radeon-HD-4870-X2- AMD-stellt-schnellste-Grafikkarte-vor-- /meldung/114131 http://www.heise.de/newsticker/Nvidia-kuendigt- GeForce-GTX-285-an--/meldung/121359 http://www.heise.de/newsticker/Nvidia-kuendigt- GeForce-GTX-285-an--/meldung/121359 http://www.cebit.de/newsanzeige_d?news=34080&ta g=1213567201&source=/newsarchiv_d&noindex http://www.cebit.de/newsanzeige_d?news=34080&ta g=1213567201&source=/newsarchiv_d&noindex http://ode.org/slides/parc/dynamics.pdf http://ode.org/slides/parc/dynamics.pdf