vendredi 3 février 2012

Chargeur Wavefront OBJ - Normales Fait ...

Normales ont été une douleur dans mon dos. Il ya un couple de choses que je ne connaissais pas avant, que je sais certainement maintenant. Par exemple, les appels à glNormalPointer () ont passer un pointeur vers des données complètement différentes selon le type d'ombrage que vous utilisez. Si vous utilisez le lissage GL_FLAT, alors vous devez passer un tableau de normales à la surface, un par triangle (vraiment, c'est par polygone, mais depuis OpenGL ES ne supporte que les triangles, il revient au même). D'autre part, si vous utilisez GL_SMOOTH, alors vous devez passer dans les normales des sommets.

Le fichier OBJ peut fournir les normales des sommets, mais il n'est pas nécessaire pour. J'ai codé à l'origine de cette sorte qu'il se lise les normales de vertex à partir du fichier si elles étaient là, mais puisque le calcul des normales de surface est plus facile à faire à partir d'un polygone alors il est de retour de la normales des sommets, j'ai décidé d'ignorer l'essentiel des normales fournies dans le fichier et juste calculée à chaque fois.

Si vous utilisez un programme 3D qui exporte les sommets avec une montre de vertex commande plutôt que par défaut dans le sens antihoraire, vous pouvez avoir à inverser les normales calculées. Il ya une fonction inline fourni pour le faire, mais je pense que la plupart des programmes devraient exporter correctement.

En ce moment, vous devez passer manuellement d'utiliser vertex normales de surface et à l'arrière en fonction de ce type d'ombrage que vous utilisez, mais ils sont tous deux calculés lors du chargement du modèle. Je vais chercher à utiliser la bonne sur la base d'ombrage.

Quoi qu'il en soit, ici vous pouvez voir une capture d'écran avec le modèle de plan en utilisant l'éclairage et l'ombrage snazzy lisse.



Donc, cela signifie que les coordonnées de texture manipulation est le seul bit majeur de la fonctionnalité qui manque. Ne sais pas quand je vais arriver à cela, même si - j'ai un tas de payer le travail que j'ai besoin d'en finir avant la fin de la semaine prochaine. De plus, je dois trouver ou faire quelques modèles qui ont des cartes de texture.

Voici le projet avec la version actuelle de la chargeuse OBJ

Aucun commentaire: