Aktuelle Zeit: 13.05.2025, 10:49

Alle Zeiten sind UTC + 1 Stunde




Ein neues Thema erstellen Auf das Thema antworten  [ 2 Beiträge ] 
Autor Nachricht
BeitragVerfasst: 09.02.2008, 15:56 
Offline

Registriert: 09.02.2008, 14:39
Beiträge: 5
Hallo,

ich will ausnahmsweise mal kein Spiel programmieren, sondern einfach nur mit der FPS-Kamera in meiner Szene rumspazieren... Dabei hab ich folgendes Problem:
Ich möchte die Kollisionsabfrage mit der Kamera koppeln, so dass man eben nicht durch die Objekte durchlaufen kann. Mit dem Terrain hat es geklappt:

Code:
//create triangle selector for the terrain
    ITriangleSelector* selector = irrSceneMgr->createTerrainTriangleSelector(terrain, 0);
    terrain->setTriangleSelector(selector);
    selector->drop();
    //create collision response animator and attach it to the camera
    ISceneNodeAnimator* anim = irrSceneMgr->createCollisionResponseAnimator(
                       selector, camera, vector3df(60,100,60), vector3df(0,0,0),
                       vector3df(0,50,0));
    camera->addAnimator(anim);
    anim->drop();


Das gleiche hab ich dann für andere Objekte versucht. Der Code ist im Prinzip der selbe, nur dass ich mesh und node geändert hab (und einen octTreeTriangleSelector verwendet habe):

Code:
//create oct-tree-triangle selector for the object mesh2
    ITriangleSelector* selector2 = irrSceneMgr->createOctTreeTriangleSelector(mesh2, node2);
    node2->setTriangleSelector(selector2);
    selector2->drop();
   
    //create collision response animator and attach it to the camera
    ISceneNodeAnimator* anim2 = irrSceneMgr->createCollisionResponseAnimator(
                       selector2, camera, radius, vector3df(0,0,0),
                       vector3df(0,0,0));
    camera->addAnimator(anim2);
    anim2->drop();


mesh2 ist dabei vom Typ IAnimatedMesh,
node2 ist ein ISceneNode* (OctTreeSceneNode von mesh2)

Leider funktioniert das aber nicht...Ich kann weiterhin gemütlich durch die Wände latschen.
Nachdem ich ewig in den Foren gesucht und die Dokumentation gelesen habe bin ich leider kein Stück weiter... Ihr seid meine letzte Hoffnung :D


Nach oben
 Profil  
 
BeitragVerfasst: 09.02.2008, 16:16 
Offline

Registriert: 09.02.2008, 14:39
Beiträge: 5
Ich hab die Zeile
Code:
ITriangleSelector* selector2 = irrSceneMgr->createOctTreeTriangleSelector(mesh2, node2);

durch diese hier ersetzt:
Code:
ITriangleSelector* selector2 = irrSceneMgr->createOctTreeTriangleSelector(mesh2->getMesh(0), node2);


jetzt geht es mir der Kollisionsdetektion. ABER: Die verhält sich ein wenig merkwürdig....Ich kann vor eine Säule laufen und komme dann nicht mehr weg. Ich bleibe manchmal irgendwie da hängen... Den Radius von der Kollisionsellipse hab ich übrigens vorher errechnet:
Code:
//determine radius of the ellipsoid for collision detection
    const core::aabbox3d<f32>& box = node2->getBoundingBox();
    core::vector3df radius = box.MaxEdge - box.getCenter();


Daran sollte es dann eher nicht liegen schätze ich mal, oder vielleicht doch..?


Oh, ich hab gemerkt woran es liegt...Die Normalen des Modells waren falsch. Deshalb sind einige Wände erst dargestellt worden, wenn ich quasi in ihnen stand, d.h. die Wände haben mich in den Säulen eingeschlossen. (Hab das erst nicht gesehen, weil das Modell im Wireframe Modus war..)

Also dann mal entschuldigung für diesen unnötigen Eintrag... :?


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 12 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