Aktuelle Zeit: 13.05.2025, 08:24

Alle Zeiten sind UTC + 1 Stunde




Ein neues Thema erstellen Auf das Thema antworten  [ 2 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: Ein Objekt auswählen
BeitragVerfasst: 02.03.2009, 19:48 
Offline

Registriert: 02.03.2009, 11:49
Beiträge: 4
Hallo.

Ich habe 2 Cubes erstellt und möchte jetzt gern wissen, ob ich mit der Maus über einen bin.

Ich habe dies hier für auswählen gefunden, komme damit aber nicht ganz klar. Kann mir jemand bei dem Problemen weiterhelfen?

Hier mein bisheriger Code um ein wenig von Irrlicht zu verstehen (p.s. ich benutze absichtlich alle namesapces).

Code:
   irr::video::IVideoDriver* driver = device->getVideoDriver();
   irr::scene::ISceneManager* smgr = device->getSceneManager();
   irr::gui::IGUIEnvironment* guienv = device->getGUIEnvironment();

   irr::scene::ICameraSceneNode* cam = smgr->addCameraSceneNode(0, irr::core::vector3df(0,30,-40), irr::core::vector3df(0,5,0));
   smgr->addLightSceneNode(0, irr::core::vector3df(0,20,-30));

   irr::scene::ISceneNode* cube1 = smgr->addCubeSceneNode();
   cube1->setMaterialTexture(0, driver->getTexture("../../irrlicht-1.5/media/t351sml.jpg"));
   cube1->setMaterialFlag(irr::video::EMF_LIGHTING, false);
   irr::scene::ISceneNode* cube2 = smgr->addCubeSceneNode(5.0f, 0, -1, irr::core::vector3df(10,0,0));

   while (device->run())
   {
      driver->beginScene(true, true, irr::video::SColor(255,100,101,140));

      smgr->drawAll();
      guienv->drawAll();

      driver->endScene();

// http://www.irrlicht3d.de/forum2/viewtopic.php?p=4523#p4523
      // maus position ermitteln (2d koordinate)
      irr::core::vector3df pt;
      irr::core::triangle3df triangle;

      irr::core::position2d<irr::s32> mousepos = device->getCursorControl()->getPosition();
      // maus position zu einem 3d strahl transformieren (mit hilfe der aktuellen kamera)
      irr::core::line3df ray = smgr->getSceneCollisionManager()->getRayFromScreenCoordinates(mousepos, cam);

      irr::scene::ITriangleSelector* selector = smgr->createTriangleSelector(cube1, ???????); // da stand "node" drin, das habe ich aber nicht, wo muss ich das setzen?

      //smgr->getSceneCollisionManager()->getCollisionPoint(ray, selector, pt, triangle);
      // optional: koordinate in objekt-koordinatensystem umrechnen
      //node->getRelativeTransformation().transformVect(pt);

      //Caption = mousepos.X;
   }
   device->drop();


Nach oben
 Profil  
 
 Betreff des Beitrags: Re: Ein Objekt auswählen
BeitragVerfasst: 02.03.2009, 19:58 
Offline
Moderator
Benutzeravatar

Registriert: 25.03.2007, 18:11
Beiträge: 834
Wohnort: Hagen, NRW
Den zweiten parameter kannst du weglassen.

Ich würde aber zuerst prüfen, ob der strah die boundingbox des nodes schneidet. Wenn ja dann mit dem TriangleSelector testen, da der boundingbox check schneller geht.

_________________
Phenom X4 9950 BE | 6144MB DDR2-800 | GeForce 8800GT 512MB | Asus M3A32-MVP Deluxe | 2TB HDD | 520W Seasonic NT | Soprano Tower | Samsung 22" TFT + Fujitsu-Siemens 17" TFT + Toshiba 42" FullHD LCD | Windows 7 Proessional x64
Behind the Brain


Nach oben
 Profil  
 
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 2 Beiträge ] 

Alle Zeiten sind UTC + 1 Stunde


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 4 Gäste


Du darfst keine neuen Themen in diesem Forum erstellen.
Du darfst keine Antworten zu Themen in diesem Forum erstellen.
Du darfst deine Beiträge in diesem Forum nicht ändern.
Du darfst deine Beiträge in diesem Forum nicht löschen.
Du darfst keine Dateianhänge in diesem Forum erstellen.

Suche nach:
Gehe zu:  
cron
Powered by phpBB® Forum Software © phpBB Group
Deutsche Übersetzung durch phpBB.de