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 :

OpenGL et astronomie


Sujet :

OpenGL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Juin 2007
    Messages
    15
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Juin 2007
    Messages : 15
    Par défaut OpenGL et astronomie
    Bonjour à tous,

    J'ai un problème depuis plusieurs jours: je n'arrive pas à rendre le système Soleil-Terre-Lune.
    Dans mon code, ce que je fais jusqu'à présent est de définir leur position et leur rayon à l'échelle (dans un système d'unité tel que le rayon du soleil vaut 1). Mais seule la Lune apparait quand je place la camera avec une distance au centre de l'objet égale au double de son rayon (ce qu'il faut pour qu'elle soit dans le champ de vision de la camera, quoi). Les autres n'apparaissent pas , sauf quand je leur met un rayon égal à celui de la Lune (qui vaut 0.0024...)

    Pour info, la perspective de ma camera est définie ainsi:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    gluPerspective(70,(double)LARGEUR_ECRAN/HAUTEUR_ECRAN,4e-6,1000.);
    Donc j'en viens à me demander si les échelles en jeu ne sont pas trop disproportionnées, et si oui, que faire.

    Merci d'avance!

    ydethe

  2. #2
    Expert confirmé

    Profil pro
    Fabricant et casseur d'avions
    Inscrit en
    Avril 2004
    Messages
    3 819
    Détails du profil
    Informations personnelles :
    Localisation : France, Tarn (Midi Pyrénées)

    Informations professionnelles :
    Activité : Fabricant et casseur d'avions
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2004
    Messages : 3 819
    Par défaut
    Salut,

    Je n'ai pas tout compris...

    Citation Envoyé par ydethe Voir le message
    Mais seule la Lune apparait quand je place la camera avec une distance au centre de l'objet égale au double de son rayon (ce qu'il faut pour qu'elle soit dans le champ de vision de la camera, quoi). Les autres n'apparaissent pas , sauf quand je leur met un rayon égal à celui de la Lune (qui vaut 0.0024...)
    Euh... les autres planètes n'apparaissent pas quand tu vises la lune? ou quand tu vises leur centre à elles?
    Tu es sûr de bien placer ta caméra? parce que si tu restes à deux rayons lunaires du centre de la terre, tu ne vas rien voir... à part l'intérieur...


    Citation Envoyé par ydethe Voir le message
    Donc j'en viens à me demander si les échelles en jeu ne sont pas trop disproportionnées, et si oui, que faire.
    Déjà, commencer par montrer comment tu dessines tes planètes... avec juste la perpective, on ne peut pas dire ce qui cloche...
    "Errare humanum est, sed perseverare diabolicum"

    Ma page sur DVP.com

  3. #3
    Membre averti
    Inscrit en
    Juin 2007
    Messages
    15
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Juin 2007
    Messages : 15
    Par défaut
    Merci pour la réponse!
    Je vais tâcher d'être plus précis.
    La Lune est la seule "planète" qui marche. Pour chaque planète, je vise son centre, en me placant à une distance de 2 fois son rayon.
    Le code est ici
    (C'est bien sûr la méthode afficher qui pêche). J'ai l'impression que le rapport zFar/zNear ne peut pas dépasser une certaine valeur...

    Merci d'avance

  4. #4
    Expert confirmé

    Profil pro
    Fabricant et casseur d'avions
    Inscrit en
    Avril 2004
    Messages
    3 819
    Détails du profil
    Informations personnelles :
    Localisation : France, Tarn (Midi Pyrénées)

    Informations professionnelles :
    Activité : Fabricant et casseur d'avions
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2004
    Messages : 3 819
    Par défaut
    Citation Envoyé par ydethe Voir le message
    Le code est ici
    Désolé, mais ça ne suffit pas. Même si il s'agit de ta classe Planete, on ne sait rien de comment tu affiches ton système, comment tu places la caméra, ni des valeurs utilisées...


    Citation Envoyé par ydethe Voir le message
    (C'est bien sûr la méthode afficher qui pêche). J'ai l'impression que le rapport zFar/zNear ne peut pas dépasser une certaine valeur...
    Dans ce cas modifie le... tu as un rayon de 0.0024 pour la lune, tu te places à 2 rayons, ça va te faire une plage utile entre z=0.002 et z=0.008 à peu près pour tout afficher. Pas besoin de taper entre 4e-6 et 1000...
    "Errare humanum est, sed perseverare diabolicum"

    Ma page sur DVP.com

  5. #5
    Membre averti
    Inscrit en
    Juin 2007
    Messages
    15
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Juin 2007
    Messages : 15
    Par défaut
    Mon problème c'est que j'aimerais que mon moteur soit assez polyvalent pour qu'il m'affiche une planète à l'autre bout du système solaire et qu'il me permette de me "poser" sur l'une d'elle (d'où le 4e-6, qui correspond quand même à une distance de 4,784km.. (si je veux un zNear de 1m dans mon système d'unités, celà représente plutôt 1e-9, et là plus rien ne marche)

    En fait l'idéal serait zNear = 1e-9 et zFar = 17000, soit un rapport de 1.18e13 entre les deux...

    Comment concilier les deux? code complet ici

    EDIT: Merci encore pour vos réponses!

  6. #6
    Expert confirmé

    Profil pro
    Fabricant et casseur d'avions
    Inscrit en
    Avril 2004
    Messages
    3 819
    Détails du profil
    Informations personnelles :
    Localisation : France, Tarn (Midi Pyrénées)

    Informations professionnelles :
    Activité : Fabricant et casseur d'avions
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2004
    Messages : 3 819
    Par défaut
    Citation Envoyé par ydethe Voir le message
    Mon problème c'est que j'aimerais que mon moteur soit assez polyvalent pour qu'il m'affiche une planète à l'autre bout du système solaire et qu'il me permette de me "poser" sur l'une d'elle
    mauvaise idée à mon avis. Il vaut mieux le faire polyvalent dans le sens où il va s'adapter à ta scène, et non pas mettre des paramètres hyper grands pour pouvoir tout passer.

    Citation Envoyé par ydethe Voir le message
    En fait l'idéal serait zNear = 1e-9 et zFar = 17000, soit un rapport de 1.18e13 entre les deux...
    Un zbuffer en 32 bits, ça donne un rapport en 4e9... tu vas avoir un problème de précision...
    De manière générale, il faut éviter les valeurs de znear trop proches de 0. Et 4e-6, c'est proche de 0.

    [QUOTE=ydethe;4350770]
    Comment concilier les deux? code complet ici

    Bon, vu que je ne développe pas en C++, je ne peux pas le compiler pour voir ce que ça donne...

    Mais essaye déjà de jouer sur le znear pour voir si ça résout ton problème. Met-le au mini à un demi-rayon de planète (et le zfar à 4 rayons par exemple), et vois si ça l'affiche ou pas.
    "Errare humanum est, sed perseverare diabolicum"

    Ma page sur DVP.com

Discussions similaires

  1. Directx ou opengl
    Par scorpiwolf dans le forum DirectX
    Réponses: 13
    Dernier message: 07/02/2003, 08h29
  2. interface utilisateur avec OpenGL
    Par demis20 dans le forum OpenGL
    Réponses: 6
    Dernier message: 03/10/2002, 12h27
  3. OpenGL et *.3ds
    Par tintin22 dans le forum OpenGL
    Réponses: 4
    Dernier message: 06/05/2002, 13h51
  4. OpenGL ou DirectX
    Par Nadir dans le forum DirectX
    Réponses: 6
    Dernier message: 02/05/2002, 12h48
  5. Opengl -- Les surfaces
    Par Anonymous dans le forum OpenGL
    Réponses: 2
    Dernier message: 02/05/2002, 10h14

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