Historique des modifications - Message

Message #11102

Sujet: Problème d'ombre sur un modèle 3D


Type Date Auteur Contenu
Création du message 27-02-2013 20:16:14 ment0s-
Bonjour à tous,
Je me permets de revenir rapidement car j'ai un nouveau problème sous Irrlicht : lors de l'ajout d'une lumière ambiante (ainsi que l'ombre sur ma map), j'ai une "seconde" ombre qui apparaît loin derrière la map, au niveau de la projection de mon ombre.
Un screenshot pour vous montrer mon problème :
http://www.zimagez.com/zimage/rendu39.php

Le code source du main :
#include <iostream>
#include <irrlicht.h>

using namespace std;
/* Namespaces pour Irrlicht : */
using namespace irr;
using namespace video;
using namespace core;
using namespace scene;

int main(int argc, char** argv)
{
    // On initialise le moteur
    cout << "Choix de la resolution de l'ecran : " << endl;
    cout << "a. 640*480 - 32 bits " << endl;
    cout << "b. 1024*768 - 32 bits " << endl;
    IrrlichtDevice* device;
    char choix = 0;
    cin >> choix;
    if (choix == 'a')
        device = createDevice(EDT_OPENGL,dimension2d<u32>(1366, 768), 32, true, true, false);
    else if (choix == 'b')
        device = createDevice(EDT_OPENGL,dimension2d<u32>(1024, 768), 32, false, true, false);
    else
        exit(0);
    // On récupère le gestionnaire de scene
    ISceneManager* scenemgr = device->getSceneManager();
    scenemgr->setAmbientLight(SColorf(0.5f,0.5f,0.5f,0.5f));
    // On récupère le pilote video
    IVideoDriver* driver = device->getVideoDriver();
    // On met un titre pour notre fenetre
    device->setWindowCaption(L"Premier projet Irrlicht");

    SKeyMap keyMap[5];                    // re-assigne les commandes
    keyMap[0].Action = EKA_MOVE_FORWARD;  // avancer
    keyMap[0].KeyCode = KEY_KEY_Z;        // z
    keyMap[1].Action = EKA_MOVE_BACKWARD; // reculer
    keyMap[1].KeyCode = KEY_KEY_S;        // s
    keyMap[2].Action = EKA_STRAFE_LEFT;   // a gauche
    keyMap[2].KeyCode = KEY_KEY_Q;        // q
    keyMap[3].Action = EKA_STRAFE_RIGHT;  // a droite
    keyMap[3].KeyCode = KEY_KEY_D;        // d
    keyMap[4].Action = EKA_JUMP_UP;       // saut
    keyMap[4].KeyCode = KEY_SPACE;        // barre espace

    scenemgr->addCameraSceneNodeFPS(       // ajout de la camera FPS
        0,                                     // pas de noeud parent
        100.0f,                                // vitesse de rotation
        0.01f,                                  // vitesse de deplacement
        -1,                                    // pas de numero d'ID
        keyMap,                                // on change la keymap
        5);                                    // avec une taille de 5
    // On ajoute une map à la scene :
    IAnimatedMesh *room = scenemgr->getMesh("media/MAP.obj");
    IAnimatedMeshSceneNode *nRoom = scenemgr->addAnimatedMeshSceneNode(room);
    scenemgr->getMeshManipulator()->makePlanarTextureMapping(room->getMesh(0), 1.0f);
    nRoom->setScale(vector3df(4,4,4));
    nRoom->setMaterialFlag(EMF_LIGHTING, true);
    // Ajout d'une lumière diffuse :
    ILightSceneNode *lumiere = scenemgr->addLightSceneNode();
    ILightSceneNode *lumiere2 = scenemgr->addLightSceneNode();
    lumiere->setRadius(5000);
    lumiere2->setRadius(5000);
    lumiere->setPosition(vector3df(500,200,250));
    lumiere2->setPosition(vector3df(-50,200,5));

    nRoom->addShadowVolumeSceneNode();
    scenemgr->setShadowColor(SColor(150,0,0,0));
    // Ajout du Skydome :
    ISceneNode *ciel = scenemgr->addSkyDomeSceneNode(driver->getTexture("media/Skydome/Skydome.jpg"));
    // On lance la boucle de rendu
    while(device->run())
    {
        driver->beginScene(true, true, SColor(255,128,128,255));
        scenemgr->drawAll();
        driver->endScene();
    }

    device->drop();

    return 0;
}

J'ai remarqué que l'erreur se produit lorsque j'utilise la fonction addLightSceneNode(). N'ayant pas trouvé mon bonheur sur google, j'espère que je le trouverai ici.. smile
PS : Je tiens à préciser que je me remets sur Irrlicht depuis un peu plus d'une semaine, lors de mon temps libre.. Donc certains éléments ont été oubliés.

Merci d'avance.

Retour

Options Liens officiels Caractéristiques Statistiques Communauté
Préférences cookies
Corrections
irrlicht
irrklang
irredit
irrxml
Propulsé par Django
xhtml 1.0
css 2.1
884 membres
1440 sujets
11337 messages
Dernier membre inscrit: Saidov17
165 invités en ligne
membre en ligne: -
RSS Feed