Bonjour,
J'ai un petit problem de lumiere : dans mon code je spécifie une lumière unidirectionelle, cependant rien ne change par rapport à lorsque j'ai une lumiere ambiante . J'ai pourtant géré les normales en construisant mes Shape3D, et j'ai utilisé la méthode setMaterial() ....
je vois pas ce qui se passe ...
voila le morceau de code ou je définis la source lumineuse :
Code :
- public BranchGroup dessiner3d(){
- //creation du BranchGroup :
- BranchGroup bg = new BranchGroup();
- //on creer deux Groups :
- Group groupDeCases = new Group();
- Group groupDePions = new Group();
- //on ajoute le TransformGroup de chaque Case au groupe groupDeCases :
- for (int h=0; h<taille; h++){
- for (int v=0; v<taille; v++) groupDeCases.addChild( C[h][v].dessiner3d());
- }
- //on ajoute le TransformGroup de chaque pion au groupe groupDePions :
- for (int i=0; i<nbPion; i++) groupDePions.addChild(P[i].dessiner3d());
- //---------------------debut creation du plateau-----------------------//
- ...........
- bla bla bla bla
- .....................
- bg.addChild(rotation);
- //---------------------fin creation du plateau-----------------------//
- //---------------------Gestion des lumieres-----------------------//
- //une lumiere ambiante :
- //AmbientLight lumAmb=new AmbientLight(new Color3f(1f,1f,1f));
- //lumAmb.setInfluencingBounds(new BoundingSphere(new Point3d(),150d));
- //bg.addChild(lumAmb);
- //ainsi qu'un lumiere directionelle pour mettres les formes en valeurs :
- DirectionalLight lumDir=new DirectionalLight();
- lumDir.setDirection(new Vector3f(0f,0f,-1f));
- lumDir.setInfluencingBounds(new BoundingSphere(new Point3d(),150d));
- lumDir.setColor(new Color3f(1f,1f,1f));
- bg.addChild(lumDir);
- //---------------------Fin Gestion des lumieres-----------------------//
- return(bg);
- }
|
et avec ce code, j'obtient ca :
il n'y a aucune hombres rien du tout , c'est comme si j'avais une lumiere ambiente !
Merci de votre aide !