IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

OpenGL Discussion :

problème déplacement en z


Sujet :

OpenGL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    228
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Décembre 2005
    Messages : 228
    Par défaut problème déplacement en z
    bonjour,
    je suis en train d'apprendre à me servir d'OpenGL et j'ai un petit problème. J'ai un objet 3D (un cube). Je souhaite pouvoir le faire tourner, translater. Comme je découvre, j'essaie gluLookAt() et glRotatef/glTranslatef. Mon problème est que quand j'essaie d'avancer ou reculer mon objet (déplacement sur l'axe z), l'objet disparait à partir d'un certain moment. J'ai cru comprendre que par défaut, on ne peut pas voir toute la scène et qu'il faut spécifier quelle partie on veut voir mais je n'ai pas trouvé comment faire cela.

    Votre aide sera la bienvenue.


    Pendant que j'y suis, connaissez-vous un soft freeware qui lise les fichiers 3DS. J'ai juste besoin qu'il affiche les objets sans faire d'édition.


    merci

  2. #2
    Membre émérite
    Avatar de Happy
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2005
    Messages
    665
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Autre

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juin 2005
    Messages : 665
    Par défaut
    Salut,

    Peut être ça pourrait aider un petit exemple de caméra ici:

    http://gdorin.hopto.org/dg/?q=node/3

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    228
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Décembre 2005
    Messages : 228
    Par défaut
    Voila un exemple concret de mon probleme :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
     
     
    #pragma comment(lib, "opengl32.lib")
    #pragma comment(lib, "glu32.lib")
    #pragma comment(lib, "glut32.lib")
     
    #pragma comment(linker, "/subsystem:\"windows\" \
    /entry:\"mainCRTStartup\"")
     
    #include <gl/glut.h>
     
     
    void affichage(void){
     
    	glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
    	glMatrixMode(GL_MODELVIEW);
    	glLoadIdentity();
    	gluLookAt(0,0,2.0,0,0,0,0,1,0);
    	glBegin(GL_TRIANGLES);
     
    	glColor3f(1,1,0);//jaune
    	glVertex3f(0,0,0);
    	glVertex3f(1,1,0);
    	glVertex3f(0,1,0);
     
    	glColor3f(0,0,0);//noir
    	glVertex3f(0,0,1);
    	glVertex3f(1,1,1);
    	glVertex3f(0,1,1);
    	glEnd();
     
    	glBegin(GL_QUADS);
     
    	glColor3f(0.2,0.3,0.8);//bleu
    	glVertex3f(1,1,1);
    	glVertex3f(0,1,1);
    	glVertex3f(0,1,0);
    	glVertex3f(1,1,0);
     
    	glColor3f(0.8,0,0);//rouge
    	glVertex3f(1,1,1);
    	glVertex3f(0,0,1);
    	glVertex3f(0,0,0);
    	glVertex3f(1,1,0);
     
    	glColor3f(0,0.8,0);//vert
    	glVertex3f(0,1,1);
    	glVertex3f(0,0,1);
    	glVertex3f(0,0,0);
    	glVertex3f(0,1,0);
     
    	glEnd();
     
    	glutSwapBuffers(); 
    }
     
    void clavier(unsigned char touche,int x,int y){
    	if(touche == 27) /*la touche 'Echap' pour quitter le programme */
    		exit(0);
    }
     
     
    int main(int argc, char *argv[]){
     
    	//init de glut
    	glutInit(&argc, argv);
    	glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH);
    	glutInitWindowPosition(0,0);
    	glutInitWindowSize(800,800);
    	glutCreateWindow("title");
    	glutFullScreen();
     
    	glClearColor(0.0f,1.0f,1.0f,0.0f);
     
    	//no transparence
    	glEnable(GL_DEPTH_TEST);
     
     
    	//fonctions de rappel
    	glutDisplayFunc(affichage);
    	glutKeyboardFunc(clavier);
     
     
    	//boucle principale
    	glutMainLoop();
     
    	return 0;
    }
    Quand je fais gluLookAt(0,0,2.0,0,0,0,0,1,0), je vois bien le triangle noir alors que quand je fais gluLookAt(0,0,2.1,0,0,0,0,1,0), je ne vois plus rien ...

  4. #4
    Membre émérite
    Avatar de Happy
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2005
    Messages
    665
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Autre

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juin 2005
    Messages : 665
    Par défaut
    Où est gluPerspective() ?

  5. #5
    Membre chevronné
    Inscrit en
    Février 2008
    Messages
    413
    Détails du profil
    Informations personnelles :
    Âge : 45

    Informations forums :
    Inscription : Février 2008
    Messages : 413
    Par défaut
    Salut,

    la question de Happy est importante car c'est l'appel à gluPerspecitve (ou glFrustum ou glOrtho) qui te permet d'indiquer les plans de clipping proche ("near") et éloignés ("far"). Un plan de clipping indique à openGL quelles zones de ta scène doivent être "oubliées".

    Dans ton cas, tu ne vois plus rien si tu changes la position Z de ta camera de 2.0 à 2.1. A priori ca ressemble à un plan de clipping "near" définit à Z = 2.0, ce qui fait que tout objet avec Z > 2.0 ne sera pas afficheé (et de même, avec un plan de clipping "far" à z = -2.0, tout ce qui aura Z < -2.0 sera coupé...au final tu n'affiches que les objets ayant -2.0 < z < 2.0)

    Essaye d'augmenter cette valeur dans gluPerspecitve (ou glFrustum ou glOrtho), ca devrait aider

  6. #6
    Membre éclairé
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    228
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Décembre 2005
    Messages : 228
    Par défaut
    Je me suis servi de gluPerspective() et effectivement, ça marche beaucoup mieux ainsi ...


    Merci beaucoup.

    Au fait quelqu'un connait un soft gratuit capable de visualiser les fichiers 3DS ?

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Problème déplacement d'une balle
    Par Coco4486 dans le forum Ogre
    Réponses: 21
    Dernier message: 09/05/2008, 11h47
  2. problème déplacement mails outlook 2003
    Par ptiyo dans le forum Outlook
    Réponses: 14
    Dernier message: 01/08/2007, 14h16
  3. Problème déplacement entre formulaires
    Par ajuveneton dans le forum IHM
    Réponses: 4
    Dernier message: 21/05/2007, 13h01
  4. Réponses: 2
    Dernier message: 26/07/2006, 00h33
  5. problème déplacement entre formulaire
    Par estancha dans le forum IHM
    Réponses: 6
    Dernier message: 07/10/2004, 15h22

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo