Aktuelle Zeit: 29.03.2024, 13:33

Alle Zeiten sind UTC + 1 Stunde




Ein neues Thema erstellen Auf das Thema antworten  [ 3 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: Spezielle Kollision
BeitragVerfasst: 21.10.2009, 21:24 
Offline

Registriert: 21.10.2009, 21:17
Beiträge: 2
Wohnort: Dresden
Hallo,

ich habe eine Aufgabe bekommen, in der es darum geht, eine Kugel an einen sich drehenden Würfel prallen zu lassen. Je nach dem, wie die Kugel den Würfel trifft, sollen Töne entstehen.
Daraus sollte ich nun ein 3D-Programm machen und habe Irrlicht gewählt, weil es einfach sein soll ;)

Dieses Programm ist also meine erste Begegnung mit Irrlicht.
Nun habe ich alle benötigten Objekte in die Szene geladen, kann die Kamera bewegen( FPS-Kamera ) und diese mit allen Objekten kollidieren lassen( MetaTriangleSelector ).

Nun fehlt "nur" noch, das ich die Kollision der Kugel mit dem Würfel abfange und darauf reagiere. Aber ich weis nicht, wie ich das realisieren soll, und hoffe mal auf eure Hilfe.

Alle Objekte sind mit Blender erzeugt worden.

MfG. Christoph


Nach oben
 Profil  
 
 Betreff des Beitrags: Re: Spezielle Kollision
BeitragVerfasst: 22.10.2009, 15:44 
Offline
Benutzeravatar

Registriert: 23.06.2008, 07:21
Beiträge: 74
Wohnort: Dresden
mhm ... moin ^^
Naja.. Damit du die einzelnen bereiche des Würfels besser abfangen kannst, würde ich den bissl subdividen (2 mal).
die Kugel würd ich grob machen ^^so level 2 bei triangleSphere (oder wie das jetzt hieß).
Dann kannst du mit tutorial 7 Strahlen von den kugelflächen aus wegschießen.... Und wenn ein Strahl eine Fläche des würfels trifft, dann musst du die entfernung von Abschuss und aufprall messen... Wenn diese dann null ist gibts kolli...
Dann kannst du vom kollisionspunkt aus die reaktion programmieren...

joar.... Ich weis nichts obs bessere unterstützung von irrlicht her gibt. Musst mal googlen ;P

lg Micha

_________________
...then he said, "I can't feel my legs!" and I said "Joe! Stay with me Joe!" But it was ... to late. The garbage collector came and... he was gone. Best object I ever had.


Nach oben
 Profil  
 
 Betreff des Beitrags: Re: Spezielle Kollision
BeitragVerfasst: 25.10.2009, 12:00 
Offline

Registriert: 21.10.2009, 21:17
Beiträge: 2
Wohnort: Dresden
Hallo,

Ich hab das mal versucht umzusetzen, aber das klappt nicht.

Code:
bool Objects::isSphereKollision( )
{
   //"this->objs[1]" ist der Würfel!
   //"this->objs[2]" ist die Kugel!

   //Das Mesh für die Flächen
   IMeshBuffer *kugel_buffer = ( (IMeshSceneNode*)this->objs[2].node )->getMesh()->getMeshBuffer( 0 );

   //Die 3D-Linie, die von jeder Fläche der Kugel gezogen wird.
   line3d<f32> line;

   //Start der Linie ist der Mittelpunkt der Kugel
   line.start = this->objs[2].node->getPosition();

   //Die Anzahl aller Vertexe
   int i_max  = kugel_buffer->getVertexCount();

   ITriangleSelector *selector = this->objs[1].node->getTriangleSelector();
   if( !selector )
   {
      IMeshSceneNode *imsn = (IMeshSceneNode*)this->objs[1].node;
      selector = this->smgr->createTriangleSelector( imsn->getMesh(), imsn );
      imsn->setTriangleSelector( selector );
      this->objs[1].node->setTriangleSelector( selector );
   }

   for( int i = 0; i < i_max; ++i )
   {
      line.end = line.start + (kugel_buffer->getPosition( i ) - line.start).normalize() * 1000.0f;

      // Prüfen, ob eine Linie eine Fläche des Würfels trifft.
      vector3df   intersection;
      triangle3df tri;
      if ( this->smgr->getSceneCollisionManager()->getCollisionPoint(
         line, selector, intersection, tri) )
      {
         // Die Länge der Linie Messen. Ist die Länge Null, gibts eine Kollision.
         if( line.getLength() == 0 )
         {
            //KOLLISION!!!
            return true;
         }
      }
   }

   return false;
}


Nur ich weis nicht wirklich, was da falsch ist.

_________________
Wo die Sprache aufhört, fängt die Musik an...


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

Alle Zeiten sind UTC + 1 Stunde


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast


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