Aktuelle Zeit: 13.05.2025, 00:32

Alle Zeiten sind UTC + 1 Stunde




Ein neues Thema erstellen Auf das Thema antworten  [ 9 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: Kollision in irr-datei
BeitragVerfasst: 28.07.2007, 18:23 
Offline
Benutzeravatar

Registriert: 30.06.2007, 14:56
Beiträge: 9
Ich hab in 3ds Max ein paar testmodelle erstellt und diese dann im irrEdit zusammengefügt (alle modelle sind 3ds).
Nun wollte ich mich in die kollision einarbeiten. Doch wie ich gemerkt habe, erstellt die methode, die ich benutze (die einzige, die ich gefunden hab) ein neues "mesh", das schwarz ist und das dann die kollision bewerkstelligt. Bei mir sieht man jedoch dieses schwarze Mesh... Ausserdem kann ich nur in 1 mesh von der irr-datei (durch übergeben der 3ds-datei) die kollision einschalten.

Nun will ich dass die Kollision für alle Modelle innerhalb der irr-datei ist. Wie kann ich das bewerkstelligen?

mein bisheriger code geht folgendermassen (ausschnitt):

Code:
smgr->loadScene("../Work/Worlds/test.irr");


   scene::IAnimatedMesh* levelmesh = smgr->getMesh("../Work/Meshes/haus1.3ds");
   scene::ISceneNode* levelnode = 0;




     levelnode = smgr->addOctTreeSceneNode(levelmesh->getMesh(0));



    scene::ITriangleSelector* selector = 0;
   
   if (levelnode)
   {     

      selector = smgr->createOctTreeTriangleSelector(
            levelmesh->getMesh(0), levelnode, 128);
      levelnode->setTriangleSelector(selector);
      selector->drop();
   }


scene::ISceneNodeAnimator* anim =
    smgr->createCollisionResponseAnimator(
      selector, node, core::vector3df(30,50,30),
      core::vector3df(0,-3,0),
      core::vector3df(0,50,0));

   node->addAnimator(anim);
   anim->drop();



Ausserdem hab ich gesehen, dass man im irrEdit die Kollision schon anschalten kann, jedoch zeigt dies keinerlei wirkung auf die irr-datei wenn ich sie in einem "spiel" lade.

_________________
Wer Sicherheit der Freiheit vorzieht, ist zu Recht ein Sklave - Aristoteles


Nach oben
 Profil  
 
 Betreff des Beitrags: Re: Kollision in irr-datei
BeitragVerfasst: 28.07.2007, 18:38 
Offline
Moderator

Registriert: 26.03.2007, 20:06
Beiträge: 114
Du musst die von allen Meshs die Triangle Selektoren erzeugen, diese zu einem MetaTriangleSelector zusammenfügen und diesen dann beim erstellen des CollisionResponseAnimator angeben. Also erst nen Meta Selector erstellen, alle Selektoren der Mesh per mataselector->add(..) anhängen und dann nur noch den verwenden.


Nach oben
 Profil  
 
 Betreff des Beitrags: Re: Kollision in irr-datei
BeitragVerfasst: 30.07.2007, 14:14 
Offline
Benutzeravatar

Registriert: 30.06.2007, 14:56
Beiträge: 9
Das hab ich auch schon versucht, doch leider sind dann diese schwarzen meshes alle an der gleichen stelle und überhaupt nicht in den orginalmeshes, sondern irgendwo sonst in der welt.

Und das problem mit dem sehen der schwarzen meshes wird - so weit ich das beurteilen kann - nicht gelöst....

_________________
Wer Sicherheit der Freiheit vorzieht, ist zu Recht ein Sklave - Aristoteles


Nach oben
 Profil  
 
 Betreff des Beitrags: Re: Kollision in irr-datei
BeitragVerfasst: 30.07.2007, 16:54 
Offline
Benutzeravatar

Registriert: 30.06.2007, 14:56
Beiträge: 9
Sorry für den Doppelpost, jedoch hab ich nun einen neuen code:

Code:
   smgr->loadScene("../Work/Worlds/test.irr");

   int i;
   irr::core::aabbox3df box = node->getBoundingBox();
   irr::core::vector3df radius = box.MaxEdge - box.getCenter();
   scene::IAnimatedMesh* levelmesh = 0;
   scene::ISceneNode* levelnode = 0;
   scene::IMetaTriangleSelector* MetaSelector = smgr->createMetaTriangleSelector();
   scene::ITriangleSelector* selector = 0;

   for (i=0;i<smgr->getMeshCache()->getMeshCount();i++)
   {
   levelmesh = smgr->getMeshCache()->getMeshByIndex(i);
   //scene::IAnimatedMesh* levelmesh = smgr->getMesh("../Work/Meshes/Haus1.3ds");


   levelnode = smgr->getRootSceneNode();

   
      selector = smgr->createTriangleSelector(
            levelmesh->getMesh(0), levelnode);

      MetaSelector->addTriangleSelector(selector);

}

   levelnode->setTriangleSelector(MetaSelector);
   scene::ISceneNodeAnimator* anim = smgr->createCollisionResponseAnimator(
      MetaSelector, node, radius,
      core::vector3df(0,-3,0));

   node->addAnimator(anim);
   anim->drop();
   selector->drop();


Das funktioniert zwar gut, und die schwarzen meshes sind auch net mehr zu sehen (lag an smgr->addOctTreeSceneNode).
Jedoch hab ich das problem, dass die Kollision von den Polys am falschen ort ist. Das heisst das Game denkt, sie wären an einem Ort, an dem sie nicht sind (am gleichen ort, wo früher die schwarzen meshes waren).
Wie bring ich es nun hin, dass das game weiss, wo die Polys sind, bei denen es Kollision anwenden soll?


Kann es sein, dass das Kollisions-system für irr-dateien sehr buggy ist, oder hab ich was falsch gemacht?

_________________
Wer Sicherheit der Freiheit vorzieht, ist zu Recht ein Sklave - Aristoteles


Nach oben
 Profil  
 
 Betreff des Beitrags: Re: Kollision in irr-datei
BeitragVerfasst: 12.08.2007, 21:04 
Offline
Benutzeravatar

Registriert: 30.06.2007, 14:56
Beiträge: 9
Sorry für den Trippelpost, doch ich brauch unbedingt ne antwort, sonst komm ich net weiter. Hab schon alles versucht, doch nichts herausgefunden.
Programmiert ihr denn alle eure Spiele ohne Kollision, oder warum weiss niemand ne Antwort?

_________________
Wer Sicherheit der Freiheit vorzieht, ist zu Recht ein Sklave - Aristoteles


Nach oben
 Profil  
 
 Betreff des Beitrags: Re: Kollision in irr-datei
BeitragVerfasst: 13.08.2007, 15:35 
Offline
Moderator

Registriert: 26.03.2007, 20:06
Beiträge: 114
Erzeugst du den TriangleSelector vor oder anch dem Positionieren der Meshs? Falls du das nicht schon amchst, verpass den mesh erst mal die richtig Position und dann erzeuge den TriangleSelector. So mach ich das, und ich hab bis jetzt keine Probleme mit der Kollision...


Nach oben
 Profil  
 
 Betreff des Beitrags: Re: Kollision in irr-datei
BeitragVerfasst: 16.08.2007, 18:02 
Offline
Benutzeravatar

Registriert: 30.06.2007, 14:56
Beiträge: 9
Aber wie soll ich die position der Meshes wissen? Ich lade das Level ja nur mit dem Befehl "smgr->loadScene("../Work/Worlds/test.irr");"

_________________
Wer Sicherheit der Freiheit vorzieht, ist zu Recht ein Sklave - Aristoteles


Nach oben
 Profil  
 
 Betreff des Beitrags: Re: Kollision in irr-datei
BeitragVerfasst: 29.08.2007, 16:57 
Offline
Benutzeravatar

Registriert: 30.06.2007, 14:56
Beiträge: 9
Das muss doch schon mal jemand gemacht haben! Bitte helft mir, ich kann ohne Kollision ja schlecht weiterarbeiten.

Am allerbesten fänd ich es, wenn alle Objekte, bei denen ich in IrrEdit "collision" zugewiesen habe, nacher im Spiel auch den Spieler aufhalten.

Doch wenn das nicht geht, reicht mir auch eine Lösung für alle Meshes der Irr-Datei.

_________________
Wer Sicherheit der Freiheit vorzieht, ist zu Recht ein Sklave - Aristoteles


Nach oben
 Profil  
 
 Betreff des Beitrags: Re: Kollision in irr-datei
BeitragVerfasst: 06.10.2007, 11:02 
Offline
Benutzeravatar

Registriert: 28.06.2007, 18:26
Beiträge: 54
Wohnort: München
*Hmm...* ich hab irgenwie das selbe Problem die [*.irr] Dateien lassen sich nicht
mit der Kollision verknüpfen. Aber bei den[.*3ds] Dateien klapt es wunder bar.
Wie klappt den das mit [*.irr] Dateien *verwirrt* .

_________________
XtremBit.kilu.de
Bild


Nach oben
 Profil  
 
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 9 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:  
Powered by phpBB® Forum Software © phpBB Group
Deutsche Übersetzung durch phpBB.de