2009-02-21 10 views
32

Im écrire un moteur de jeu et je me demande quel format de modèle 3D devrais-je utiliser/charger/exporter? Obj semble universel et facile mais il semble également peu fiable dans la mesure où la plupart des modèles contiennent des erreurs et ne sont pas aussi proches que les autres formats. Il semble y avoir des formats spécifiques pour les jeux tels que MD2/3/5 mais je ne suis pas sûr, j'utilise wings3d si je modélise, et je ne sais pas quels autres détails au-delà du chargement pur ce dont j'ai besoin et le soutien du format Id doit mettre en œuvre, comme aurais-je besoin de mettre en œuvre IK? et puis-je utiliser une animation par pièce scriptée plutôt qu'une cinématique inverse et un rigging osseux?Quel format de modèle 3D devrais-je utiliser?

Répondre

22

Collada est un format basé sur XML ouvert pour les modèles 3D appartenant au groupe Khronos (OpenGL corps de normes)

De la FAQ Collada.org:

Le COLLADA 1.4.x jeu de fonctions comprend:

  • géométrie du maillage
  • hiérarchie de transformation (rotation, translation, de cisaillement, l'échelle, la matrice)
  • Effets
  • shaders (Cg, GLSL, GLES)
  • Matériaux
  • Textures
  • Lumières
  • Caméras
  • Dépeçage
  • animation
  • Physique (Les corps rigides, des contraintes, des poupées de chiffon, collision, volumes)
  • instanciation
  • Techniques
  • Multirepresentations
  • actifs
  • Données utilisateur
+15

Je n'utiliserais pas ce format pour les graphiques en temps réel. Collada est conçu comme un format intermédiaire pour les pipelines de production graphique. Utilisez-le pour convertir en un format binaire plus compact, ou vous l'attendez toute la journée pour le charger. –

+0

Considérez également que tous les outils ne prennent pas en charge l'ensemble des fonctionnalités de COLLADA. –

+0

Finalement, je suis allé avec la bibliothèque ASSIMP pour le chargement de la géométrie afin que tout le monde puisse utiliser ce qu'ils veulent tant qu'ils supportent les attributs nécessaires. –

2

J'utilise mon propre format binaire. J'ai essayé d'utiliser des formats existants mais je rencontre toujours des limites. Certains pourraient être travaillés autour, d'autres où showstoppers.

Collada peut-être vaut le coup d'oeil. Je ne pense pas que ce soit un bon format pour être lu par un moteur 3D. C'est bien comme un format général d'échange de données.

http://www.collada.org/mediawiki/index.php/Main_Page

5

Avant de se préoccuper de ce que vous voulez les formats 3D pour soutenir, je pense que vous devriez vraiment se concentrer sur les fonctionnalités que vous envisagez de mettre en œuvre dans votre moteur. Notez-les en tant qu'exigences, et choisissez le format qui supporte le plus de fonctionnalités de la liste ... comme vous voulez montrer votre moteur (je suppose que vous prévoyez que votre moteur soit disponible publiquement). Vous pourriez même vouloir rouler votre propre format, si votre moteur a des caractéristiques spécifiques (ce qui est toujours une bonne chose à avoir pour un moteur de jeu). Après cela, prenez en charge le plus grand nombre possible de formats populaires (.X, .3DS, .OBJ, .B3D) ... plus votre moteur est accessible, plus les utilisateurs voudront travailler avec! Collada est un format sympa et générique, mais comme les mentions de Nils, ce n'est pas un format idéal pour le déploiement final.

1

bien soutenir Collada, puis fournir de bons convertisseurs à/de la e d'autres formats (cela pourrait être la partie difficile). Cela vous donnera une flexibilité maximale. Jetez un oeil à C4 engine

-1

Collada est génial, mais il vit plus sur le côté de l'application 3D des choses. c'est-à-dire qu'il est mieux utilisé pour transférer des données 3D entre des applications, et non pour charger des données 3D depuis un moteur de jeu. As-tu regardé Lua? Il est largement utilisé dans les jeux car c'est un langage de script à la fois ridiculement rapide (parfait pour les jeux) et très flexible (qui peut être utilisé pour représenter toutes les données dont vous avez besoin pour votre moteur).

+5

Lua est un langage de programmation, pas un format de modèle. – Dirbaio

+0

Bien sûr :) mais Lua peut représenter des matrices, donc construire un format/analyseur de modèle 3D est quelque chose qui peut être fait – Mathew

+2

Voté - certaines personnes répondent par "Lua" à n'importe quelle question qu'ils trouvent. – BitTickler

2

+1 pour Collada. Vous pouvez également vouloir un format binaire natif personnalisé pour un chargement vraiment rapide (généralement juste un vidage binaire des données de tampon de vertex/index, plus des données de matériau et de squelette, et des données de collision le cas échéant). Une tendance dans l'industrie du jeu est de supporter le chargement d'un format comme collada dans la version développeur du moteur, mais aussi d'une chaîne d'outils qui exporte une version optimisée pour la publication. La version développeur peut mettre à jour dynamiquement le maillage, de sorte que les artistes sauvegardent les modifications, le fichier est automatiquement rechargé leur permettant une vue WYSIWYG (presque) instantanée de leur modèle, tout en fournissant un format de sortie entièrement optimisé.

+2

A propos du format binaire natif, il est à noter qu'il existe déjà un format XML binaire standard: http://en.wikipedia.org/wiki/Binary_XML – Hibou57

+0

@ Hibou57 Eh bien, pas vraiment. Aucun qui est standard de l'industrie de toute façon – RecursiveExceptionException

Questions connexes