#0 

31-08-2009 10:28:08

Ma77hTheG33k
Membre
Date d'inscription: 31-08-2009
Messages: 13

Bonjour, bonjour !
J'ai un petit problème au niveau des Textures...
Quand j'affiche un skydome, une map(.bsp) ou un mesh(md2, 3ds, obj) et que je leur assigne une texture, ma texture bug.

Comme un screen vaut mieux que 2000 mots wink



Le deuxieme, vous pouvez pas le rater !



J'attends votre aide, parce que pour faire un jeu réaliste, et bah il en prend un coup....
Merci pour votre (future) aide.

Hors ligne


#1 

31-08-2009 19:21:25

tmyke
Administrateur
Date d'inscription: 24-03-2008
Messages: 1025

C'est pas un problème de porté de la camera des fois ? Bien que l'artefact de texture que l'on voit au dessus peut laisser penser
que c'est plus subtile comme soucis.

As-tu un code à poster, c'est toujours beaucoup plus facile pour dégoter les erreurs wink


Force et sagesse...

Hors ligne


#2 

01-09-2009 09:54:51

Ma77hTheG33k
Membre
Date d'inscription: 31-08-2009
Messages: 13

Ma classe Window (Instanciée dans le main)

Window.cpp

Code:

#include <irr/irrlicht.h>
#include "Window.h"
#include "AnimatedMesh.h"
#include "StaticMesh.h"
#include "CameraFPS.h"
#include "Spot.h"
#include "gui.h"
#include "Light.h"
#include "ImprEcran.h"
#include "Skybox.h"

using namespace irr;

Window::Window(){}
Window::Window(int x1, int y1, int color1, bool fullscreen1){
    x = x1;    
    y = y1;
    color = color1;
    fullscreen = fullscreen1;

    //On crée la fenetre, le driver, le scene manager et le gui

    device = createDevice(video::EDT_OPENGL, core::dimension2d<irr::s32>(x,y),color,fullscreen,true,false,0);
    driver = device->getVideoDriver();
    smgr = device->getSceneManager();
    gui = device->getGUIEnvironment();

    //Ensuite, on crée le Heros, le soleil, puis la camera

    AnimatedMesh heros("sydney.md2", "sydney.bmp", smgr, driver, true);
    Light soleil(1.0, 1.0, 1.0, 0, smgr);
    CameraFPS camera(true, smgr);

    //Le mesh suit la camera

    //heros.Nmodele->setParent(camera.camera);

    camera.camera->setFOV(70);

    /*//On crée la map    

    device->getFileSystem()->addZipFileArchive("map-20kdm2.pk3");
    irr::scene::IAnimatedMesh* mesh = smgr->getMesh("20kdm2.bsp");
    irr::scene::ISceneNode* node = 0;
    if (mesh)
        node = smgr->addOctTreeSceneNode(mesh->getMesh(0));
    if (node)
        node->setPosition(irr::core::vector3df(-1300,-144,-1249));

    gui::setCursorLook(device, false);

    *camera.camera->setFarValue(camera.camera->getFarValue() + 4000);
    anim->drop();

    */

    scene::IAnimatedMesh * mesh = smgr->addTerrainMesh("MeshTerrain.obj", driver->createImageFromFile("rockwall.bmp"), driver->createImageFromFile("HeightmapTerrain.png"));
    smgr->addAnimatedMeshSceneNode(mesh);
    
    //Ajoute un Nom au dessus de Sydney
    gui::IGUIFont* font = gui->getFont("fontlucida.png");
    smgr->addBillboardTextSceneNode(font, L"Sydney", heros.Nmodele, core::dimension2d< f32 >(15.0f, 5.0f), heros.Nmodele->getPosition()+ core::vector3df(0, 40, 0));
    smgr->addSkyDomeSceneNode(driver->getTexture("sky.jpg"), 50, 2, 2, 100);

    //On fait les captures
    ImprEcran receiver(driver);
    device->setEventReceiver(&receiver);

    //Boucle de rendu

    while(device->run())
    {
        core::vector3df posCam = camera.getCamLocate();

        core::stringw titre = driver->getFPS();
        titre += " FPS - X = ";
        titre += posCam.X;
        titre += " Y = ";
        titre += posCam.Y;
        titre += " Z = ";
        titre += posCam.Z;
        
        gui::setWindowCaption(titre.c_str(), device);

        driver->beginScene(true, true, video::SColor(255,0,163,255));
        smgr->drawAll();
        gui->drawAll();
        driver->endScene();

    }

    device->drop ();
    exit(0);

}
Window::~Window(){
    delete device;
    delete driver;
    delete smgr;
}

Window.h

Code:

#ifndef DEF_WINDOW
#define DEF_WINDOW

#include <irr/irrlicht.h>
#include "Event.h"

class Window{

//Attributs
    private:
        int x;
        int y;
        int color;
        bool fullscreen;
        
        irr::f32 fovy;

        irr::IrrlichtDevice *device;
        irr::video::IVideoDriver* driver;
        irr::scene::ISceneManager *smgr;
        irr::gui::IGUIEnvironment *gui;
        irr::scene::ITriangleSelector *selector;


//Constructeurs & Destructeur
    public:
        Window();
        Window(int x1, int y1, int color1, bool fullscreen1);
        ~Window();

};

#endif

Ma classe camera (Peut etre tu en as besoin)

CameraFPS.h

Code:

 
#ifndef DEF_CAMERAFPS
#define DEF_CAMERAFPS

#include <irr/irrlicht.h>

class CameraFPS{

//Attributs
    private:
        bool canFly;
    public:
        irr::scene::ICameraSceneNode *camera;

//Constructeur
    public:
        CameraFPS();
        CameraFPS(bool canFly1, irr::scene::ISceneManager * smgr);
        ~CameraFPS();

//Methodes
    public:
        void cameraCanFly(bool canFly1 = false);
        irr::core::vector3df getCamLocate();
};

#endif

CameraFPS.cpp

Code:

#include <irr/irrlicht.h>
#include "CameraFPS.h"

using namespace irr;

CameraFPS::CameraFPS(){}
CameraFPS::CameraFPS(bool canFly1, irr::scene::ISceneManager * smgr){

    canFly = canFly1;

    irr::SKeyMap keyMap[5];
    
        //avancer
        keyMap[0].Action = irr::EKA_MOVE_FORWARD;
        keyMap[0].KeyCode = irr::KEY_KEY_Z;
        //reculer
        keyMap[1].Action = irr::EKA_MOVE_BACKWARD;
        keyMap[1].KeyCode = irr::KEY_KEY_S;
        //a gauche
        keyMap[2].Action = irr::EKA_STRAFE_LEFT;
        keyMap[2].KeyCode = irr::KEY_KEY_Q;
        //a droite
        keyMap[3].Action = irr::EKA_STRAFE_RIGHT;
        keyMap[3].KeyCode = irr::KEY_KEY_D;
        //saut
        keyMap[4].Action = irr::EKA_JUMP_UP;
        keyMap[4].KeyCode = irr::KEY_SPACE;

    camera = smgr->addCameraSceneNodeFPS (0, 100.0f, 300.0f, 0, keyMap, 5, canFly1, 0.4);
    camera->setPosition(core::vector3df(-95.560890, 99.983185, 66.212875));
}
CameraFPS::~CameraFPS(){
    delete camera;
}

core::vector3df CameraFPS::getCamLocate(){
    return camera->getPosition();
}

Bon, enfait il y a d'autres classes, mais je te les passe quand tu les veux

Dernière modification par Ma77hTheG33k (01-09-2009 09:57:05)

Hors ligne


#3 

02-09-2009 20:06:08

tmyke
Administrateur
Date d'inscription: 24-03-2008
Messages: 1025

Bon, à la lumière de ton code vite fait, je ne vois pas ce qui cloche à la base.
Ceci dit, pourquoi ce camera.camera->setFOV(70); ?

As-tu sinon vérifié la validité de tes media (chemin, etc...)...


Force et sagesse...

Hors ligne


Options Liens officiels Caractéristiques Statistiques Communauté
Corrections
irrlicht
irrklang
irredit
irrxml
xhtml 1.0
css 2.1
Propulsé par FluxBB
Traduit par FluxBB.fr
883 membres
1429 sujets
11121 messages
Dernier membre inscrit: Saidov17
4 invités en ligne
Aucun membre connecté
RSS Feed