2009-07-23 6 views
16

Je commence avec XNA et Blender et j'essaie de trouver des informations de bonne qualité et à jour sur les différents formats de fichiers 3D utilisés dans le développement de jeux. Il est clair que de nombreux jeux sont développés avec des formats de fichiers 3D multiples et personnalisés, mais je suis intéressé par le choix d'une bonne solution en utilisant un format plus couramment supporté.Formats de fichiers 3D pour les jeux

Quels sont les formats les plus populaires et qu'est-ce qui les distingue?

NOTE Idéalement, ils devraient prendre en charge les animations, mais je serais également intéressé par d'autres formats qui pourraient être utilisés pour construire des cartes ou des objets statiques.

+0

Super question. Très utile. Il suffit de dire ... :-) –

Répondre

10

En XNA, la peine d'essayer de faire quoi que ce soit par vous-même (charger des formats de données en particulier) est beaucoup plus élevée que de vivre avec les imperfections de celles supportées, du moins c'est ce que la documentation ressemble, et ce que j'ai entendu plié le pipeline de contenu cher pour soutenir ce dont il a besoin (génération de géométrie d'exécution) et à qui je fais confiance pour savoir ce qu'il fait. Donc je suppose que .X et .FBX vont l'être. Ils soutiennent tous les deux l'animation squelettique, et je pense aussi le vertex morping. Je ne sais pas exactement quelles fonctionnalités exactement Blender est capable d'exporter en eux, mais je peux regarder si vous le souhaitez.Blender 2.5 va enfin avoir un bon support Collada (celui actuel n'a pas d'armatures et est cassé de multiples façons), et Autodesk fournit un bon outil pour Collada < -> conversion FBX.

Si vous regardez autour de la communauté de développement hobby, vous verrez que les formats de données de logiciels Id sont très populaires. D'une part les formats d'animation de morphes de vertex MD2 et MD3, le format d'animation squelettique MD5, dont les besoins sont évidemment couverts par ce qui précède, et d'autre part le format de fichier BSP, qui décrit les niveaux de jeu. Une chose qui parle pour BSP est qu'un bon éditeur est disponible (GTKRadiant et dérivés). C'est un format efficace qui peut éliminer la géométrie cachée. Cependant, le coût d'exécution de la construction de la géométrie personnalisée dans XNA est significatif, et avec les limites de ces formats sont assez modestes à 64k sommets et 64k polygones dans tout le niveau du jeu, que vous pouvez simplement jeter sur la carte graphique de nos jours. baisse de performance sera perceptible. Vous n'avez donc aucun avantage à le soutenir directement.

Je doute qu'il existe des formats et des outils puissants, modernes et disponibles pour la conception de niveau optimisée pour l'abattage sélectif, dont les avantages de performance se traduiraient par XNA.

Un couple de liens que vous pourriez vouloir vérifier si vous avez pas déjà:

3D World Studio content pipeline

Quake port

Tous et unmaintained de ce jour, aucune idée de comment optimiser ou non.

+0

Merci pour l'excellente information! –

5

Vous voulez probablement regarder COLLADA qui est une norme largement utilisée dans le développement de jeux 3D:

http://en.wikipedia.org/wiki/COLLADA

+0

COLLADA est un bordel affolant pour vous analyser. Si vous devez suivre cette route, obtenez une sorte de bibliothèque d'analyse. – Ricket

+0

Oui comme FCollada http://www.feelingsoftware.com/content/view/62/76. – zebrabox

6

Si vous utilisez XNA, alors la meilleure option est probablement FBX. La principale raison pour laquelle je dis cela est que c'est le seul, non spécifique à XNA, format supported natively by XNA dans le pipeline de création de contenu.

+0

Merci pour le conseil, même si je suis toujours intéressé par d'autres formats, surtout si quelqu'un d'autre a déjà créé un importateur/processeur open source –

+0

@The Lame Duck: Pourquoi voudriez-vous autre chose si vous pouvez obtenir les meilleurs résultats en utilisant fbx format? Comme Reed mentionné, XNA le supportera nativement, et si Blender exporte vers ce format, ce sera probablement votre meilleure option. – tomzx

+0

@tomzx - Très vrai, fbx peut être la meilleure option. Je suis toujours curieux de savoir comment il se compare à .md3 ou .md5 ou même COLLADA. Est-ce qu'il supporte les mêmes fonctionnalités? –

0

Pas un expert (loin de là, juste joué).

Je suppose que le format 3d studio max (.3ds) est assez utilisé, ainsi que le fichier RIB de rendu. J'aimais aussi le format de fichier AC3D (c'est du texte brut).

6

Les formats COLLADA et FBX mentionnés ci-dessus sont les seuls formats standards à avoir été largement adoptés dans l'industrie des jeux. Cependant, peu de jeux les chargent directement: ils sont généralement utilisés comme formats intermédiaires pour l'exportation à partir d'applications DCC, puis traités dans des formats d'exécution plus optimisés, généralement personnalisés et spécifiques au moteur.

Les développeurs amateurs utilisent souvent comme point de départ les formats de fichiers des jeux populaires. Le modèle Quake 3 et les formats de cartes ont été assez populaires pendant un certain temps. Le format .X de Microsoft était également très populaire pour les projets amateurs en raison de la disponibilité d'un certain nombre d'exportateurs et du support de chargement dans le framework D3DX.

0

Depuis de nombreuses années maintenant le DirectX file format (extension .x) est très populaire et Blender contient un exportateur intégré pour cela.

+1

Ce format n'est généralement pas considéré comme un bon format mais pour apprendre les API 3D, il sera plus que suffisant pour le travail. – Skizz

0

Fichier PMD. Ils sont utilisés pour les animations MMD et bien plus encore! il suffit de chercher autour Deviantart.com pour des choses comme « modèles MMD »

PMD et PMX ET OBJ

2

Il pourrait être utile de donner un coup d'oeil glTF.

Il existe également une version 2.0 de GlTF qui ajoute un support de rendu basé sur la physique. Tirant d'eau sur le site de Khronos.

Assimp a un support "partiel" pour cela. Je ne sais pas ce qui manque.

Il y a aussi un tas de chargeurs pour différentes langues (C++, WebGL/JS, Rust, Go) sur le github.

Il existe également un convertisseur COLLADA vers gltf.

Il utilise un fichier JSON comme une sorte de manifeste puis charge les données dans d'autres fichiers tels que .bin pour binaire, diverses images et glsl pour les shaders. Il y a un binary extension cependant.

Bien sûr, étant donné qu'il est nouveau (et en cours de développement), le support ne sera pas très utile. La dernière fois que j'ai regardé COLLADA était assez aléatoire.

Il existe également Declarative 3D.

Voir this paper that covers both.

Ces deux formats ont un peu de mise au point sur le Web, mais devraient aussi convenir aux jeux.

Questions connexes