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

PHYSIKALISCHE SIMULATIONMIT NVIDIA PHYSX28.01.2009David RiedmannAndré Müller

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

INHALT Grundlagen physikalischer

SimulationSimulation von BewegungenProbleme bei der SimulationKollisionen, StößeBeispielszenario/Demo

PhysX Einführung in das SDKSpezialeffekteHardware-BeschleunigungDemos

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

GRUNDLAGEN PHYSIKALISCHER SIMULATION

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

BESCHREIBUNG VON BEWEGUNGEN

Position eines Objektes: Geschwindigkeit

Änderungsrate der Positionerste Ableitung nach der Zeit:

BeschleunigungÄnderungsrate der Geschwindigkeitzweite Ableitung nach der Zeit:

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

BEISPIEL: OBJEKT IM FREIEN FALL

Bewegungsgleichung Beschleunigung = Erdbeschleunigung

Lösung: Integrieren einmal Integrieren ergibt

Geschwindigkeit

nochmal Integrieren ergibt Position

IntegrationskonstantenAnfangsgeschwindigkeit und -position

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

IN DER SIMULATION Differenzialgleichungen numerisch lösen

iteriere über diskrete Zeitschritte addiere Änderungsraten in jedem

Zeitschritt Explizites Eulerverfahren

in jedem Zeitschritt

implizite Verfahren, Runge-Kuttamehrere Zeitschritte in die Zukunft mit

verschiedenen GewichtungenBeschleunigung abhängig von zukünftigen

Kräften

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

PROBLEME BEI DER SIMULATION Energieerhaltung kann verletzt

werdenObjekte werden z.B. immer schneller

Bewegung nicht exakt kein Stillstand/ständige kleine

Bewegungen Durchdringungen bei Kollision Ursachen

endliche ZeitschritteRundungsungenauigkeiten

(Fließkommazahlen)

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

LÖSUNGSMÖGLICHKEITEN Zeitschritte verkleinern Rechenzeit! Unerlaubte Durchdringungen in jedem

Zeitschritt nachträglich beseitigeneventuell unnatürliche

Bewegungen/Sprünge Reibungen vergrößern

zehrt unerlaubte Energiezunahme aufmuss genau eingestellt werden, damit

realistisch Plastische statt elastische Kollisionen

„weiche“ Stößeverringert Energie

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

STATE OF THE ART - METHODENLangrange-Multiplikator-Methoden bilde Lösung der DGLs auf die Lösung

von linearen Gleichungssystemen ab:Linear Complementary Problems (LCP)

Nebenbedingungen für Durchdringungsfreiheit

Herausforderungen/Problemesinguläre Matrizenschwach besetzte MatrizenIntegrator-Probleme bleiben

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

ROTATIONEN Darstellung über Winkel, 3x3 Drehmatrix

oder Quaternion (4-Tupel) Rotation um feste Achse durch

Schwerpunktanalog zur TranslationPosition Winkel/Matrix/QuaternionGeschwindigkeit Winkelgeschwindigkeit

(Drehachse) Beschleunigung WinkelbeschleunigungMasse TrägheitsmomentKraft Drehmoment

Drehachse im Allgemienen nicht konstant!

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

ROTATIONEN UM BELIEBIGE ACHSEN

Veränderung der Drehachse durch Kollisionen oder beim Rollenin 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ägheitsmomentz.B. bei gelagerten Drehachsen (Fahrzeugräder)

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

EXTERNE KRÄFTE / DREHMOMENTE

beschleunigen ObjekteBeschleunigung hängt von Objektmasse 𝑚 ab

Winkelbeschleunigung hängt von Trägheitstensor ab

Kräfte darstellbar alsKraftvektorVektorfelder (Kraftvektor abhängig von Position)

darstellbare EffekteGravitationWindMagnetfelder

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

ZUSTAND EINES OBJEKTES

Masse Position (Vektor) Geschwindigkeit (Vektor) Drehung

(Winkel/3x3-Matrix/Quaternion) Trägheitstensor (3x3-Matrix) Winkelgeschwindigkeit/Drehachse

(Vektor) Zustandsänderungen durch

Käfte BeschleunigungenDrehmomente

Winkelbeschleunigungen

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

KOLLISIONSERKENNUNG Kugeln

Kollision falls Summe der Radien > Abstand der Mittelpunkte

Quader / DreiecksobjekteSeparating Axis Theoremprojiziere Objektausdehnung auf

alle möglichen Achsenrichtungenwenn Projektionsintervalle

nicht überlappen keine Kollision

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

KOLLISIONSERKENNUNG N Objekte Paare Objekte mit vielen Dreiecken

viele Rechenoperationen/Abfragen Bounding Volumes

einfache Hüllkörper nähern komplexe Formen an

KugelnQuader (Bounding Box, Oriented Bounding

Box)Kapseln (Zylinder mit angeflanschten

Halbkugeln) Space Partitioning (Octree)

finde wahrscheinliche Kollisionspaare in

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

STOẞPROZESSE an der Ebene: Einfallswinkel =

Ausfallswinkel Geschwindigkeit

Komponente parallel zur Wand bleibt gleich

Komponente senkrecht zur Wand ändert Vorzeichen

Elastizität1 elastisch

keine Energie geht verloren0 plastisch

Stoßpartner nach Stoß in Ruhe

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

STOẞPROZESSE: 2 IDENTISCHE KUGELN

GeschwindigkeitTangentialkomponente unverändertRadialkomponente wird ausgetauscht

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

STOẞPROZESSE: VERSCHIEDENE KUGELN

Impulserhaltung + EnergieerhaltungElastischer 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

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

STOẞPROZESSE ALLGEMEIN

Impulserhaltung + Energieerhaltung für rotierende Objekte

führt auf Newton-Hypothesebeschreibt Änderung der

Geschwindigkeiten und Winkelgeschwindigkeiten beim Stoß

Parameter: Elastizität wie zuvor

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

REIBUNGEN Haftreibung

~ Anpresskraft~ Haftreibungskoeffizient

Gleitreibung~ Anpresskraft ~ Gleitreibungskoeffizent~ Relativgeschwindigkeit reibender Objekte

Rollreibung~ Anpresskraft ~ Rollreibungskoeffizient

ReibungskoeffizientenRollen < Gleiten < Haften

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

BEISPIELSZENARIO

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

BEISPIELSZENARIO geschlossener würfelförmiger

BehälterMittelpunkt im UrsprungSeitenlänge 2L (veränderbar)

N Kugeln im Innern Stöße (Elastizität einstellbar)

Kugel-WandKugel-Kugel

Schwerkraft in Richtung (0,-g,0) (einstellbar)

keine Rotation/Rollen

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

BEISPIELSZENARIO – IMPLEMENTIERUNG explizites Euler-Verfahren

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

BEISPIEL: KOLLISION KUGEL-WAND

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

BEISPIEL: KOLLISION KUGEL-KUGEL

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

EINFÜHRUNG IN DAS PHYSX SDK• Grundlagen / Konventionen• Initialisierung • Aktoren• Gelenke• Effektoren• Spezialeffekte

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

INTERESSANTES ÜBER PHYSX

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

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

INTERESSANTES ÜBER PHYSX

September 2007: Intel kauft HavokHavok 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

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

HARWARE-BESCHLEUNINGUNG: 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 istund führt dann Berechnungen auf der GPU aus.

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

HARWARE-BESCHLEUNINGUNG: 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 hier

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

SDK: PRINZIPIELLES Physikalische Eigenschaften und

Zustände von der Geometrie entkoppelt

spezielle Import-Funktionalität für Geometriefür Cloth und Soft Bodies noch

Vorbereitung notwendigPunktverschmelzung möglichAbfasen von Kanten

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

SDK: INITIALISIERUNGNxPhysicsSDK* 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

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

SDK: SZENE INITIALISIEREN

Definition: Eine Szene ist ein Container fürActors (Körper)Joints (Gelenke)Effectors (Kräfte)

NxSceneDesc sceneDesc;sceneDesc.gravity = gDefaultGravity;NXScene *gScene = gPhysicsSDK->

createScene(sceneDesc);

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

SDK: ACTOR 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

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

SDK: SHAPES sind an Aktoren gebunden enthalten darstellbare Geometrie enthalten Materialeigenschaften Shape-Typen

KugelnQuaderKapselnKonvexes MeshDreiecks-Mesh

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

SDK: ACTOR BEISPIELCODE

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

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

SDK: MASSEBESTIMMUNG EINES ACTORS erfolgt über das ShapeMö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

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

SDK: MATERIALEN Material bestimmt Eigenschaften

Elastizität Reibung (Gleit- und Haftreibung)Besonderheit: anisotrope ReibungMasse/Massendichte

Problem: Eigenschaften nicht nur von einem Material abhängigCombine-Methoden: (min, max, avg,

multiply) zukünftig bewegte Oberflächen

und andere Arten der Reibung (Punktreibung)

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

SDK: KOLLISION ZWISCHEN AKTORENBedingungen 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

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

SDK: JOINTS 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, …

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

SDK: JOINTS BEISPIELCODE

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

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

SDK: ARCHITEKTUR-DIAGRAMM

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

PHYSX: FLÜSSIGKEITEN Realisiert als Partikelsystem

PartikeleigenschaftenPosition, Geschwindigkeit, Lebenszeit, Dichte,…

Szenen-SetupQuellen (Emitter), kann an Shapes gebunden

werdenSenken (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 Partikelngemischt

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

PHYSX: SOFT BODIES Realisiert als Feder-Masse-System

benutzt den Cloth-Solvererfordert Tetraedrisierung von ObjektenFedern an den Tetraederkantenhält Tetraedervolumina konstantDehnungsbeschränkung

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

PHYSX: CLOTH (TEXTILIEN)

ParameterBiegesteifigkeit, ZugsteifigkeitDichte, DickeDämpfung, Reibungexterne Kräfte (Wind, Schwerkraft)zulässige Dehnungs- und BiegegrenzenMassepunkte lassen sich an

Festkörperpunkte/Shapes binden Realisiert als Feder-Masse-System

Selbst-KollisionKollision mit festen Körpern

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

SDK: KONVENTIONEN 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;

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

SDK: KONVENTIONEN 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.

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

SIMULATIONEN LAUFEN ASYNCHRON

Rigid Bodies Flüssigkeiten Cloth Soft Bodies Kraftfelder

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

PHYSX THREADING INTERFACE

sceneDesc.flags &= ~NX_SF_SIMULATE_SEPARATE_THREAD;

sceneDesc.flags |= NX_SF_SIMULATE_SEPARATE_THREAD;

Weiteres Flag: NX_SF_ENABLE_MULTITHREAD

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

PHYSX PERFORMNACE

Quelle: www.computerbase.de

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

QUELLEN www.nvidia.com http://www.computerbase.de

/artikel/hardware/grafikkarten/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/Nvidia-kuendigt-GeForce-GTX-285-an--/meldung/121359

http://www.cebit.de/newsanzeige_d?news=34080&tag=1213567201&source=/newsarchiv_d&noindex

http://ode.org/slides/parc/dynamics.pdf


Recommended