Pages: 1
Bonjour,
Je découvre le moteur irrlicht et j'ai plutôt du mal à gérer l'éclairage, j'ai fait un petit FPS tout simple avec une caméra et le joueur se déplace dans un labyrinthe en 3d, le programme gére les collisions de la map, le principe est que le décors soit plutot sombre pour que je puisse fixer une lampe dans la main du personnage du joueur, le probleme c'est que je n'ai aucune idée de comment m'y prendre pour faire la lampe .
Quelqu'un peut m'aider svp ?
Hors ligne
Je trouve pas que çà éclaire beaucoup c'est normale ?
Hors ligne
jouer sur la position pour regler l'intensité c'est un peut domage car l'éclairage ne sera pas realiste ( -50,-50,600 : la lampe a droite de joueur ( la cam ) au dessu et loin derriere ) , joue sur le parametre getLightData().Fallof , getLightData().Ambientcolor ( mettre plus prés de 0,0,0 pour un limiere moins spot 5000W ) and getLightData().Attenuation le shininess de la map peut aussi intervenir.
Hors ligne
irr::scene::ILightSceneNode* lampe = sceneManager->addLightSceneNode(camera); // on met une lampe sur la caméra
lampe->setLightType(irr::video::ELT_SPOT);
lampe->getLightData().OuterCone = 540.0f;
lampe->getLightData().Fallof ;
lampe->getLightData().Ambientcolor(0,0,0);
lampe->getLightData();
Sans te mentir les 3 derniéres lignes me posent probleme çà ne compile pas il manque surement des truc mes bon j'ai beau gratter rien ne passe !
Hors ligne
personelement je procède ainsi ...
étant donné que "lampe->getLightData()" ne retourne pas un pointeur je lui renvoie après modification
edit : oui pas mal aussi le lien ...
il aurais peut-être falue que je commence par la :-°
Dernière modification par Magun (15-01-2010 21:45:30)
Hors ligne
C'est plus un probleme de comprehension du language cpp que d' irrlicht.Il vaut mieu etre au point sur les notions de base pour comprendre la doc d'ou l'utilité de www.developpez.com
Hors ligne
Merci de m'accorder vôtre aide mais bon je suis pas un pro
J'ai deux erreurs :
lightData.Ambientcolor(0,0,0);
error: 'struct irr::video::SLight' has no member named 'Ambientcolor'
setLightData(lightData);
error: 'setLightData' was not declared in this scope
J'ai regardais la doc et j'ai assai de mal à comprendre :S
Hors ligne
voila j'ai fait de l'ordre la dedans mais il doit manquer quelque chose car je n'ai toujours pas d'éclairage ?
Hors ligne
dans la documentation il est spécifié
"http://irrlicht.sourceforge.net/docu/namespaceirr_1_1video.html#af0e02f6f83cc35cf9e764bf18400d39" :
ELT_SPOT spot light, it has a position in space, a direction, and a limited cone of influence
je ne vois que la l'angle du outtercone faut pas régler le Inner aussi?
à moins que je ne me trompe (j'ai as fait joujou avec les lumières pour le moment), placer la lumière comme fille du noeuf caméra n'implique pas qu'elle éclaire devant celle ci... ( à moins que ca soit les paramètres par défaut du spot )
ensuite sur la structure SLight, tu n'as pas rajouté les paramètres de couleur de la lumière : AmbientColor, DiffuseColor, et SpecularColor si ca e trouve t'a lampe est éteinte ( elle éclaire en noir )
de plus ton code ne modifie pas la lightdata
fais toutes tes modifs sur le lightData que tu renvoies après sinon ca sert à rien
Dernière modification par X3liF (17-01-2010 17:46:43)
Hors ligne
Bon après avoir retournée la doc dans tout les sens j'ai fait cela :
// La lampe a la main
irr::scene::ILightSceneNode* lampe = sceneManager->addLightSceneNode(camera); // on met une lampe sur la caméra
video::SLight lightData = lampe->getLightData();
// modification des paramètres de la lampe
lampe->setLightType(irr::video::ELT_SPOT);
lampe->getLightData().OuterCone = 200.0f;
lampe->getLightData().InnerCone = 0.0f;
lampe->getLightData().Falloff = 100.0f;
lampe->getLightData().Radius = 100.0f;
lampe->getLightData().SpecularColor= SColor(0,25,25,25);
lampe->getLightData().DiffuseColor= SColor(0,100,100,100);
lampe->setPosition(irr::core::vector3df(0.0f,0.0f,600.0f));
//envoie des paramètres à la lampe
lampe->setLightData(lightData);
Beaucoup de paramètres pour une simple lampe ! enfin bref le résultat ne me convient pas je sais même pas si ce que j'ai fait peut être appelé de la lumière sachant que çà n'éclaire casiment rien, je vois pas où j'ai put me planter dans quel valeur.
En plus il y a un moyen de jouer sur la direction du spot et j'arrive pas à m'en servir !
J'ai vraiment du mal ...
Hors ligne
Est-ce que quelqu'un peut m'orienter car sa fait un moment que je gratte et franchement je trouve pas :S
Hors ligne
// La lampe a la main
irr::scene::ILightSceneNode* lampe = sceneManager->addLightSceneNode(camera); // on met une lampe sur la caméra
// modification des paramètres de la lampe
lampe->setLightType(irr::video::ELT_SPOT);
lampe->getLightData().OuterCone = 6000.0f;
lampe->getLightData().InnerCone = 1000.0f;
lampe->getLightData().Falloff = 0.0f;
lampe->getLightData().Radius = 100.0f;
lampe->setPosition(irr::core::vector3df(0.0f,0.0f,600.0f));
lampe->setRotation(irr::core::vector3df(0.0,0.0,-90.0)) ;
//envoie des paramètres à la lampe
video::SLight lightData = lampe->getLightData();
lampe->setLightData(lightData);
Voila est-ce que j'ai corrigé mon erreur ?
Par contre si c'est cela je dois mal régler mes paramètres car c'est vraiment pas trés lumieu !
Merci encore de vôtre patience
"c'est en forgeant qu'on devient forgeront"
Hors ligne
lampe->setPosition(irr::core::vector3df(0.0f,0.0f,600.0f)); ta lampe est 600 pas derriere.
lampe->getLightData().OuterCone = 6000.0f; c'est l'angle du cone exterieur : ca doit etre un angle. mettre 45 par exemple;
lampe->getLightData().InnerCone = 1000.0f; idem mettre 0.
un fois de plus ca :
video::SLight lightData = lampe->getLightData();
lampe->setLightData(lightData);
c'est inutile
lampe->setRotation(irr::core::vector3df(0.0,0.0,-90.0)) ; par defaut le spot "regarde" la direction Z+ , comme la camera donc c'est inutile.
Dernière modification par firnafin (20-01-2010 14:22:34)
Hors ligne
Pages: 1
Options | Liens officiels | Caractéristiques | Statistiques | Communauté |
---|---|---|---|---|
Corrections |
|
xhtml 1.0 css 2.1 Propulsé par FluxBB Traduit par FluxBB.fr |
882 membres 1429 sujets 11119 messages |
Dernier membre inscrit: LiseBuisson96 10 invités en ligne Aucun membre connecté RSS Feed |