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

Développement 2D, 3D et Jeux Discussion :

[3D]Triangle ou quadrangle


Sujet :

Développement 2D, 3D et Jeux

  1. #1
    Membre actif Avatar de stilobique
    Homme Profil pro
    Infographiste 3D
    Inscrit en
    Septembre 2005
    Messages
    236
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Infographiste 3D
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Septembre 2005
    Messages : 236
    Points : 277
    Points
    277
    Par défaut [3D]Triangle ou quadrangle
    Bonjour,

    Je suis cette année en formation animation et modélisation 3D ; cependant j'ai quelque question par rapport à la modélisation même !

    En fait, pour une animation les triangles sont interdit ! Je suis obligé de passer par des quadrangles, pour un un jeu en 3D ; les modélisations utilise des triangles ou des quadrangles ?

    C'est une question bête mais ou je ne sait pas trouver la réponse ! Merci de votre aide ; bonne journée.
    Environment Artist | Technical Artist | Game Art
    Porfolio Art Station

  2. #2
    Expert éminent
    Avatar de raptor70
    Inscrit en
    Septembre 2005
    Messages
    3 173
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Septembre 2005
    Messages : 3 173
    Points : 6 812
    Points
    6 812
    Par défaut
    Les deux sont généralement supporté. Cepandant, les quads on un très gros désavantage car il oblige les trois vertex à se trouver sur le même plan. Contrairement aux triangle où les vertex sont toujours sur le même plan.

    En dehors de ça ... les deux sont utilisés .. d'ailleurs, il est très facile de transformer un quads en deux triangles (meme si il y a deux tesselations possibles)
    Mes Tutos DirectX, OpenGL, 3D : http://raptor.developpez.com/

  3. #3
    Membre expérimenté

    Profil pro
    Programmeur
    Inscrit en
    Août 2002
    Messages
    1 091
    Détails du profil
    Informations personnelles :
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Programmeur

    Informations forums :
    Inscription : Août 2002
    Messages : 1 091
    Points : 1 679
    Points
    1 679
    Par défaut
    Une carte 3D ne comprend que les triangles. Tout dépend du contrôle que tu veux avoir sur la triangulation.

    LeGreg

    Mon site web | Mon blog | Mes photos | Groupe USA
    > BONJOUR, JE SUIS NOUVEAU SUR CE FORUM
    > presse la touche caps lock, stp
    > OH.. MERCI C EST BEAUCOUP PLUS FACILE COMME CA

  4. #4
    Expert confirmé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2003
    Messages
    3 549
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

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

    Informations forums :
    Inscription : Décembre 2003
    Messages : 3 549
    Points : 4 625
    Points
    4 625
    Par défaut
    Une carte 3D ne comprend que les triangles.
    Tu sors ça d'où ?
    En OpenGL, on utilise les polygones qu'on veut, non ?
    Boost ftw

  5. #5
    Membre éprouvé
    Avatar de Ange_blond
    Homme Profil pro
    Ingénieur développement en 3D temps réel
    Inscrit en
    Mars 2007
    Messages
    902
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur développement en 3D temps réel
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2007
    Messages : 902
    Points : 1 179
    Points
    1 179
    Par défaut
    Citation Envoyé par loufoque Voir le message
    Tu sors ça d'où ?
    En OpenGL, on utilise les polygones qu'on veut, non ?
    Oui, mais tout est triangle pour la CG. les polygones sont redivisés en triangles de toute maniere.
    "le langage C permet de tout faire, y compris se tirer dans le pied. Le langage C++ permet de tout faire, y compris se tirer dans le pied - et réutiliser la balle"

  6. #6
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Points : 15 920
    Points
    15 920
    Par défaut
    Tu sors ça d'où ?
    En OpenGL, on utilise les polygones qu'on veut, non ?
    Il y a une différence entre OpenGL et le GPU. D'un côté il y a une API "user-friendly", de l'autre un pipeline bien précis et optimisé. Entre les deux il y a le driver qui se débrouille pour faire communiquer les deux : en l'occurence ici, il transforme les polygones en triangles.

  7. #7
    Membre éclairé Avatar de HanLee
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    738
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Mai 2004
    Messages : 738
    Points : 871
    Points
    871
    Par défaut
    Citation Envoyé par raptor70 Voir le message
    Les deux sont généralement supporté. Cepandant, les quads on un très gros désavantage car il oblige les trois vertex à se trouver sur le même plan. Contrairement aux triangle où les vertex sont toujours sur le même plan.

    En dehors de ça ... les deux sont utilisés .. d'ailleurs, il est très facile de transformer un quads en deux triangles (meme si il y a deux tesselations possibles)
    Attention, il faut s'entendre sur ce qu'est un quad.

    Un quad ce n'est pas 2 triangles. Un quad c'est défini par 4 points, et ça ne représente généralement pas une surface plane.

    Si les 4 points ne sont pas coplanaires, selon la façon dont tu divises le quad en 2, ben ça ne représentera pas la même chose.

    Un triangle est toujours plan. La surface d'un triangle (A,B,C) s'écrit en coordonnées barycentriques, u.A + v.B + (1 - u - v).C avec u,v >= 0, et u + v <= 1.

    Un quad (A,B,C,D) donnés dans l'ordre trigonométrique, c'est représenté de cette manière :

    Pour 0 <= u,v <= 1, c'est l'ensemble des points qui s'écrivent :

    (1 - u).[(1 - v).A + v.B] + u.[(1-v).D + v.C]

    Comment comprendre cette formule ? On prend une interpolation linéaire entre A et B de coefficient v, de même pour D et C.
    On interpole les 2 résultats précédents avec u.

    Un quad, c'est symbolique pour OpenGL.
    Et donc ça une carte graphique ne comprend pas, on est obligé de trianguler tout le bazar pour l'afficher.
    OpenGL choisit la solution de facilité, seulement 2 triangles. En réalité il faudrait trianguler à une meilleure résolution pour des beaux résultats...

    -----------

    Pourquoi les quads ?
    - Il y a une notion de symétrie naturelle, ce qui facilite la modélisation
    - Des problèmes difficiles comme le paramétrage global, automatique et surtout PROPRE d'un maillage (en gros, c'est affecter les coordonnées de texture u,v à chaque sommet), le texturing, beaucoup d'algorithmes ne marchent qu'avec des quads.

  8. #8
    Membre actif Avatar de stilobique
    Homme Profil pro
    Infographiste 3D
    Inscrit en
    Septembre 2005
    Messages
    236
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Infographiste 3D
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Septembre 2005
    Messages : 236
    Points : 277
    Points
    277
    Par défaut
    Salut,

    Hum, sa m'aide pas beaucoup vos réponse, étant un noob en programamtion

    Néanmois, notre projet tournerais certainement sur Direct X via KjApi ; on réfléchie encore sur ce choix ! Le mieux sera peut être d'effectuer quelque test avec des triangles et des quadrangles alors ?
    Environment Artist | Technical Artist | Game Art
    Porfolio Art Station

  9. #9
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Points : 15 920
    Points
    15 920
    Par défaut
    De toute façon ça ne change strictement rien, si ton moteur 3D est optimisé pour traiter des quads alors il les gardera tels quels, sinon il les importera en tant que triangles.

    Dans tous les cas, et quelque soit le moteur choisi, y a pas de quoi se faire un trou au cerveau avec ça

  10. #10
    Membre actif Avatar de stilobique
    Homme Profil pro
    Infographiste 3D
    Inscrit en
    Septembre 2005
    Messages
    236
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Infographiste 3D
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Septembre 2005
    Messages : 236
    Points : 277
    Points
    277
    Par défaut
    Ok, merci Laurent ; ravi de l'apprendre !
    Environment Artist | Technical Artist | Game Art
    Porfolio Art Station

  11. #11
    Expert confirmé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2003
    Messages
    3 549
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

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

    Informations forums :
    Inscription : Décembre 2003
    Messages : 3 549
    Points : 4 625
    Points
    4 625
    Par défaut
    Rien n'oblige l'implémentation d'OpenGL de tout convertir en triangles, et généraliser sur ce que fait une implémentation n'est pas nécessairement une bonne idée.

    Un quadrilatère/quadrangle (c'est la même chose) est par définition un polygone, donc dans un plan unique.
    Un quadrilatère qui n'est pas dans un même plan ce n'est plus un quadrilatère...
    Boost ftw

  12. #12
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Points : 15 920
    Points
    15 920
    Par défaut
    Rien n'oblige l'implémentation d'OpenGL de tout convertir en triangles, et généraliser sur ce que fait une implémentation n'est pas nécessairement une bonne idée.
    De toute façon, ce qui se passe après l'API 3D (communication avec le driver et le GPU) est très particulier et presque pas documenté ; c'est uniquement le problème du fabriquant du chipset graphique. On ne peut donc rien affirmer de manière sûre, mais toujours est-il que vu l'architecture des cartes graphiques il serait vraiment étonnant que celles-ci traitent nativement des primitives plus compliquées que des triangles.

  13. #13
    Membre éclairé Avatar de HanLee
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    738
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Mai 2004
    Messages : 738
    Points : 871
    Points
    871
    Par défaut
    Citation Envoyé par loufoque Voir le message
    Rien n'oblige l'implémentation d'OpenGL de tout convertir en triangles, et généraliser sur ce que fait une implémentation n'est pas nécessairement une bonne idée.

    Un quadrilatère/quadrangle (c'est la même chose) est par définition un polygone, donc dans un plan unique.
    Un quadrilatère qui n'est pas dans un même plan ce n'est plus un quadrilatère...
    Certes, mais en infographie 3D, on considère des maillages, et les quad c'est au "sens de la théorie des graphes".

    On considère parfois et on recherche dans l'idéal à obtenir un modèle 3D qui n'est constitué que de quads.

    Or, tu te rends bien compte que dans le cas général, contraindre chaque "quad" à être plan, c'est en pratique impossible (problème surcontraint), où alors au prix d'une grosse déformation du modèle 3D.

    Mais oui je sais bien qu'un vrai quadrilatère c'est plan, et j'ai posé la question.

  14. #14
    Membre expérimenté

    Profil pro
    Programmeur
    Inscrit en
    Août 2002
    Messages
    1 091
    Détails du profil
    Informations personnelles :
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Programmeur

    Informations forums :
    Inscription : Août 2002
    Messages : 1 091
    Points : 1 679
    Points
    1 679
    Par défaut
    Il y a bien des primitives plus complexes mais ce ne sont pas les quads/polygones. Par exemple thick lines et point sprites sont plus complexes qu'un triangle, mais ils ont la garantie d'être plan (et sont traités à part).

    Pour toutes les autres "primitives à épaisseur", il faut trianguler afin d'en tirer l'équation du plan et ce afin que le matériel de rasterisation marche. Remarque : quand on dit "la carte graphique", il faut séparer le front end (qui peut accepter les quads, polygones, strips, fans) des capacités du rasteriseur.

    On est bien d'accord qu'un quad/poly c'est plus compliqué que deux triangles. D'ailleurs il n'y a jamais une façon unique de trianguler. Et dans d3d11 on risque de revoir arriver les quads dans direct3d (comme primitive de tessellation) :
    http://developer.download.nvidia.com...008-Subdiv.pdf

    LeGreg

    Mon site web | Mon blog | Mes photos | Groupe USA
    > BONJOUR, JE SUIS NOUVEAU SUR CE FORUM
    > presse la touche caps lock, stp
    > OH.. MERCI C EST BEAUCOUP PLUS FACILE COMME CA

Discussions similaires

  1. Point à l'intérieur d'un triangle ?
    Par remi77 dans le forum Algorithmes et structures de données
    Réponses: 9
    Dernier message: 15/05/2017, 15h49
  2. Point dans un triangle ou quadrangle ?
    Par sunshine33 dans le forum Algorithmes et structures de données
    Réponses: 3
    Dernier message: 13/07/2006, 15h13
  3. [ALGO] dessiner un triangle dans le bon sens
    Par lefait dans le forum Algorithmes et structures de données
    Réponses: 13
    Dernier message: 05/02/2005, 15h38
  4. [Algo] Point appartenant au triangle
    Par alexthomas dans le forum OpenGL
    Réponses: 12
    Dernier message: 05/03/2004, 17h31
  5. [3D] Triangles
    Par Frederic dans le forum Algorithmes et structures de données
    Réponses: 6
    Dernier message: 09/11/2002, 00h01

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