TommyBoy_CH | 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 ? )
Voilà mon code:
Code :
- import java.awt.*;
- import java.awt.event.*;
- import javax.media.opengl.*;
- import javax.media.opengl.glu.*;
- import com.sun.opengl.util.*;
- public class TP5Box implements GLEventListener, KeyListener {
- //
- // variables de classe
- //
- private GLU glu = new GLU();
- double a = 0;
- double CameraPos = 5;
- double SpherePos = 0;
- float LumierePos = 0;
- GLUquadric quadric = glu.gluNewQuadric();
- //
- // Fonction principale
- //
- public static void main(String[] args) {
- Frame frame = new Frame("Introduction a la programmation 3d" );
- GLCanvas canvas = new GLCanvas();
- canvas.addGLEventListener(new TP5Box());
- canvas.setFocusable(true); // pour mettre le composant actif par
- // rapport aux evenements
- frame.add(canvas);
- frame.setSize(300, 300);
- final FPSAnimator animator = new FPSAnimator(canvas, 40);
- frame.addWindowListener(new WindowAdapter() {
- public void windowClosing(WindowEvent e) {
- animator.stop();
- System.exit(0);
- }
- });
- frame.setVisible(true);
- animator.start();
- }
- //
- // Fonction appelee lorsque la fenetre est modifiee
- //
- public void reshape(GLAutoDrawable drawable, int x, int y, int width,
- int height) {
- GL gl = drawable.getGL();
- gl.glMatrixMode(GL.GL_PROJECTION);
- gl.glLoadIdentity();
- glu.gluPerspective(45, (float) width / (float) height, 1, 100);
- }
- //
- // Fonction appelee a chaque iteration pour dessiner chaque image a l'ecran
- //
- public void display(GLAutoDrawable drawable) {
- GL gl = drawable.getGL();
- gl.glClear(GL.GL_COLOR_BUFFER_BIT | GL.GL_DEPTH_BUFFER_BIT);
- gl.glMatrixMode(GL.GL_MODELVIEW);
- gl.glLoadIdentity();
- glu.gluLookAt(0, 0, CameraPos, 0, 0, 0, 0, 1, 0);
- gl.glPushMatrix();
- gl.glTranslated(0, 0.0, SpherePos);
- gl.glLightfv(GL.GL_LIGHT0, GL.GL_POSITION, new float[]{0f, 0f, 0.0f, 0.5f}, 0);
- gl.glLightfv(GL.GL_LIGHT1, GL.GL_POSITION, new float[]{2f, 0f, 0.0f, 0.5f}, 0);<------------------------celle là s'affiche pas
- glu.gluSphere(quadric, 0.3,50,50);
- gl.glPopMatrix();
- gl.glBegin(GL.GL_QUADS); // Dessin du plan
- ...
- }
- //
- // Initialisation des parameters OpenGL
- //
- public void init(GLAutoDrawable drawable) {
- GL gl = drawable.getGL();
- gl.glPolygonMode(GL.GL_FRONT_AND_BACK, GL.GL_FILL);
- gl.glEnable(GL.GL_DEPTH_TEST);
- gl.glEnable(GL.GL_COLOR_MATERIAL);
- gl.glEnable(GL.GL_LIGHTING);
- gl.glEnable(GL.GL_LIGHT0);
- gl.glEnable(GL.GL_LIGHT1); <---------------------------------------celle là s'affiche pas
- drawable.addKeyListener(this); // enregistre un ecouteur des evenements
- // clavier pour le composant
- }
- public void displayChanged(GLAutoDrawable drawable, boolean modeChanged,
- boolean deviceChanged) {
- }
- //
- // Fonctions de gestion du clavier
- //
- public void keyPressed(KeyEvent e) {
- }
- public void keyReleased(KeyEvent e) {
- }
- public void keyTyped(KeyEvent e) {
- if (e.getKeyChar() == '1')
- CameraPos = CameraPos - 0.1;
- if (e.getKeyChar() == '2')
- CameraPos = CameraPos + 0.1;
- if (e.getKeyChar() == '3')
- SpherePos = SpherePos - 0.1;
- if (e.getKeyChar() == '4')
- SpherePos = SpherePos + 0.1;
- }
- }
|
Merci à la bonne âme charitable qui pourra me débloquer, j'ai un contôle demain |