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'affichage d'une liste des points 3D


Sujet :

OpenGL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé Avatar de highlight
    Homme Profil pro
    Développeur multimédia
    Inscrit en
    Novembre 2008
    Messages
    139
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur multimédia

    Informations forums :
    Inscription : Novembre 2008
    Messages : 139
    Par défaut problème d'affichage d'une liste des points 3D
    Bonjour à tous,

    J'ai un bug qui me tracasse depuis des jours. Je peux pas l'identifier puisque je suis debutant en opengl. Voila mon probleme:

    J'ai un ensemble des points3D dans un fichier text:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    -11.7735 -6.95658 109.865 
    -8.50865 -9.08019 106.947 
    -8.79906 -9.04637 108.668 
    ....
    etc
    Afin de les afficher j'ai creer un program simple avec opengl. Mais rien n'est afficher: j'ai que la fenetre mais pas de points... pouvez vous m'aider svp... voila mon code:

    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
    #include <iostream>
    // Glut
    #include <GL/glut.h>
     
    #include <string>
    #include <fstream>
    #include <sstream> 
    #include <vector>
    #include "Read_files.h"
    using namespace std;
     
    Point3D S; // une variable de type la structure Point3D, 
     
    float w, h;
     
     
    void reshape (int nw, int nh)
    {
    	w = nw;
    	h = nh;
    }
     
     
    //
     
     
    ///////////////////////////
    void DrawPoints (void)
    {
     
     
    	glPointSize(5.0);
     
    	//traçage des points que je recupere de mon fichier text: x,y,z
     
       glBegin(GL_POINTS);
    	for( int i = 0 ; i < S.Numb_point3D ; i++ )
     
    		glVertex3f(S.x[i][0], S.y[i][1], S.z[i][2]); //affichage de x,y,z
     
    		glEnd();
     
     
    }
     
    void display (void)
    {
     
    	glViewport (0, 0, w, h);
    	glClear (GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
     
    	DrawPoints ();
    	glutSwapBuffers ();
    }
    //////////////////////////
     
    int main(int argc, char **argv)
    {
    	S=Read_file("test.txt");
     
    	glutInitWindowSize (600, 400);
    	glutInitWindowPosition (400, 300);
    	glutInitDisplayMode (GLUT_DEPTH | GLUT_DOUBLE | GLUT_RGB);
    	glutCreateWindow ("3D points");
    	glutDisplayFunc (display);
    	glutIdleFunc (display);
    	glutReshapeFunc (reshape);
    	glutSpecialFunc (Turn);
     
    	glClearColor (0.1, 0.2, 0.1, 1.0);
    	glEnable (GL_DEPTH_TEST);
    	glMatrixMode (GL_PROJECTION);
    	gluPerspective (40.0, 1.5, 1.0, 10.0);
    	glMatrixMode (GL_MODELVIEW);
     
    	glutMainLoop ();
     
     
     
     
    	return 0;
    }
    J'ai verifié la lecture des points x,y,z et il n'y a pas de probleme... merci de votre aide

  2. #2
    Membre éclairé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2010
    Messages
    517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Santé

    Informations forums :
    Inscription : Avril 2010
    Messages : 517
    Par défaut
    Salut,
    Je pense que tu n'es pas dans la bonne section.

    Sinon pour ton problème as-tu changé les valeurs de ton gluPerspective (surtout celle du near et far clip - les deux dernières - )?
    Parce que d'après les points que tu as en source, la coordonnées Z est à plus de 100 or tu n'affiches que jusqu'à 10. Idem pour les deux autres coordonnées.

  3. #3
    Membre confirmé Avatar de highlight
    Homme Profil pro
    Développeur multimédia
    Inscrit en
    Novembre 2008
    Messages
    139
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur multimédia

    Informations forums :
    Inscription : Novembre 2008
    Messages : 139
    Par défaut
    Merci bcp pour ta réponse... t as raison j'ai pas vu cela merci pour cette remarque.. par contre comment trouvé le bon rapport pour les parametre de glPerspective? je sais pas vraiement comment faire...

    Effectivement, le Z de mes valeurs depasse 100, pour X et Y il y a meme des valeurs negative.

  4. #4
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    27 157
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 27 157
    Billets dans le blog
    151
    Par défaut
    Bonjour,

    Je crois qu'il manque un gluLookAt() afin de définir la matrice de vue, pour visualiser les points dans le cone de projet (définit par glPerspective()).
    (Si vous n'avez pas compris, il faut juste rajouter un gluLookAt() entre le glClear et le draw())
    Vous souhaitez participer à la rubrique 2D/3D/Jeux ? Contactez-moi

    Ma page sur DVP
    Mon Portfolio

    Qui connaît l'erreur, connaît la solution.

  5. #5
    Membre émérite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mars 2011
    Messages
    618
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2011
    Messages : 618
    Par défaut
    comment trouvé le bon rapport pour les parametre de glPerspective?
    Au début tu peux te contenter d'un near clip très petit (genre 0.001, mais jamais 0.0 !), et un farclip très grand (100000). Tu risque d'avoir quelques bug appelés ZFighting, mais au moins tu ne clipera pas ta géométrie.

    Pour avoir des valeurs plus corrects (et limiter le ZFighting), le near correspond à la distance entre la camera et l'objet le plus proche d'elle, et le far la distance avec l'objet le plus loin d'elle.

    Pour le fovy, une valeur entre 45 et 90° (généralement 60). Moins de 40 et tu aura un effet "jumelle", plus de 90 tu aura un effet "fisheye" (donc pas très naturelle pour nous autre humains).

    Pour le ratio, prend le ratio de ton viewport (cela evitera les déformations). 600/400 dans ton cas.

  6. #6
    Membre confirmé Avatar de highlight
    Homme Profil pro
    Développeur multimédia
    Inscrit en
    Novembre 2008
    Messages
    139
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur multimédia

    Informations forums :
    Inscription : Novembre 2008
    Messages : 139
    Par défaut
    Bonjour merci pour ta réponse pyros. Effectivement j'ai changé les paramètres de gluPerspective comme tu me les as expliqué. Par contre j'ai un résultat encore bizarre, j'ai la forme 3D qui s'affiche et qui s’éloigne jusqu'à ce qu'elle devienne très petite de plus en plus, je comprends pas la cause de ce comportement. Puisque c'est la première fois que je manipule openGL, j'ai pas mal de problème avec les fonctions..

    Citation Envoyé par pyros Voir le message
    Au début tu peux te contenter d'un near clip très petit (genre 0.001, mais jamais 0.0 !), et un farclip très grand (100000). Tu risque d'avoir quelques bug appelés ZFighting, mais au moins tu ne clipera pas ta géométrie.

    Pour avoir des valeurs plus corrects (et limiter le ZFighting), le near correspond à la distance entre la camera et l'objet le plus proche d'elle, et le far la distance avec l'objet le plus loin d'elle.

    Pour le fovy, une valeur entre 45 et 90° (généralement 60). Moins de 40 et tu aura un effet "jumelle", plus de 90 tu aura un effet "fisheye" (donc pas très naturelle pour nous autre humains).

    Pour le ratio, prend le ratio de ton viewport (cela evitera les déformations). 600/400 dans ton cas.

Discussions similaires

  1. Réponses: 0
    Dernier message: 26/05/2008, 16h41
  2. Problème d'affichage avec une liste à puces
    Par Maxence45 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 09/07/2007, 21h09
  3. Problème d'affichage d'une liste déroulante sous IE
    Par devdebutante dans le forum Balisage (X)HTML et validation W3C
    Réponses: 11
    Dernier message: 09/07/2007, 15h29
  4. [MySQL] problème d'affichage dans une liste
    Par bromlecornu dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 23/05/2007, 16h08
  5. Problème d'affichage d'une liste déroulante
    Par licorne dans le forum Balisage (X)HTML et validation W3C
    Réponses: 8
    Dernier message: 05/09/2006, 13h07

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