[OpenGl]Comment ajouter une deuxième lumière ?

Comment ajouter une deuxième lumière ? [OpenGl] - Java - Programmation

Marsh Posté le 14-06-2006 à 22:13:33    

J'ai un tout petit problème. Dans une scène toute simple, j'ai une lumière qui éclaire une sphère - elle même éclairant la scène - par le côte pour donner une impression que la lumière "sort" de la sphère. La première c'est ok (celle qui "sort" de la sphère) mais toutes celles que j'essaye d'ajouter, y a rien à faire je me rappelle pas le truc pour qu'elles s'affichent...
 
Pourtant j'ai bien mon
 
gl.glLightfv(GL.GL_LIGHT1, GL.GL_POSITION, new float[]{0f, 0f, 0.0f, 0.5f}, 0);
 
et plus loin  
 
gl.glEnable(GL.GL_LIGHT1);
 
mais celle là ben non elle veut pas s'afficher  :(  
 
Pourtant il me semble avoir eu le même problème en scéance pratique mais je me rappelle plus la solution que m'avait donné l'assistant (y a pas un smile pour un âne ?  :D  )
 
Voilà mon code:
 

Code :
  1. import java.awt.*;
  2. import java.awt.event.*;
  3. import javax.media.opengl.*;
  4. import javax.media.opengl.glu.*;
  5. import com.sun.opengl.util.*;
  6. public class TP5Box implements GLEventListener, KeyListener {
  7. //
  8. // variables de classe
  9. //
  10. private GLU glu = new GLU();
  11. double a = 0;
  12. double CameraPos = 5;
  13. double SpherePos = 0;
  14. float LumierePos = 0;
  15. GLUquadric quadric = glu.gluNewQuadric();
  16. //
  17. // Fonction principale
  18. //
  19. public static void main(String[] args) {
  20.  Frame frame = new Frame("Introduction a la programmation 3d" );
  21.  GLCanvas canvas = new GLCanvas();
  22.  canvas.addGLEventListener(new TP5Box());
  23.  canvas.setFocusable(true); // pour mettre le composant actif par
  24.         // rapport aux evenements
  25.  frame.add(canvas);
  26.  frame.setSize(300, 300);
  27.  final FPSAnimator animator = new FPSAnimator(canvas, 40);
  28.  frame.addWindowListener(new WindowAdapter() {
  29.   public void windowClosing(WindowEvent e) {
  30.    animator.stop();
  31.    System.exit(0);
  32.   }
  33.  });
  34.  frame.setVisible(true);
  35.  animator.start();
  36. }
  37. //
  38. // Fonction appelee lorsque la fenetre est modifiee
  39. //
  40. public void reshape(GLAutoDrawable drawable, int x, int y, int width,
  41.   int height) {
  42.  GL gl = drawable.getGL();
  43.  gl.glMatrixMode(GL.GL_PROJECTION);
  44.  gl.glLoadIdentity();
  45.  glu.gluPerspective(45, (float) width / (float) height, 1, 100);
  46. }
  47. //
  48. // Fonction appelee a chaque iteration pour dessiner chaque image a l'ecran
  49. //
  50. public void display(GLAutoDrawable drawable) {
  51.  GL gl = drawable.getGL();
  52.  gl.glClear(GL.GL_COLOR_BUFFER_BIT | GL.GL_DEPTH_BUFFER_BIT);
  53.  gl.glMatrixMode(GL.GL_MODELVIEW);
  54.  gl.glLoadIdentity();
  55.  glu.gluLookAt(0, 0, CameraPos, 0, 0, 0, 0, 1, 0);
  56.  gl.glPushMatrix();
  57.  gl.glTranslated(0, 0.0, SpherePos);
  58.   gl.glLightfv(GL.GL_LIGHT0, GL.GL_POSITION, new float[]{0f, 0f, 0.0f, 0.5f}, 0);
  59.   gl.glLightfv(GL.GL_LIGHT1, GL.GL_POSITION, new float[]{2f, 0f, 0.0f, 0.5f}, 0);<------------------------celle là s'affiche pas
  60.   glu.gluSphere(quadric, 0.3,50,50);
  61.  gl.glPopMatrix();
  62.  gl.glBegin(GL.GL_QUADS); // Dessin du plan
  63.                 ...
  64. }
  65. //
  66. // Initialisation des parameters OpenGL
  67. //
  68. public void init(GLAutoDrawable drawable) {
  69.  GL gl = drawable.getGL();
  70.  gl.glPolygonMode(GL.GL_FRONT_AND_BACK, GL.GL_FILL);
  71.  gl.glEnable(GL.GL_DEPTH_TEST);
  72.  gl.glEnable(GL.GL_COLOR_MATERIAL);
  73.  gl.glEnable(GL.GL_LIGHTING);
  74.  gl.glEnable(GL.GL_LIGHT0);
  75.  gl.glEnable(GL.GL_LIGHT1); <---------------------------------------celle là s'affiche pas
  76.  drawable.addKeyListener(this); // enregistre un ecouteur des evenements
  77.          // clavier pour le composant
  78. }
  79. public void displayChanged(GLAutoDrawable drawable, boolean modeChanged,
  80.   boolean deviceChanged) {
  81. }
  82. //
  83. // Fonctions de gestion du clavier
  84. //
  85. public void keyPressed(KeyEvent e) {
  86. }
  87. public void keyReleased(KeyEvent e) {
  88. }
  89. public void keyTyped(KeyEvent e) {
  90.  if (e.getKeyChar() == '1')
  91.   CameraPos = CameraPos - 0.1;
  92.  if (e.getKeyChar() == '2')
  93.   CameraPos = CameraPos + 0.1;
  94.  if (e.getKeyChar() == '3')
  95.   SpherePos = SpherePos - 0.1;
  96.  if (e.getKeyChar() == '4')
  97.   SpherePos = SpherePos + 0.1;
  98. }
  99. }


 
Merci à la bonne âme charitable qui pourra me débloquer, j'ai un contôle demain  :jap:

Reply

Marsh Posté le 14-06-2006 à 22:13:33   

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed