Partage
  • Partager sur Facebook
  • Partager sur Twitter

[Irrlicht] Problème de lumière

    14 mai 2008 à 15:04:08

    Bonjour à tous, Voulant me mettre à la 3D j'ai commencé a suivre le tuto sur le moteur Irrlicht : ici

    Le problème c'est que si je met le même code que lui, je n'ai pas le même effet de lumière.
    par exemple pour ce code :
    #include <iostream>
    
    #include <IRR/irrlicht.h>
     
    using namespace irr;
    
        #define DIFFUSE_PARENT        0
        #define DIFFUSE_POSITION      core::vector3df(0,0,5)
        #define DIFFUSE_COULEUR_R     0.4f
        #define DIFFUSE_COULEUR_G     0.4f
        #define DIFFUSE_COULEUR_B     0.4f
        #define DIFFUSE_COULEUR       video::SColorf(DIFFUSE_COULEUR_R,DIFFUSE_COULEUR_G,DIFFUSE_COULEUR_B,0.0f)
        #define DIFFUSE_ANGLE         100.0f
    
    int main(void)
    {
        //Cette ligne va créer un contexte d'affichage OpenGL
        IrrlichtDevice *device = createDevice (video::EDT_OPENGL, core::dimension2d<s32>(800,600),32,false,true,false,0);
        //On associe un driver à la fenêtre
        video::IVideoDriver* driver = device->getVideoDriver ();
        //Et on crée un gestionnaire de scène (scenegraph)
        scene::ISceneManager *scenegraph = device->getSceneManager ();
     
     
        // // // // La caméra // // // //
        scene::ICameraSceneNode *camera = scenegraph->addCameraSceneNodeFPS (0,80.0f,100.0f);
        camera->setPosition(core::vector3df(10.0, 50.0, -50.0));
     
        // // // // la salle // // // //
        scene::IAnimatedMesh *room = scenegraph->getMesh("room.3ds");
        if (room == 0)
        {
            std::cout << "probleme de chargement de la salle" << std::endl;
            return 1;
        }
        //on l'associe a un noeud
        scene::IMeshSceneNode *Nroom = scenegraph->addMeshSceneNode(room->getMesh(0));
        //Cette ligne fait en sorte que le mesh dépende de la lumière
        Nroom->setMaterialFlag(video::EMF_LIGHTING, true);
     
        //On applique une texture à la salle.
        scenegraph->getMeshManipulator()->makePlanarTextureMapping(
            room->getMesh(0), 0.004f);
        Nroom->setMaterialTexture( 0, driver->getTexture("rockwall.bmp") );
        if (driver->getTexture("rockwall.bmp") == 0)
        {
            std::cout << "probleme de chargement de la texture \"rockwall.bmp\"" << std::endl;
            return 1;
        }
     
        // // // // la lumière // // // //
        scenegraph->setAmbientLight(video::SColorf(1.0, 1.0, 1.0,0.0));
        
        /* Lumière diffuse */
    
        scene::ILightSceneNode* lumiere = scenegraph->addLightSceneNode(Nroom, core::vector3df(100,100,200),video::SColorf(0.4f, 0.4f, 0.6f, 0.0f), 100.0f);
         
    
    
        
        //La boucle de rendu
        while (device->run ())
        {
            //On indique qu'on démarre la scène
            driver->beginScene (true, true, video::SColor (255,255,255,255));
            //On calcule le rendu
            scenegraph->drawAll ();
            //On affiche le rendu à l'écran
            driver->endScene ();
        }
     
        //On libère la mémoire en détruisant le device
        device->drop ();
        return 0;
    }
    


    Je me retrouve avec un scène genre :
    Image utilisateur

    Au lieu de :
    Image utilisateur

    De plus, quand j'essay d'utilisé la fonction :
    lumiere->getLightData().Type =ELT_DIRECTIONAL;
    


    Il me dit que la valeur ELT_DIRECTIONAL n'existe pas, tout comme ELT_SPOT et ELT_POINT....


    Quelqu'un pourrait aider un nul en Irrlicht... ?



    EDIT : Il parle dans la page suivante juste après avoir donné un code

    Citation : Kevin Leonhart

    Remarquez au passage cet éclairage tamisé du plus bel effet.

    Alors que moi qui ai recopier bêtement le code, je n'ai qu'une lumière fixe bien éclairé...
    • Partager sur Facebook
    • Partager sur Twitter
      14 mai 2008 à 15:34:30

      Le problème c'est que pendant la rédaction de son tuto, il était sous Irrlicht 1.3, et que maintenant nous somme tous sous Irrlicht 1.4 :(

      Regarde dans la doc ce qui a changé, et recode dans ce sens.
      • Partager sur Facebook
      • Partager sur Twitter
        14 mai 2008 à 15:44:34

        arf... il y a beaucoup de chose qui ont changé ?

        En faite ma question est plutôt, pour un débutant qui veut se lancer mieux vaut repasser sous Irrlicht 1.3 ou se démerder seul avec les problème sous Irrlicht 1.4 ?
        • Partager sur Facebook
        • Partager sur Twitter
          14 mai 2008 à 15:46:30

          Hum... pour les lumières je ne pourrait pas t'aider, en effet dans mes applications avec irrlicht je m'occupe très peu ( pour ne pas dire PAS ) des lumières...

          Moi je te conseille d'aller voir dans la doc ce qui a changé par rapport au lumière depuis la 1.3 et de faire le necessaire en conséquence ;) .
          • Partager sur Facebook
          • Partager sur Twitter
            14 mai 2008 à 17:14:33

            toute les lumières avec Irrlicht sont gérer avec les modèles non ?

            Sinon je galère pas mal avec l'anglais donc sa va être dur de comprendre les changements... mais bon, on vba se lancer
            • Partager sur Facebook
            • Partager sur Twitter

            [Irrlicht] Problème de lumière

            × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
            × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
            • Editeur
            • Markdown