vendredi 3 février 2012

Chargeur Wavefront OBJ - Une autre mise à jour


Comme vous pouvez le voir sur la photo ci-dessus, mappage de texture UV ne fonctionne toujours pas. Je suis honnêtement un peu perplexe sur ce droit maintenant - j'ai essayé de cartographie coordonnées UV aux coordonnées ST de différentes manières, mais n'ont jamais obtenu l'UV travaillant à droite, et toute tentative de carte de l'UV à ST coordonne vis les objets qui UV ne sont pas cartographiés.

Je ne vois rien dans la spécification de fichier Wavefront qui parle en utilisant différents types de coordonnées de texture, et je ne vois aucune différence dans le fichier OBJ pour le cube UV texture que les autres objets. Cela me conduit à penser que mon erreur peut-être dans la création de l'objet, plutôt que dans mon code, même si je ne suis pas certain de ce par tout moyen.

Malheureusement, je n'ai à boucler vers le bas sur d'autres choses pour les prochains jours et la nécessité de prendre une pause de ce projet. J'ai une échéance de fin d'année approchant rapidement, suivie quelques jours plus tard par un voyage d'une semaine à San Francisco pour Macworld, donc je ne sera probablement pas faire des changements plus à ce pour au moins une semaine ou deux.

Voici la version actuelle du projet. Si quelqu'un d'autre comprend ce à quoi je fais mal en ce qui concerne mappage de texture UV, s'il vous plaît faites le moi savoir. Remarque: Il y avait un fichier manquant à partir de la première version du fichier zip. Si votre projet ne compile pas, essayez de re-télécharger le fichier zip.

Voici les choses que j'aimerais accomplir avant que j'abandonne cette classe:

  • Obtenez mappage de texture UV travailler

  • Passer en utilisant les VBOs pour des performances


Il me semble qu'il y avait au moins une chose que je voulais faire avec cette classe avant d'arrêter le travail sur elle, mais c'est m'échappe.

Il ya quelques avertissements et les pièges à l'égard de cette version:

Textures:. Png et deux fichiers pvr4 sont supportés.. Comme toujours, les fichiers. Pvr4 sont recommandés. En raison des différences dans la création d'une texture à partir d'une image compressée par rapport à une une décompressé, j'ai eu à mettre en œuvre un petit hack. Si vous utilisez un. Pvr4 fichier, vous devez inclure la résolution dans le fichier, car il n'y a pas de moyen facile de déterminer la largeur et la hauteur d'un. Pvr4 fichier que je sache. Donc, si vous avez texture.png, et vous créez une texture 512x512 compressé, vous devriez appeler la texture 512.pvr4. La classe sera automatiquement scanner pour la texture compressée en utilisant le nom du fichier de base à partir du fichier. MTL avant d'abandonner et d'essayer de charger le fichier non compressé spécifié dans le fichier. Mtl. Si vous ne vous souvenez comment créer. Pvr4 textures, vous pouvez visiter à nouveau plus tôt affichage.

Performance: Si vous exécutez ce sur un périphérique, il sera très lent, surtout si vous l'exécutez sur un Pod première génération ou iPhone Touch. J'ai été travaillant surtout dans le simulateur de vitesse, et ce soft est rien de plus qu'un banc d'essai et de démonstration tech. Vous aurez été prévenu. En général, vous voudrez probablement pour éviter de modèles aussi complexes que l'avion, surtout pour les jeux - si vous commentez le code qui charge le modèle d'avion, la performance devient beaucoup, beaucoup mieux et les temps de chargement réduit considérablement.

Coordonnées des sommets: Afin de calculer les combinaisons uniques de l'indice de vertex et de l'indice des coordonnées de texture, j'ai implémenté un arbre binaire de recherche. Ma première version utilisée classes de collection de cacao et des classes wrapper pour garder une trace des combinaisons, mais qui a été à ralentir. C'est juste un autre rappel amical que tous C est disponible pour vous, et parfois, il est logique d'utiliser les trucs niveau inférieur et passez les classes NSxxx.

Comme toujours, si vous trouvez des bugs ou des améliorations, je serais ravi de vous entendre et peut-être incorporer vos modifications dans la classe. Je n'ai pas décidé sur la licence définitive ce sera libéré sous, mais ce sera certainement non virale, probablement la licence BSD ou licence MIT. Fondamentalement, vous pouvez vous sentir libre de l'utiliser dans n'importe quel projet, personnel ou commercial, sans attribution ou de paiement. La seule chose que je demande est que vous ne réclamez pas de crédit pour la partie que j'ai écrit.

Aucun commentaire: