1 / 19

FERmula 1.0

Tehnička demonstracija proširene stvarnosti. FERmula 1.0. Projekt iz programske potpore. Računalna grafika i animacija Mentor: Prof.dr.sc. Željka Mihajlović, ZEMRIS Adnan Abdagić Toni Kork Nikola Martinec Petar Mrazović Robert Mrkonjić Željko Mijočević Ana Nekić Mario Volarević.

ira
Download Presentation

FERmula 1.0

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Tehnička demonstracija proširene stvarnosti FERmula 1.0

  2. Projekt iz programske potpore • Računalna grafika i animacija • Mentor: Prof.dr.sc. Željka Mihajlović, ZEMRIS • Adnan Abdagić • Toni Kork • Nikola Martinec • PetarMrazović • Robert Mrkonjić • Željko Mijočević • Ana Nekić • Mario Volarević Voditelj

  3. Sadržaj • Alati • Proširena stvarnost • Kretanje FERmule • Zakretanje kotača • Upravljanje • Kolizija • Sučelje • Modeli

  4. Alati • Modeli • 3ds Max 2010 • Kod • Visual Studio 2008, C++ ARToolkit + OpenSceneGraph osgART

  5. Proširena stvarnost • Eng. AugmentedReality • Mogućnost da računalno generiranu virtualnu stvarnost možemo dodati našem percipiranju prave stvarnosti oko nas • Obilježja: interakcija u stvarnom vremenu, kombinacija prividnog i stvarnog, 3D

  6. Primjer realizacije AR WEB kamera Osobno računalo Markeri Prividna stvarnost Korisnik

  7. Projekt FERmula 1.0 • Tehnička demonstracija prividne stvarnosti na primjeru igre s vozilima nazvanim FERmula. • Upravljanje prividnih vozila u stvarnom vremenu, na prividnoj sceni.

  8. Zakretanje kotača FERmule // funkcija za traženje dijelova modela (služi za animaciju kotaca) osg::Node* FindNodeByName( osg::Node* pNode, conststd::string& sName ) { if ( pNode->getName()==sName ) { returnpNode; } osg::Group* pGroup = pNode->asGroup(); if ( pGroup ) { for ( unsigned int i=0; i<pGroup->getNumChildren(); i++ ) { osg::Node* pFound = FindNodeByName( pGroup->getChild(i), sName ); if ( pFound ) { returnpFound; } } } return 0; } voidokreniLijevo(bool t) { if (t) okrenutL = 1; elseokrenutD = 0; osg::Node* lijeviKotac = FindNodeByName( Model, "kotacPL" ); osg::Node* desniKotac = FindNodeByName( Model, "kotacPD" ); osg::MatrixTransform* ltr = AddMatrixTransform(lijeviKotac); osg::MatrixTransform* dtr = AddMatrixTransform(desniKotac); ltr->setMatrix(osg::Matrix::rotate(osg::inDegrees(30.0f),osg::Z_AXIS)); dtr->setMatrix(osg::Matrix::rotate(osg::inDegrees(30.0f),osg::Z_AXIS)); } “Dummy” kotacPD kotacPL case osgGA::GUIEventAdapter::KEY_Left: { voziloInputDeviceState->rotLReq = true; if (v->okrenutL == 0) v->okreniLijevo(true); return false; }

  9. Upravljanje FERmulom virtual void operator()(osg::Node* node, osg::NodeVisitor* nv) { osg::MatrixTransform* vmt=dynamic_cast<osg::MatrixTransform*> (node); if (vmt) { if ((voziloInputDeviceState>moveFwdRequest)&&(!voziloInputDeviceState- >moveBcwRequest)) { if (v->brzina<=(maxBrzina-1)&&(v->brzina>=0)) { v->brzina=(maxBrzina*(v->vrijeme)/(v->vrijeme+1)); v->vrijeme+=0.03f; } if (v->brzina<0) { v->brzina+=0.6; //pritisak na gas dok formula ide u rikverc } vmt->preMult(osg::Matrix::translate(0,-(v->brzina),0)); } //… } • Koriste se strelice na tipkovnici BoolMyKeyboardEventHandler::handle(const osgGA::GUIEventAdapter&ea,osgGA::GUIActionAdapter& aa) { switch (ea.getEventType()) { case (osgGA::GUIEventAdapter::KEYDOWN): { switch (ea.getKey()) { case osgGA::GUIEventAdapter::KEY_Up: voziloInputDeviceState->moveFwdRequest = true; return false; } //… } } } • Akceleracija ostvarena pomoću funkcije tipa x/(x+1)

  10. Kolizija na virtualnoj sceni • Kontakt između dva ili više virtualnih objekata • Virtualni modeli aproksimirani su kvadrima radi ubrzanja performansi • Nakon svakog pomaka vozila, ispituje se postojanje presjeka kvadra vozila sa kvadrima scene

  11. Aproskimacije volumena Kvadar – nešto preciznija aproksimacija Kugla – veoma gruba aproksimacija

  12. Implementacija kolizije • Kvadri su generirani iz podataka sfere. Centar je identičan, a radijus sfere je skaliran u pravilnom omjeru za svaku os, tako je dobiven tzv. Bounding box • OSG ima gotove funkcije za ispitivanje kolizije između kugli i između kvadara

  13. HUD sučelje • Eng. Heads up display • Potrebno izgraditi podstablo koje ima kao korijen odgovarajuću projekciju i model view matricu • Potrebno osigurati iscrtavanje HUD sučelja nakon ostatka scene osg::Projection* HUDProjectionMatrix = new osg::Projection; HUDProjectionMatrix->setMatrix(osg::Matrix::ortho2D(0,1024,0,768)); osg::MatrixTransform* HUDModelViewMatrix = newosg::MatrixTransform; HUDModelViewMatrix->setMatrix(osg::Matrix::identity()); HUDModelViewMatrix->setReferenceFrame(osg::Transform::ABSOLUTE_RF); root->addChild(HUDProjectionMatrix); HUDProjectionMatrix->addChild(HUDModelViewMatrix); HUDModelViewMatrix->addChild(HUDGeode); HUDStateSet->setMode(GL_DEPTH_TEST,osg::StateAttribute::OFF); HUDStateSet->setRenderingHint(osg::StateSet::TRANSPARENT_BIN); HUDStateSet->setRenderBinDetails(500,"RenderBin");

  14. Modeliranje 3D modela • Autodesk 3ds Max

  15. Postupak modeliranja • Počinje od standardnog objekta

  16. Postupak modeliranja • Alati : delete. extrude, bridge, cap

  17. Postupak modeliranja clone

  18. Hvala na pažnji!

  19. Pitanja?

More Related