Partage
  • Partager sur Facebook
  • Partager sur Twitter

[OpenGL] Pourquoi Z et pas Y...

Sujet résolu
    13 juillet 2006 à 22:43:16

    Je me pose une grande question existentielle qui m'empeche de dormir la nuit et j'ai bon espoir que quelqu'un pourra me délivrer de ce tourment... :lol:

    Pourquoi... POURQUOI a-t-on décidé d'utiliser Z comme coordonnée verticale et Y comme coordonnée pour la profondeur ! :'(

    Tout est bien clair dans le tuto de Kayl... on peut assimiler la 3eme dimension comme l'ajout de la profondeur ou de la hauteur... et de nombreux jeux ont été développés de cette manière ! Mais... pourquoi !!! Pourquoi ont-ils fait cela ? Pourquoi se compliquer la vie à utiliser Z pour la verticale alors que depuis l'enfance, on est habitués à voir des graphes avec X comme abscisse et Y comme ordonnée et que du coup, l'image qui nous (me) vient en tête directement, c'est que Z représente la profondeur...

    Oui ! Z était, selon moi, la lettre adéquate pour représenter la 3eme dimension, cad la profondeur. Or, avec cette inversion du Y et du Z, je suis constamment perdu quand je regarde les coordonnées d'un point et je me mélange les pinceaux. C'est vrai que c'est pas la mer à boire d'inverser deux lettres et que ca change pas grand chose... oui, j'en suis bien conscient... mais perso, je passe + de temps à analyser les coordonnées pour me dire "ok, je dois mettre autant sur Y et autant sur Z si je veux me déplacer là et surtout pas le contraire" ...

    Et du coup, avec ce nouveau tuto sur le controle avancé de la caméra où il y a des notions bien plus complexes que précédemment, je vous raconte pas la galère... entre mon cerveau qui travaille pour comprendre le "comment ca marche" et qui travaille pour distinguer le Y du Z... :lol:
    • Partager sur Facebook
    • Partager sur Twitter
      13 juillet 2006 à 23:13:10

      Citation

      Oui ! Z était, selon moi, la lettre adéquate pour représenter la 3eme dimension, cad la profondeur


      Et c'est exactement ce qui est dit dans le tuto OpenGl. :)

      Citation

      Pourquoi se compliquer la vie à utiliser Z pour la verticale alors que depuis l'enfance, on est habitués à voir des graphes avec X comme abscisse et Y comme ordonnée


      Tu te trompes de verticale : on ne parle pas de l'ordonnée qui est verticale à l'abscisse, mais de la verticale au plan formé par les vecteurs X et Y.

      En espérant ne pas avoir dit de bêtises ! :-°

      • Partager sur Facebook
      • Partager sur Twitter
        14 juillet 2006 à 2:39:51

        Ne jouons pas sur les mots ! :)

        Je veux simplement dire qu'en 2D, on définit souvent X pour les coordonnées horizontales et Y pour les coordonnées verticales à l'écran... alors, pour un passage à la 3D, je trouve que la lettre Z est tout ce qu'il y a de plus approprié pour symboliser cette 3ème dimension qu'est la profondeur.

        Or, ici, ce n'est pas cela qu'on fait... on garde X pour les coordonnées horizontales, Y ne représente plus les coordonnées verticales mais bien les coordonnées de profondeur et c'est Z qui hérite des coordonnées verticales !

        Moi, je m'y perd... lol ^^ ! Je sais que c'est loin d'être compliqué. Je sais que d'ici 2 semaines, je n'y penserais presque plus et je sais que d'ici un mois, quand on me dira Z, je répondrais Zorr... oups, verticale... mais n'empeche, je me demande tjrs pourquoi ils ont décidé d'attribuer les lettres de cette façon ! Je trouve que c'est tordu... ca ressemble à du Shadok pour moi: pourquoi faire simple quand on peut faire compliqué !

        Je suis persuadé qu'à l'école, nous avons tous vu et revu des "X" et des "Y" pendant très longtemps avant que notre prof de math ne nous présente pour la première fois la coordonnée Z et tous les jolis calculs et les belles formules qui allaient en découler... et, en ce qui me concerne, c'est cette très vieille habitude d'interpréter le Z comme la profondeur qui me fait perdre un temps bête lorsque je dois écrire une simple coordonnée pour OpenGL... ou lorsque je dois réfléchir au déplacement que ma caméra va devoir faire... ^^

        D'où ma question... pourquoi ont-ils décidés que la verticale serait le Z ? :euh:

        PS: ... d'ailleurs, on dit bien un Z-Buffer et pas un Y-Buffer, non ? Alors, pourquoi se compliquer la vie à utiliser le Z pour la verticale d'une scène 3D alors qu'on l'utilise pour le tampon qui sert à gérer la profondeur des pixels affichés à l'écran.
        • Partager sur Facebook
        • Partager sur Twitter
          14 juillet 2006 à 8:51:34

          On ne se complique pas là vie. Le coup de "Y est le profondeur" montre que tu n'as pas encore bien compris la différence entre le monde 3D et sa représentation à l'écran.
          Dans l'absolu ta caméra est positionnable n'importe où, la seule chose à choisir est une verticale. Les 2 axes restants forment le plan horizontal mais il n'y en a pas un "qui part vers la droite", et l'autre "qui fait la profondeur". Tout est relatif.

          Oui on parle de Zbuffer car au final ta scene 3D est rendue sur un écran 2D où les 2 seules coordonnées restantes sont X et Y.
          Encore une fois si tu arrives à faire abstraction de ce que tu vois sur l'écran et à t'imaginer être un esprit volant dans ta scène tu n'auras que faire du choix qui a été fait.

          Beaucoup de jeux ont pris la convention Z = verticale (j'ai cité half-life et farcry dans mon tuto il me semble) et ça sera plus simple d'utiliser leurs models 3D.
          Certaines fois on voit dans certains logiciel (genre DeleD) que c'est Y la verticale. Et là c'est le piège. Souvent voir un Y verticale cache quelque chose : un repère left handed. C'est à dire qu'il n'est plus direct au sens où on l'entend. (et OpenGL aussi).
          Une dernière chose : les quadriques, genre pour faire un cylindre (tonneau... vertical ? ) utilisent l'axe Z comme axe principal.
          L'axe Z est donc loin d'être un mauvais choix.
          On continue ? Les maths justement (tu évoques les profs). Allons faire un tour sur wikipedia et regardons cette page : http://fr.wikipedia.org/wiki/Coordonn%C3%A9es_sph%C3%A9riques
          Oui une fois encore quand c'est en 2D c'est y qui joue le role de la verticale. La derniere dimension joue le role de la verticale, la seule autre défini l'horizontale.
          Mais dès qu'on passe en 3D, un seul axe ne suffit pas à définir l'horizontal, il faut un plan. Donc on fait pareil : la derniere coordonnée (Z) sert à définir la verticale et les 2 premieres donnent le plan horizontal. Ce n'est pas loufoque.

          Si tu choisis un axe exotique comme verticale, après tout rien ne t'en empêche. A toi de bien concevoir tes scenes en conséquences et d'en baver à chaque importation de model réalisé à l'exterieur :)
          • Partager sur Facebook
          • Partager sur Twitter
            16 juillet 2006 à 1:55:36

            Citation : Kayl

            Oui une fois encore quand c'est en 2D c'est y qui joue le role de la verticale. La derniere dimension joue le role de la verticale, la seule autre défini l'horizontale.
            Mais dès qu'on passe en 3D, un seul axe ne suffit pas à définir l'horizontal, il faut un plan. Donc on fait pareil : la derniere coordonnée (Z) sert à définir la verticale et les 2 premieres donnent le plan horizontal. Ce n'est pas loufoque.


            Cette partie de ton post m'a fait tilter !

            Merci :)

            • Partager sur Facebook
            • Partager sur Twitter
              16 juillet 2006 à 18:50:17

              D'autant plus que dans un "first-person shooter", les deux coordonnées les plus utilisées sont ceux à l'horizontal (déplacement gauche/droite et plus profond/moins profond , puisque normalement le personnage ne vole pas), d'où l'idée de mettre X et Y pour ceux là.
              • Partager sur Facebook
              • Partager sur Twitter

              [OpenGL] Pourquoi Z et pas Y...

              × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
              × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
              • Editeur
              • Markdown