Sw2 PhysX.

Slides:



Advertisements
Hasonló előadás
C# nyelvi áttekintő A „Programozás C# nyelven (Illés Zoltán)”
Advertisements

Osztály leszármaztatás
1 Hernyák Zoltán Programozási Nyelvek II. Eszterházy Károly Főiskola Számítástudományi tsz.
2010/2011 ősz Klár Gergely  A DirectX egy alacsonyszintű API gyűjtemény  Multimédiás alkalmazások futtatására, írására szolgál  Részei.
C++ programozási nyelv Gyakorlat hét
Lua script Szécsi László
1 Hernyák Zoltán Programozási Nyelvek II. Eszterházy Károly Főiskola Számítástudományi tsz.
Analitikus (koordináta) geometriai gyorstalpaló
Grafikus játékok fejlesztése Szécsi László t14-physics
GPGPU labor I. OpenGL, Cg.
Öröklődés 2..
Programozási Nyelvek (C++) Gyakorlat Gyak 03.
© Kozsik Tamás Beágyazott osztályok A blokkstrukturáltság támogatása –Eddig: egymásba ágyazható blokk utasítások Osztálydefiníciók is egymásba.
Készítsünk el egy olyan egy dokumentumos (SDI) alkalmazást, amely alkalmas a mysql adatbáziskezelővel létrehozott BANK adatbázisunk UGYFEL táblájának.
Csala Péter ANDN #4. 2 Tartalom  C# - ban előre definiált típusok  Változók  Változókkal műveletek  Elágazás  Ciklus.
Bevezetés a Java programozásba
Osztályok Garbage collection.  általában minden osztálynak vannak adattagjai és/vagy metódusai ◦ adattagok megadása:  [láthatóság] [static] [final]
Mikrovezérlők alkalmazástechnikája laboratóriumi gyakorlat Kovács Tamás & Mingesz Róbert 3. óra február 20., 23.
UNIVERSITY OF SZEGED D epartment of Software Engineering UNIVERSITAS SCIENTIARUM SZEGEDIENSIS Programozás II. 8. Gyakorlat Operator overloading II.
UNIVERSITY OF SZEGED D epartment of Software Engineering UNIVERSITAS SCIENTIARUM SZEGEDIENSIS Programozás II. 9. Gyakorlat Alap file műveletek.
Programozás II. 3. Gyakorlat C++ alapok.
UNIVERSITY OF SZEGED D epartment of Software Engineering UNIVERSITAS SCIENTIARUM SZEGEDIENSIS Programozás II. 6. Gyakorlat const, static, dinamikus 2D.
Tömbök ismétlés Osztályok Java-ban Garbage collection
A LabVIEW használata az oktatásban
A Java programozási nyelvSoós Sándor 1/17 Java programozási nyelv 4. rész – Osztályok II. Nyugat-Magyarországi Egyetem Faipari Mérnöki Kar Informatikai.
Java programozási nyelv 3. rész – Osztályok I.
A C++ programozási nyelvSoós Sándor 1/10 C++ programozási nyelv Gyakorlat - 5. hét Nyugat-Magyarországi Egyetem Faipari Mérnöki Kar Informatikai Intézet.
C# tagfüggvények.
C# tagfüggvények.
Web-grafika (VRML) 10. gyakorlat Kereszty Gábor. Script típusok Elemi típusok: szám: egész vagy lebegőpontos – int / float – 1 / 1.1 string: ‘Hello World!’
Delphi programozás 8. ELŐADÁS ADO ActiveX Data Objects.
Ficsor Lajos Template-ek CPP8/ 1 Template-ek. Ficsor Lajos Template-ek CPP8/ 2 A template fogalma Kiindulási probléma: tetszőleges típusokon kellene ugyanolyan.
Összetett adattípusok
2008/2009 tavasz Klár Gergely  A DirectX egy alacsonyszintű API gyűjtemény  Multimédiás alkalmazások futtatására, írására szolgál 
Szoftvertechnológia alapjai Java előadások Förhécz András, doktorandusz tárgy honlap:
Objektum orientált programozás a gyakorlatban
1 Hernyák Zoltán Programozási Nyelvek II. Eszterházy Károly Főiskola Számítástudományi tsz.
1 Hernyák Zoltán Programozási Nyelvek II. Eszterházy Károly Főiskola Számítástudományi tsz.
1 Hernyák Zoltán Programozási Nyelvek II. Eszterházy Károly Főiskola Számítástudományi tsz.
Javascript Microsoft által készített kiegészítése Statikus típusosság Nagy projektek Windows 8 fejlesztésénél WinRT egy részét ebben írták Nyílt forráskódú,
Motor I. Scene graph XML Rendering Szécsi László.
Megjelenítő-motor, színtér- menedzsment Szécsi László.
Fizikai szimuláció - járművek
Egyenesvonalú (lineáris) adatszerkezetek
„Kapocs” Kapcsolatokat (címek, telefonszámok stb
2. gyakorlat DirectX 2007/2008 tavasz Klár Gergely
A Visual Basic nyelvi elemei
Programozás III KOLLEKCIÓK.
Objektumorientált alapjai ISZAM III.évf. részére Bunkóczi László.
Struktúrák a C nyelvben 1 Akkor használjuk, ha az egy egyedre jellemző különböző típusú adatokat együtt akarjuk tárolni. Lényegében típusdeklaráció. A.
TÁMOP /1-2F JAVA programozási nyelv NetBeans fejlesztőkörnyezetben I/13. évfolyam Osztályok, objektumok definiálása és alkalmazása. Saját.
Krizsán Zoltán, iit C# osztályok 2 Adattagok  Osztály hatáskörben definiált változó.  Formája: [attribútum] [módosító] típus azonosító [=kezdő érték][,
Sprite animáció, kamera követés, háttér mozgás
3d alakzatok, fizikai anyagok, kényszerek
„Designer-barát” játéklogika
Fodor Edina, óra feladata Fodor Edina,
Vizualizáció és képszintézis
Lineáris egyenletrendszerek megoldása
gg004-Mesh project copy-paste-rename gg002-App folder
Kamera, 3D, transzformációk Szécsi László
JAVA programozási nyelv NetBeans fejlesztőkörnyezetben I/13. évfolyam
B M Java Programozás 9. Gy: Java alapok IT A N Adatkezelő 5.rész
Environment mapping Szécsi László
B M Java Programozás 1. Gy: Java alapok IT A N Ismétlés ++
JAVA programozási nyelv NetBeans fejlesztőkörnyezetben I/13. évfolyam
Folyamatok.
Szálszinkronizáció.
3. osztályban.
JavaScript a böngészőben
Függvénysablonok használata
Előadás másolata:

Sw2 PhysX

Kiindulás cg.iit.bme.hu/~szecsi/sw2/GraphGameSw2PhysXInitial.zip include és lib könyvtárak beállítása

createResources: physx init static PxDefaultErrorCallback gDefaultErrorCallback; static PxDefaultAllocator gDefaultAllocatorCallback; static PxSimulationFilterShader gDefaultFilterShader = PxDefaultSimulationFilterShader; foundation = PxCreateFoundation(PX_FOUNDATION_VERSION, gDefaultAllocatorCallback, gDefaultErrorCallback); physics = PxCreatePhysics(PX_PHYSICS_VERSION, *foundation, PxTolerancesScale(), false);

PhysX scene létrehozás PxSceneDesc sceneDesc(physics->getTolerancesScale()); sceneDesc.gravity = PxVec3(0.0f, -9.81f, 0.0f); if (!sceneDesc.cpuDispatcher) { cpuDispatcher = PxDefaultCpuDispatcherCreate(1); sceneDesc.cpuDispatcher = cpuDispatcher; } if (!sceneDesc.filterShader) sceneDesc.filterShader = gDefaultFilterShader; scene = physics->createScene(sceneDesc);

anyag material = physics->createMaterial(0.5, 0.5, 0.5);

Labda hozzunk létre egy Ball példányt nézzük meg a konstruktorát gravitáció most legyen (kommentezzük ki a kikapcsolását) paraméterek ballMesh tegyük be az entities vektorba

Eredmény megjelenő labda

animate scene->simulate(dt); scene->fetchResults(true);

Eredmény zuhanó labda

Platform létrehozása mesh betöltése ball mintájára ütközőgeometria Ball mintájára (új Platform osztály) PxBoxGeometry( PxVec3(50, 5, 50)) entitás létrehozása Ball mintájára

Eredmény zuhanó labda és platform

Kinematikus platform actor->setRigidBodyFlag(PxRigidBodyFlag::eKINEMATIC, true); //PxRigidBodyExt::updateMassAndInertia(*actor, density);

Eredmény platformon pattogó labda

Robotkar alkatrészei mesh-ek betöltése ball mintájára ütközőgeometriák Ball mintájára (új osztályok) actor->setActorFlag(PxActorFlag::eDISABLE_GRAVITY, true); entitások ügyesen elhelyezve egyelőre csak a base12 elem elég a platformhoz fogjuk jointolni később majd a többi alkatrész is kell

Joint építő metódus void buildJoint( Entity::P r0, Entity::P r1, const physx::PxVec3& anchor, const physx::PxVec3& axis, int motorKey, int motorBackwardsKey);

Joint építő metódus void Game::buildJoint(Entity::P r0, Entity::P r1, const PxVec3& anchor, const PxVec3& axis, int motorKey, int motorBackwardsKey) { PxVec3 turn = axis.cross(PxVec3(1, 0, 0)); float qangle = asin(turn.magnitude()); PxVec3 qaxis = turn.getNormalized(); if (qangle < 0.0001f) qaxis = PxVec3(0, 1, 0); if (axis.x < 0) qangle += 3.14; }

Joint építő metódus PxD6Joint* joint = PxD6JointCreate(*physics, r0->getActor(), r0->getActor()->getGlobalPose().getInverse() * PxTransform(anchor) * PxTransform(PxQuat(qangle, qaxis)), r1->getActor(), r1->getActor()->getGlobalPose().getInverse() * PxTransform(anchor) * PxTransform(PxQuat(qangle, qaxis)));

Joint építő metódus joint->setMotion(PxD6Axis::eX, PxD6Motion::eLOCKED); joint->setMotion(PxD6Axis::eY, PxD6Motion::eLOCKED); joint->setMotion(PxD6Axis::eZ, PxD6Motion::eLOCKED); joint->setMotion(PxD6Axis::eTWIST, PxD6Motion::eFREE); joint->setMotion(PxD6Axis::eSWING1, PxD6Motion::eLOCKED); joint->setMotion(PxD6Axis::eSWING2, PxD6Motion::eLOCKED); }

buildJoint segítségével elemek kapcsolása platformhoz kötve a base elem függőleges tengely körül foroghat ejtsünk rá pattogó labdákat ügyesen, hogy lássuk hogy tényleg elforog-e

Motor a jointba PxD6JointDrive drive(100000.0f, 100000.0f, PX_MAX_F32, false); joint->setDrive(PxD6Drive::eTWIST, drive); joint->setDrivePosition(PxTransform(PxQuat(1, PxVec3(1.0f, 0.0f, 0.0f))));

Eredmény elfordult, pozíciótartó joint

Joint adatszerkezet Game.h-ba struct JointData { physx::PxD6Joint* joint; int motorKey; int motorBackwardsKey; float angle; }; std::vector<JointData> joints;

Joint mentése a buildJointban JointData jd; jd.joint = joint; jd.motorKey = motorKey; jd.motorBackwardsKey = motorBackwardsKey; jd.angle = 0.0f; joints.push_back(jd);

Game::animate minden jointra aztán a szimuláció keysPressed alapján joint.angle növelés vagy csökkentés setDrivePosition aztán a szimuláció

Eredmény forgatható joint

Feladat építsük meg a teljes robotkart próbáljuk meg vele felvenni a labdát