J'ai travaillé avec Maya pour l'animation et pour des projets plus orientés sur le film, mais je me concentre également sur mes études sur le développement de jeux vidéo. Quoi qu'il en soit, je parlais avec l'un de mes professeurs et nous ne pouvions pas comprendre pourquoi tous les moteurs de jeu (que je connais) se convertissent en triangles.
Quelqu'un at-il eu l'occasion de savoir pourquoi les moteurs de jeu se convertissent en triangles par rapport aux modèles à quatre polygones? Aussi, quels sont les avantages et les inconvénients (le cas échéant) de le faire?
graphics-programming
Subvention
la source
la source
Réponses:
La ligne du bas est la triangulation triangulaire, qui permet aux ordinateurs de restituer des objets à l'écran. Bien que d'autres le disent plus souvent que moi:
L'accent est à moi. Source: http://www.devmaster.net/articles/software-rendering/part3.php
la source
Les triangles ont de nombreuses propriétés qui les rendent plus faciles, et donc plus rapides, à dessiner.
Quatre points ou plus peuvent ne pas être sur le même plan, mais trois points le sont toujours (en ignorant les cas dégénérés). Cela a la propriété intéressante que les valeurs scalaires varient linéairement sur la surface du triangle. Même lorsque le triangle est projeté à l'écran, les valeurs scalaires varient toujours linéairement par rapport à x '/ z et y' / z.
Ceci, à son tour, signifie que la plupart sinon la totalité des éléments nécessaires à l'ombrage, à la texture et au filtrage en profondeur d'un triangle peuvent être calculés à l'aide d'une interpolation linéaire extrêmement rapide dans du matériel spécialisé.
tl; dr: les triangles sont les primitives les plus simples, de sorte que les algorithmes utilisant des triangles peuvent être fortement optimisés.
la source
Trois points (un triangle) définissent TOUJOURS un plan plat. En d'autres termes, pour trois points quelconques, vous pouvez toujours créer un plan plat capable de couper ces trois points. Cependant, la même chose n'est pas toujours vraie de quatre points. Vous pouvez avoir quatre points dans un avion, mais vous pouvez également avoir quatre points qui ne sont pas dans un avion.
la source
Ce ne sont pas les "moteurs de jeu" qui font cela - tous les logiciels 3D que vous utilisez le font. Cela ne vous en dit pas rien, et votre professeur semble sous-qualifié s'il ne le sait pas. Ils existent dans la mémoire de l'ordinateur même si le logiciel vous les cache. Tous les programmes 3D ont une option qui rend les triangles visibles. Ils auront également une option qui les divise en bords modifiables, de sorte que vous pouvez jouer avec eux. Mais ils ont toujours été présents au début et il est naïf de la part de votre professeur d’enseigner ce sujet et de se demander encore "à quoi servent les triangles".
Un triangle est le seul moyen de disposer des verts et de garantir une surface plane. Lorsque vous avez un quad, vous pouvez arranger les verts de manière à ce qu’ils soient pliés. Mais il est déjà composé de triangles et ce sont ces triangles qui permettent le pliage.
la source
Un triangle est la primitive la plus simple pouvant être décrite isolément car elle comporte trois points, moins que ceux qui ne décrivent pas une surface en 3D.
Puisqu'un triangle peut être considéré isolément, il est possible de créer un morceau de code ou de silicium capable de ne restituer qu'un seul triangle, ce qui, via le pouvoir de la répétition, peut rendre n'importe quelle surface.
Par conséquent, le premier système informatique qui a réussi à rendre "n'importe quelle surface" l'a fait naturellement en rendant plusieurs triangles de manière indépendante.
Si l'on considère les triangles et les quadruples comme des "primitives" (c.-à-d. Des bits de géométrie complètement isolés sans contexte), le triangle est le plus primitif et il aura donc tendance à "gagner".
Cependant, une fois que les ordinateurs destinés au divertissement ont dépassé un certain niveau de sophistication dans les années 1980, la simplicité de considérer les "primitives" isolément est devenue moins importante. Si les graphiques doivent être produits en série, les économies d’échelle favorisent le traitement de groupes de sommets associés, tout comme ils préfèrent assembler une centaine de voitures à la fois identiques.
C'est pourquoi, dans les années 1980, les films ont adopté le "quad", qui est un terme impropre, car il fait référence à une grille 2D de sommets dans un espace 3D et non à un quadrilatère isolé.
Le même passage des triangles aux "quads" n’a pas encore eu lieu dans le domaine du divertissement interactif, mais il est probable que cela se produira bientôt, et pour les mêmes raisons que dans le secteur cinématographique.
la source
Il n’ya qu’une façon de trianguler un triangle contre «n-2» pour un polygone à n côtés. Ainsi, les triangles sont finalement le moyen le moins ambigu pour définir une forme polyhédrique. En outre, comme d’autres affiches l’ont indiqué, il existe de nombreuses façons d’accélérer la rastérisation triangle (plutôt que quad ou supérieure) (la constante z est l’un de mes favoris). En outre, il est plus facile d'optimiser les tests d'intersection rayons-triangle que pour les tests d'intersection de rayons arbitraires. En fait, de nombreuses opérations sur des polygones à n côtés tirent avantage d’une représentation triangulée. Cela ne veut pas dire que les représentations de polygones à n côtés sont «mauvaises» - elles sont très utiles, mais au final, vous allez vouloir utiliser des triangles pour de nombreuses opérations de maillage.
la source
Tant que le triangle est défini par trois sommets non colinéaires (lire: aucun des angles n'est exactement Pi), les sommets définissent un plan unique.
Un quad est bien sûr défini par quatre sommets. Il est parfaitement possible que ces sommets soient non coplanaires. Dans ce cas, votre quad serait vraiment deux triangles divisés par une diagonale sur le quad. C'est deux plans, deux jeux de normales de surface, etc.
Tous les outils de modélisation disponibles, tous les algorithmes de texturation, d’éclairage, etc. supposent tous qu’un modèle est constitué de segments plans et que toutes les formules dont nous disposons (les produits croisés pour le calcul normal sont les premiers que nous ayons) utilisent le jeu de données d'entrée minimum absolu - trois. les sommets définissent un plan, et ce plan est ce dont nous avons besoin pour faire tout ce qui est sophistiqué.
Vous pourriez certainement écrire un moteur pour travailler avec des quads, mais vous vous retrouveriez dans tous les cas à ignorer le quatrième sommet, sauf lorsque vous devez (fréquemment) vous assurer qu'il est coplanaire avec les trois autres qui définissent le quad. Et, la solution la plus logique au cas où ce n’est pas coplanaire serait de scinder le quad en deux triangles. Alors, pourquoi ne pas simplement faire cela pour commencer?
Quel serait l'intérêt de travailler avec des quads?
Si vous voulez un quad, mettez deux triangles ensemble.
la source
Si nous supposons qu'obtenir 4 points pour être coplanaires n'est pas un problème (comme les autres l'ont souligné, mais supportez-moi), alors vous trouvez que le rendu d'un trapèze arbitraire (qui est ce à quoi ressemblera un quadrilatère lorsqu’il est transformé en espace d’écran) n’est pas très différent du rendu d’un triangle - en fait, cela fonctionne quasiment de la même manière une fois que vous effectuez un écrêtage car cela peut introduire des sommets supplémentaires. (Au moins dans un modèle de logiciel - le matériel peut avoir un moyen plus simple d’utiliser la force brute pour effectuer le découpage.)
Le problème restant est donc celui de l'efficacité de la représentation. - vous pouvez facilement représenter un quad avec 2 triangles, et sans aucun sommet supplémentaire si vous utilisez une bande de triangle (3 verts pour le 1er triangle, puis un vert supplémentaire pour le 2ème triangle). D'autre part, si vous essayez de représenter un triangle avec un quad, vous devez utiliser 4 sommets et en avoir un dégénéré identique à un autre. Ce n'est pas idéal en termes d'efficacité.
la source