Utilisation de modèles Blender / SketchUp dans OpenGL
Je suis en train de faire un moteur de rendu en utilisant OpenGL. J'ai des modèles de texture dans Blender /Sketchup (je peux d'échange entre les deux facilement), et j'aimerais être en mesure d'exporter ces fichiers dans mon moteur de rendu. Mon idée de départ était simplement de l'exportation du brut visages et de rendre ces triangles, mais je tiens à trancher facilement mes fichiers de texture dans des coordonnées de texture.
Par cela, je veux dire que mon modèle visages obtenir sculpté en triangles. Vous pouvez le voir dans cette image (reproduit ci-dessous) que ma courbe devient 24 triangles. Je voudrais savoir ce que les coordonnées de texture à utiliser pour chaque triangle.
Serait un DAE fichier de la manière la plus facile de le faire? J'ai lu les spécifications pour le format et il semble assez facile. Je crois que je parse le XML et de recréer fidèlement les modèles en OpenGL. Je me demandais si il existe un moyen plus simple (c'est à dire celui qui ne cherche pas à réinventer la roue).
source d'informationauteur mkenyon
Vous devez vous connecter pour publier un commentaire.
Si vous êtes à l'aise avec l'analyse de la .dae-format, assurez-vous de l'utiliser. Toutefois, si vous êtes seulement intéressés par l'exportation de texture pour les maillages triangulaires je voudrais envisager l'utilisation de la .format obj qui est beaucoup plus simple à analyser. À partir de ce que je peux dire à la fois de Sketchup, Blender et peut exporter ce format.
Si les formats binaires ne vous font pas peur, je te suggère d'écrire un Blender & Sketchup plug-in et de l'exportation de la géométrie pré-cuit dans des paniers vertex arrays.
La belle chose à propos de cette méthode est qu'il n'y a pas d'analyse ou de conversion de type dans votre application. Tout est prêt à être envoyé pour le GPU en simple mémoire contiguë copies. Idéal pour la géométrie statique.
Une dépouillé blender exportateur ressemble à quelque chose comme ceci:
Si vous souhaitez analyser
.dae
fichiers, je vous suggère de regarder dans Collada analyseurs..dae
est en fait l'extension pour les fichiers Collada, le dernier effort de la Khronos group (responsables de l'OpenGL) d'avoir un seul format de fichier unifié pour l'échange de données 3D.Comme pour les analyseurs existants, voici ce que j'ai trouver:
Cela étant dit, si votre seul but est le chargement d'un simple morceau de géométrie avec les sommets, les normales et les coordonnées de texture, avec le
.obj
format de fichier peut être un moyen plus rapide.Tout bon format de fichier utilisé par les programmes de modélisation (comme Blender ou Sketchup) comprennent toutes les informations nécessaires pour recréer la géométrie de vous voir. Cela devrait inclure le type de géométrie (par exemple, le triangle des bandes, personne triangles, etc), les sommets et les normales pour la géométrie, les propriétés des matériaux utilisés, et aussi les textures utilisées avec les coordonnées de texture. Si quelque chose est manquant à partir d'un potentiel de format de fichier, choisissez un autre.
Si vous pensez que l'analyse de XML est simple, alors j'espère que vous prévoyez sur l'utilisation des bibliothèques existantes pour ce faire, comme les expatriés, Xerces, ou un autre langage de mise en œuvre spécifiques.
Lors de l'examen d'importation/exportation, essayez d'abord de trouver une bibliothèque open source qui peut gérer l'importation pour vous et rendre les données disponibles pour votre programme dans une forme raisonnable. Si ce n'est pas disponible, et vous devez écrire votre propre importateur, puis essayer de trouver un simple ASCII (pas basé sur XML) ou un format binaire qui correspond à vos besoins. PLIS pourrait être approprié. Seulement comme un dernier recours, je recommanderais d'essayer de mettre en œuvre un importateur pour un format basé sur XML.
Il y a aussi:
Lib3DS - http://www.lib3ds.org/
LibOBJ (ne me permet pas d'afficher le lien)
Vous devriez jeter un oeil à:
http://sketchup.google.com/community/developers.html
Le sketchup équipe, qui donne un C++ serveur COM gratuitement. En utilisant cela, vous pouvez obtenir l'accès à beaucoup d'informations sur une .skp fichier.
Vous devriez être en mesure d'utiliser ce serveur COM écrire un .skp importateur pour votre application.
Vous devriez essayer d'obtenir l' .fichier tlb si vous le pouvez. Cela vous donnera accès à des pointeurs intelligents, qui permettront de simplifier votre importateur (COM client)
J'ai utilisé la version 6 SDK (qui inclus le fichier tlb). La version actuelle du SDK ne semble pas inclure ce fichier.
Quelqu'un a posté une solution (pour l'manquant fichier tlb) sur les forums des développeurs:
http://groups.google.com/group/su-sdk-fileshare/topics