2017-01-11 7 views

Répondre

2

Si vous regardez un fichier OBJ, les définitions de visage ressembler à quelque chose comme ceci: indicateur

f 1//1 2//2 3//3 

Chaque ligne commençant par un f (as) définit une primitive. Dans ce cas, il y a 3 sections présentes séparées par des espaces. Chaque section définit un seul sommet. S'il y a 3 de ces sections par visage, vous savez que le visage doit être un triangle. Si c'est 4, le visage est un quad (même si ce format est relativement rare de nos jours).

Vous cherchez une définition de sommet unique:

1/1/1 

qui a la forme:

[vertex]/[texture]/[normal] 

Vous voyez ici 3 entiers séparés par slahes. Chaque entier fait référence à l'index dont la valeur respective a été définie dans le fichier OBJ. Non, cependant, que ces indices sont indexés en 1. Pour les langages indexés 0 tels que C, vous devez soustraire 1 à chaque index. Comme OpenGL ne peut rendre que des sommets vraiment uniques (c'est-à-dire, même coordonnée de sommet, coordonnée de texture et normale), générer un tampon d'index compact est délicat et implique de vérifier les sommets que vous avez vus précédemment. L'approche la plus simple consiste simplement à créer un tampon d'index qui compte à partir de 0 et à créer un sommet distinct pour chaque sommet de chaque face de votre tampon (s) de géométrie.