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 loader ASE


Sujet :

OpenGL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Rédacteur
    Avatar de Bakura
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2005
    Messages
    1 386
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 386
    Par défaut Problème loader ASE
    Bonjour !

    Voilà je suis en train de faire un loader ASE, pour l'instant les tests sont plutôt concluants, mais je m'heurte à un problème super bizarre. Tout d'abord j'ai bien fait comme écrit dans le topic sur le sujet des normales, c'est à dire que mes vertices et mes normales y deviennent z et mes normales z deviennent -y.

    Pour l'instant je ne charges que les vertices et les normales (je m'attaquerai aux textures quand tout marchera bien). Voilà le problème : sur un modèle assez complexe, le problème ne se voit pas, toutefois sur un modèle simple, un cube, il y a UNE face, et seulement une seule, qui a des comportements étranges, comme si la normale était mal spécifié, alors que j'ai regarder plusieurs fois, j'ia pris plusieurs modèles de cube, et à chaque fois le même problème ! Pour l'instant j'affiche mes objets avec les appels à glBegin/glEnd, mais je les mettrait en VBO dès que ça marchera bien.

    Parceque c'est assez dur à expliquer, je vous donne le zip contenant l'exe et les fichiers.

    http://membres.lycos.fr/hl2connection/ase.zip (clique droit enregistret sous)

    C'est le vrai bazarre dans le zip, parceque ce projet me sert aussi de test pour le moteur physique Newton, donc désolé ^^. Le seul truc intéressant ici c'est les fichiers objloader.h, objloader.cpp et main.cpp.

    Lancez le exe et regardez les faces supérieures, à un moment donné vous verrez un éclairage bizarre sur l'une des faces. Suivez cette face, et à chaque fois c'est que cette face qui a un éclairage bizarre ! C'est vraiment à n'y rien comprendre :/, puisque je les charge toutes de la même façon.

    Encore plus étrange, si je remplace :

    glColorMaterial (GL_FRONT_AND_BACK, GL_AMBIENT_AND_DIFFUSE);
    glColor3f (0.75, 0.75, 0.75);
    glColorMaterial (GL_FRONT_AND_BACK, GL_SPECULAR);
    glColor3f (1.0f, 1.0f, 1.0f);
    glColorMaterial (GL_FRONT_AND_BACK, GL_EMISSION);
    glColor3f (0.0f, 0.0f, 0.0f);
    glMaterialf (GL_FRONT, GL_SHININESS, 100);

    par ça :

    glColorMaterial (GL_FRONT_AND_BACK, GL_AMBIENT_AND_DIFFUSE);
    glColor3f (0.75, 0.75, 0.75);
    glColorMaterial (GL_FRONT_AND_BACK, GL_EMISSION);
    glColor3f (0.0f, 0.0f, 0.0f);

    j'ai plus de problème . Bref si quelqu'un pourrait analyser le code, je pige rien, j'ai écrit tout ce que fait exactement la fonction dessiner dans un fichier, tout correspond bien avec le fichier d'origine et tout, je pige rien :/.

  2. #2
    Membre expérimenté Avatar de Sixissor
    Étudiant
    Inscrit en
    Février 2006
    Messages
    206
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2006
    Messages : 206
    Par défaut
    Salut, ça faisait longtemps

    T'as bien vérifié tes compteurs ? Genre tu t'arrêtes à i alors qu'il faut s'arrêter à i+1 par exemple ? Est-ce que tu as un déboggueur ? Vérifie l'état de tes variables.

    Si ça ne fait ça que pour UNE face, je ne vois pas de problèmes OpenGL. Je me pencherai plutôt vers un problème d'algo.

    Au pire, compare ton loader avec d'autres déjà fait pour pouvoir "cerner" ton erreur...

    PS: tout ça n'est que pur supposition vu que ton ZIP m'apparait comme un fichier endommagé ou corrompu

    ++

  3. #3
    Rédacteur
    Avatar de Bakura
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2005
    Messages
    1 386
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 386
    Par défaut
    Non, c'est bon ça marche maintenant ! J'ai écrit un simple petit cube avec glBegin et glEnd, à la main en spécifiant toutes les vertices à la main, et j'obtient le même résultat, donc ya pas de problème. Et puis là avec des modèles plus complexes, ya pas de problème. J'ai ajouté les textures, voilà le résultat que j'obtient :

    http://membres.lycos.fr/hl2connection/eclairage.avi

    Ca m'a l'air correct ^^ Après je pense que pour plus précis faudra un éclairage par pixel comme ceux montré sur le site !

    EDIT : oops j'ai oublié d'appliquer les matérieux sur la vidéo ^^... Bon ça donne un peu près le même résultat, en plus éclatant.

  4. #4
    Membre confirmé
    Homme Profil pro
    Développeur de jeux vidéo
    Inscrit en
    Mai 2003
    Messages
    72
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur de jeux vidéo

    Informations forums :
    Inscription : Mai 2003
    Messages : 72
    Par défaut
    À cause de 3ds, dans mon loader je charge pas les normales puisque je trouve que c'est chiant d'ajuster les normales selon le plan dans lequel l'objet à été dessiner dans 3ds, je les calcules moi même pour les avoir correctement et ca fonctionne bien depuis que je fait ca.

    J'ai remarquer que si tu ne veut pas avoir à interchanger les valeurs y et z etc... pour les vertex et normal, il suffit de dessiner l'objet dans 3ds dans le même plan que tu vas les affichers dans opengl puis ca affiche dans le bon sens.

    Pour moi le Y monte vers le haut dans opengl et j'ai dessiner mon objet dans 3ds avec le y qui pointe vers le haut. Comme c'est souvent le cas pour la plupart. Mais cela n'avais pas réglé mon problème avec les normales...j'avais une grosse partie de l'objet qui affichais bien mais j'avais toujours quelque face qui n'affichais pas bien alors j'ai décidé de les calculés moi-même et hop ca marcher du premier coups...toute mes faces affiche très bien.

    Si tu essais de calculer tes normales au lieu de les chargé et que ca affiche bien, j'en resterais là.

    De toute facon tant qu'à les prendres du fichier ou les calculer une fois dans le chargeur, ca revient au même sauf que tu es certain qu'il seront toujours correct pour n'importe quel objet peu importe l'inversion des coordonées qu'on est obliger de faire pour 3ds lorsqu'on est pas dans le même plan.

    DestinyWar

Discussions similaires

  1. Problème loader Galerie UIloader
    Par rauw69 dans le forum Flash
    Réponses: 0
    Dernier message: 09/01/2011, 00h28
  2. [ASE][12.5.0.3] problème d'installation
    Par sapars dans le forum Sybase
    Réponses: 13
    Dernier message: 14/10/2005, 08h54
  3. [FLASH MX 2004] Problème avec loader
    Par Sorento dans le forum Flash
    Réponses: 3
    Dernier message: 06/07/2005, 20h21
  4. [Sybase] Problème de type sous ASE
    Par Hotchotte dans le forum Sybase
    Réponses: 1
    Dernier message: 18/12/2004, 11h04
  5. Réponses: 4
    Dernier message: 10/06/2004, 18h05

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