#1 

15-01-2010 12:53:43

jonath313
Membres
Date d'inscription:
Messages: 240
IP: 79.85.248.174
Courriel

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


#2 

15-01-2010 13:30:22

firnafin
Membres
Avatar de firnafin
Date d'inscription:
Messages: 150
IP: 93.9.159.197
Courriel

irr::scene::ILightSceneNode* lampe = scenemanager->addLightSceneNode(camera);
lampe->setLightType(irr::video::ELT_SPOT);
lampe->getLightData().OuterCone = 40.0f;

Tout est on ne peut plus claire dans la documentation.Ne pas oublier
map->setMaterialFlag(irr:video::EMF_LIGHTING,true);


Hors ligne


#3 

15-01-2010 16:01:31

jonath313
Membres
Date d'inscription:
Messages: 240
IP: 79.85.248.174
Courriel

Je trouve pas que çà éclaire beaucoup c'est normale ?


Hors ligne


#4 

15-01-2010 16:10:15

jonath313
Membres
Date d'inscription:
Messages: 240
IP: 79.85.248.174
Courriel

Je te remercie grandement pour ton aide au passage pour la question précédente j'était juste qu'en plus de ce que tu m'a di il falait replacer la lampe par raport à la caméra :

lampe->setPosition(irr::core::vector3df(-50.0,-50.0,600.0));


Hors ligne


#5 

15-01-2010 16:54:23

firnafin
Membres
Avatar de firnafin
Date d'inscription:
Messages: 150
IP: 93.15.61.195
Courriel

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


#6 

15-01-2010 18:34:09

jonath313
Membres
Date d'inscription:
Messages: 240
IP: 79.85.248.174
Courriel

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


#7 

15-01-2010 20:35:19

firnafin
Membres
Avatar de firnafin
Date d'inscription:
Messages: 150
IP: 93.15.61.195
Courriel

Hors ligne


#8 

15-01-2010 20:43:13

Magun
Administrateurs
Avatar de Magun
Date d'inscription:
Messages: 910
IP: 188.93.45.30
Courriel  Site web

personelement je procède ainsi ...

Code c++ :


irr::scene::ILightSceneNode* lampe = sceneManager->addLightSceneNode(camera); // on met une lampe sur la caméra
    lampe->setLightType(irr::video::ELT_SPOT);
    video::SLight lightData = lampe->getLightData();

    lightData.OuterCone = 540.0f;
    lightData.Ambientcolor(0,0,0);

    lampe->setLightData(lightData);

é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 :-°

Hors ligne


#9 

15-01-2010 21:59:16

firnafin
Membres
Avatar de firnafin
Date d'inscription:
Messages: 150
IP: 93.15.61.195
Courriel

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 big_smile


Hors ligne


#10 

16-01-2010 21:39:32

jonath313
Membres
Date d'inscription:
Messages: 240
IP: 79.85.248.174
Courriel

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


#11 

16-01-2010 22:08:51

nico
Administrateurs
Avatar de nico
Date d'inscription:
Messages: 563
IP: 82.232.128.163
Courriel

jonath313 Ecris:

lightData.Ambientcolor(0,0,0);
error: 'struct irr::video::SLight' has no member named 'Ambientcolor'

'Ambientcolor' n'existe pas wink

jonath313 Ecris:

setLightData(lightData);
error: 'setLightData' was not declared in this scope

'setlightData' appartient à une classe wink


Hors ligne


#12 

17-01-2010 11:20:45

jonath313
Membres
Date d'inscription:
Messages: 240
IP: 79.85.248.174
Courriel

Code c++ :



    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;

    video::SLight lightData = lampe->getLightData();
    lampe->setLightData(lightData);


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


#13 

17-01-2010 16:41:52

X3liF
Membres
Date d'inscription:
Messages: 19
IP: 86.77.198.118
Courriel

dans la documentation il est spécifié

"http://irrlicht.sourceforge.net/docu/namespaceirr_1_1video.html#af0e02f6f83cc35cf9e764bf18400d39" Ecris:

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

    video::SLight lightData = lampe->getLightData();
 // modification des paramètres de la lampe
    lghtData.OuterCone = 540.0f;

//envoie des paramètres à la lampe
    lampe->setLightData(lightData);

fais toutes tes modifs sur le lightData que tu renvoies après sinon ca sert à rien wink


Hors ligne


#14 

17-01-2010 20:26:57

jonath313
Membres
Date d'inscription:
Messages: 240
IP: 195.221.123.215
Courriel

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


#15 

19-01-2010 19:56:46

jonath313
Membres
Date d'inscription:
Messages: 240
IP: 195.221.123.215
Courriel

Est-ce que quelqu'un peut m'orienter car sa fait un moment que je gratte et franchement je trouve pas :S


Hors ligne


#16 

19-01-2010 20:43:45

firnafin
Membres
Avatar de firnafin
Date d'inscription:
Messages: 150
IP: 93.9.158.129
Courriel

tu fournis a setLightData un lightData qui na meme pas etait modifier , regarde ton code un peut :
en resumé ce que tu fait :

video::SLight lightData = lampe->getLightData();
...
... 
...
lampe->setLightData(lightData);

on a connu plus utile big_smile


Hors ligne


#17 

19-01-2010 21:52:52

jonath313
Membres
Date d'inscription:
Messages: 240
IP: 195.221.123.215
Courriel

// 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


#18 

20-01-2010 13:21:25

firnafin
Membres
Avatar de firnafin
Date d'inscription:
Messages: 150
IP: 93.9.158.129
Courriel

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.


Hors ligne


#19 

21-01-2010 17:38:31

jonath313
Membres
Date d'inscription:
Messages: 240
IP: 79.85.248.174
Courriel

ok merci de votre aide wink


Hors ligne


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
139 invités en ligne
membre en ligne: -
RSS Feed