Aktuelle Zeit: 05.05.2024, 19:17

Alle Zeiten sind UTC + 1 Stunde




Ein neues Thema erstellen Auf das Thema antworten  [ 7 Beiträge ] 
Autor Nachricht
BeitragVerfasst: 22.11.2007, 17:16 
Offline

Registriert: 11.05.2007, 16:35
Beiträge: 31
Ich habe mit 3D Studio Max eine .3ds map erstellt und diese mit LithUnwrap 1.3 in ein .x file exportiert. Leider bleibt mein Bildschirm schwarz. Die map wird scheinbar nicht gestartet oder geladen. Mit einer datei die ich aus dem internet bezog ging es aber, daher gehe ich davon aus, dass es an der datei selbst liegt. Hat da wer eine idee?


Nach oben
 Profil  
 
BeitragVerfasst: 22.11.2007, 17:30 
Offline
Moderator
Benutzeravatar

Registriert: 25.03.2007, 18:11
Beiträge: 834
Wohnort: Hagen, NRW
Ich könnte mir vorstellen, dass die map geladen aber nicht gerendert wird, weil sie außerhalb des kamerablickwinkels ist.
Viele Programme setzen die Meshen nämlich nicht auf den Ursprung, sondern sonst wo hin

_________________
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  
 
BeitragVerfasst: 22.11.2007, 17:39 
Offline

Registriert: 11.05.2007, 16:35
Beiträge: 31
Oh, wie kann ich den Startpunkt dahin setzen?
Code:
metaselector, camera, vector3df(30,50,30),
vector3df(0,-100,0), 100.0f, vector3df(0,50,0));


Nach oben
 Profil  
 
BeitragVerfasst: 22.11.2007, 18:01 
Offline
Moderator

Registriert: 25.02.2007, 14:35
Beiträge: 323
Wohnort: Münster
nun, das hängt auch davon ab, wie dein Mesh aufgebaut ist, vielleicht ist schon in der Mesh-Datei definiert, dass das Mesh ganz weit weg vom Nullpunkt sein soll.

Überprüfe erst nochmal, ob überhaupt gerendert wird, mit dem Debugger (falls du noch nicht so gut mit nem Debugger umgehen kannst, dann schreib einfach vor die Render-Anweisung irgendwas mit "cout" und guck, ob das in der Konsole erscheint).

Dann mach am besten deine Kamera zu einer beweglichen Kamera und such ein wenig in der Gegend rum.

Wenn du willst, kannst du ja auch mal deine Mesh-Datei hier hochladen und/oder relevante Codeausschnitte posten.

Gruß

marsupial


Nach oben
 Profil  
 
BeitragVerfasst: 22.11.2007, 18:11 
Offline

Registriert: 11.05.2007, 16:35
Beiträge: 31
ich habe es mal mit der freien kamera gemacht. Das programm meldet ein fehler und kann nicht ausgeführt werden.


map1.x befindet sich im anhang
main.cpp:

Code:
#include <irrlicht.h>
#include <net.h>
#include <audiere.h>

using namespace irr;
using namespace video;
using namespace scene;
using namespace core;

int modellife=10;
int mylife=10;

int scounter=0;
int rcounter=0;
int i;

netSocket *sockr;
netSocket *socks;
char sbuffer[100];
char rbuffer[100];
bool shot=false;

IrrlichtDevice *device=0;

class MyEventReceiver : public IEventReceiver
{
public:
   virtual bool OnEvent(SEvent event)
   {
       if(mylife<0)
         return true;
       if(event.EventType==EET_MOUSE_INPUT_EVENT){
          if(event.MouseInput.Event==EMIE_LMOUSE_PRESSED_DOWN){
            shot=true;
           }
        }       
        if(device && device->getSceneManager()->getActiveCamera())
           device->getSceneManager()->getActiveCamera()->OnEvent(event);
        return true;
    }
};

void iamhit(){
    printf("you are hit! life:%d",mylife);
    if(mylife<0){
      printf("you lose\n");
      modellife=2;
    }   
    return;
}

int main()
{
    netInit ();
   sockr = new netSocket();
   socks = new netSocket();

   socks->open(false);
   sockr->open(false);

    socks->setBlocking(false);
    i=socks->connect("10.10.10.10",1111) ;
    sockr->setBlocking(false);
    i=sockr->bind("",1111) ;

   MyEventReceiver receiver;                                    // vollbild?
    device=createDevice(EDT_OPENGL,dimension2d<s32>(1024, 768),16,true,false,false,&receiver);

   IVideoDriver* driver=device->getVideoDriver();
   ISceneManager* smgr=device->getSceneManager();

   IAnimatedMesh* mapmesh=smgr->getMesh("maps/map1.x");
   ISceneNode* map = 0;
   
   map=smgr->addOctTreeSceneNode(mapmesh->getMesh(0));
   map->setMaterialFlag(EMF_LIGHTING,false);

   IAnimatedMesh* modelmesh=smgr->getMesh("models/tris.md2");
   IAnimatedMeshSceneNode* model=smgr->addAnimatedMeshSceneNode(modelmesh);
   model->setMaterialFlag(EMF_LIGHTING, false);
   model->setMaterialTexture( 0, driver->getTexture("models/@.pcx") );
   model->setPosition(vector3df(0,75,100));
   model->setScale(vector3df(3.2,3.2,3.2));
   model->setMD2Animation(EMAT_STAND);

   ICameraSceneNode* camera=smgr->addCameraSceneNodeFPS();
   camera->setPosition(vector3df(0,150,20));

   IMetaTriangleSelector* metaselector;
   metaselector=smgr->createMetaTriangleSelector();

   ITriangleSelector* mapselector=smgr->createOctTreeTriangleSelector(mapmesh->getMesh(0), map, 128);
   metaselector->addTriangleSelector(mapselector);
   mapselector->drop();

   ITriangleSelector* modelselector=smgr->createTriangleSelector(modelmesh->getMesh(0), model);
   metaselector->addTriangleSelector(modelselector);
   modelselector->drop();

   ISceneNodeAnimator* anim=smgr->createCollisionResponseAnimator(
//    metaselector, camera, vector3df(30,50,30),
//      vector3df(0,-100,0), 100.0f, vector3df(0,50,0));
      metaselector, camera, vector3df(0,0,0),
      vector3df(0,0,0), 100.0f, vector3df(0,0,0));
   camera->addAnimator(anim);
   anim->drop();

   device->getCursorControl()->setVisible(false);

   audiere::AudioDevicePtr audiodevice(audiere::OpenDevice());
   audiere::OutputStreamPtr sht1(audiere::OpenSound(audiodevice, "sound/sht1.wav", true));
   sht1->setRepeat(true);
   sht1->setVolume(1);
   sht1->play();


   while(device->run())
   {
      driver->beginScene(true, true, SColor(0,10,10,10));
      smgr->drawAll();
      driver->endScene();
      vector3d<f32> explosion;
      
      int frames=driver->getFPS();
      if (frames<30)
        frames=30;

        rcounter+=1;
      scounter+=1;

      if(scounter>float(frames)/5){
          scounter=0;
          vector3d<f32> pos=camera->getPosition();
          vector3d<f32> rot=camera->getRotation();
          int len=sprintf(sbuffer,"%.1f %.1f %.1f %.1f %d\n\0",pos.X,pos.Y,pos.Z,rot.Y,modellife);
            socks->send(sbuffer,len,0);
      }   

      if(sockr->recv(rbuffer,100,0)>=0){
          float x,y,z,rot;
          int life;
         sscanf(rbuffer,"%f %f %f %f %d",&x,&y,&z,&rot,&life);

         if(life==9999){
             mylife=life;
             break;
          }

         if(life<mylife){
             mylife=life;
             iamhit();
         }   

         int time=(float(rcounter)/frames)*1000;
        rcounter=0;
         ISceneNodeAnimator* runto=smgr->createFlyStraightAnimator(model->getPosition(),vector3df(x,y,z),time,0);
         model->setRotation(vector3df(0,rot,0));
         model->addAnimator(runto);
         runto->drop();
        }   

        if(shot){
            shot=false;
            vector3d<f32> direction=camera->getTarget()-camera->getPosition();
            direction.normalize();
            line3d<f32> bullet;
            bullet.start=camera->getPosition();
            bullet.end=camera->getPosition()+direction*1500;
           
            triangle3d<f32> dummy;
            vector3d<f32> mapcollision;
            vector3d<f32> modelcollision;
           
            bool gotmap=smgr->getSceneCollisionManager()->getCollisionPoint(bullet,mapselector,mapcollision,dummy);
            bool gotmodel=smgr->getSceneCollisionManager()->getCollisionPoint(bullet,modelselector,modelcollision,dummy);
            float mapdistance=0;
            float modeldistance=0;

            if(gotmap){
               mapdistance=camera->getPosition().getDistanceFromSQ(mapcollision);
            }
            if(gotmodel){
               modeldistance=camera->getPosition().getDistanceFromSQ(modelcollision);
            }
               
            if(gotmodel && gotmap){
                if(modeldistance<=mapdistance){
                    modellife-=1;
                    printf("you score!\n");
                    explosion=modelcollision;
                }
                else
                    explosion=mapcollision;                   
            }   
            if(gotmodel && !gotmap){
                modellife-=1;
                printf("you score!\n");
                explosion=modelcollision;
            }
            if(!gotmodel && gotmap){
                explosion=mapcollision;
            }       
        }   
   }

   if(mylife==2)
     printf("you win!\n");
    else
      printf("you lose!\n");

   device->drop();   
    sockr -> close ();
    socks -> close ();
   return 0;
}


Dateianhänge:
Dateikommentar: map1.x
map1.txt [561.48 KiB]
373-mal heruntergeladen
Nach oben
 Profil  
 
BeitragVerfasst: 22.11.2007, 18:49 
Offline
Moderator

Registriert: 25.02.2007, 14:35
Beiträge: 323
Wohnort: Münster
Mhm.. also die Datei scheint in Ordnung zu sein...

Was für eine Fehlermeldung gibt er denn aus?


Nach oben
 Profil  
 
BeitragVerfasst: 22.11.2007, 19:47 
Offline

Registriert: 11.05.2007, 16:35
Beiträge: 31
In dem "Das Programm wird jetzt geschlossen"-Dialog steht unter details folgendes:
Zitat:
Problemsignatur:
Problemereignisname: APPCRASH
Anwendungsname: main.exe
Anwendungsversion: 0.0.0.0
Anwendungszeitstempel: 4745b046
Fehlermodulname: Irrlicht.dll
Fehlermodulversion: 0.0.0.0
Fehlermodulzeitstempel: 4142abe4
Ausnahmecode: c0000005
Ausnahmeoffset: 000a0e7f
Betriebsystemversion: 6.0.6000.2.0.0.768.3
Gebietsschema-ID: 1031
Zusatzinformation 1: 8d13
Zusatzinformation 2: cdca9b1d21d12b77d84f02df48e34311
Zusatzinformation 3: 8d13
Zusatzinformation 4: cdca9b1d21d12b77d84f02df48e34311

Lesen Sie unsere Datenschutzrichtlinie:
http://go.microsoft.com/fwlink/?linkid= ... cid=0x0407


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

Alle Zeiten sind UTC + 1 Stunde


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 2 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