#0 

15-01-2010 13:53:43

jonath313
Abonné
Date d'inscription: 28-12-2009
Messages: 240

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


#1 

15-01-2010 14:30:22

firnafin
Abonné
Date d'inscription: 31-03-2007
Messages: 150

Code:

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

Code:

map->setMaterialFlag(irr:video::EMF_LIGHTING,true);

Hors ligne


#2 

15-01-2010 17:01:31

jonath313
Abonné
Date d'inscription: 28-12-2009
Messages: 240

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

Hors ligne


#3 

15-01-2010 17:10:15

jonath313
Abonné
Date d'inscription: 28-12-2009
Messages: 240

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


#4 

15-01-2010 17:54:23

firnafin
Abonné
Date d'inscription: 31-03-2007
Messages: 150

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


#5 

15-01-2010 19:34:09

jonath313
Abonné
Date d'inscription: 28-12-2009
Messages: 240

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


#6 

15-01-2010 21:35:19

firnafin
Abonné
Date d'inscription: 31-03-2007
Messages: 150

Hors ligne


#7 

15-01-2010 21:43:13

Magun
SleekThink Producer
Lieu: Punakha
Date d'inscription: 18-11-2007
Messages: 910
Corrections: 2
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 :-°

Dernière modification par Magun (15-01-2010 21:45:30)

Hors ligne


#8 

15-01-2010 22:59:16

firnafin
Abonné
Date d'inscription: 31-03-2007
Messages: 150

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


#9 

16-01-2010 22:39:32

jonath313
Abonné
Date d'inscription: 28-12-2009
Messages: 240

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


#10 

16-01-2010 23:08:51

nico
Webmaster
Date d'inscription: 07-08-2009
Messages: 563
Corrections: 9

jonath313 :

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


'Ambientcolor' n'existe pas wink

jonath313 :

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


'setlightData' appartient à une classe wink

Hors ligne


#11 

17-01-2010 12:20:45

jonath313
Abonné
Date d'inscription: 28-12-2009
Messages: 240

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


#12 

17-01-2010 17:41:52

X3liF
Membre
Date d'inscription: 27-10-2009
Messages: 19

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

Code:

    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

Dernière modification par X3liF (17-01-2010 17:46:43)

Hors ligne


#13 

17-01-2010 21:26:57

jonath313
Abonné
Date d'inscription: 28-12-2009
Messages: 240

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


#14 

19-01-2010 20:56:46

jonath313
Abonné
Date d'inscription: 28-12-2009
Messages: 240

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

Hors ligne


#15 

19-01-2010 21:43:45

firnafin
Abonné
Date d'inscription: 31-03-2007
Messages: 150

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

Code:

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

on a connu plus utile big_smile

Dernière modification par firnafin (19-01-2010 21:44:13)

Hors ligne


#16 

19-01-2010 22:52:52

jonath313
Abonné
Date d'inscription: 28-12-2009
Messages: 240

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


#17 

20-01-2010 14:21:25

firnafin
Abonné
Date d'inscription: 31-03-2007
Messages: 150

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


#18 

21-01-2010 18:38:31

jonath313
Abonné
Date d'inscription: 28-12-2009
Messages: 240

ok merci de votre aide wink

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
97 invités en ligne
Aucun membre connecté
RSS Feed