Existe-t-il une spécification standard pour la représentation graphique 3D?

12

Je lis un livre sur l'infographie , et à un moment donné, il montre un modèle 3D, créé à partir d'un fichier .dat.

Voici quelques règles pour la création du fichier .dat:

  • Constitué d'une liste de positions / faces de sommets
  • Écrit dans le sens antihoraire
  • Les faces se terminent par un point (.)
  • Les fractions sont également acceptables

Je veux savoir si c'est la norme, et sinon, quelle est la manière standard de définir un objet 3D.

De plus, s'il existe une spécification, qui l'a définie et où la trouver?

Daniel
la source

Réponses:

8

Lorsque nous parlons de formats de fichiers, nous parlons de la persistance de certaines données liées à un modèle / géométrie 3D. Il n'existe pas de norme universelle sur les formats de fichier pour la géométrie 3D persistante. Il n'y a que quelques formats plus dominants que d'autres.

Tout comme c'est le cas avec les formats de fichier image, les PNG et JPEG sont les formats les plus courants aujourd'hui, mais il n'y a pas d'accord universel entre les applications sur l'utilisation de l'un ou de l'autre. Chaque application utilise la meilleure solution pour ses objectifs.

La même chose se produit avec les formats de fichiers stockant des données 3D. Chaque logiciel de modélisation 3D aura généralement un ou un ensemble de formats préférés. La plupart définissent en fait des formats personnalisés qui ne fonctionnent qu'avec la version spécifique de l'outil. Cela peut se produire pour de nombreuses raisons, de la simplification du fonctionnement interne de l'application ou de l'accélération du chargement des fichiers à la liaison volontaire de l'utilisateur à un outil donné.

Ce .datformat que vous décrivez est un format personnalisé créé par les auteurs du livre, qui a probablement été conçu dans un souci de simplicité. Il semble s'agir d'un fichier texte similaire au format OBJ Wavefront , qui est à son tour un format très populaire pour le stockage de la géométrie statique, bien qu'un peu dépassé à l'heure actuelle. On pourrait dire que le .OBJformat est celui .BMPdes formats de modèles 3D.

Les autres formats de modèles 3D populaires incluent:

Et plein d'autres. Explication plus générale ici .

Notez également que j'ai dit au début que ce sont des formats pour stocker / conserver un modèle 3D ou une géométrie sur un stockage hors ligne. Cela ne signifie pas (et ce n'est généralement pas le cas) que les applications qui les utilisent stockent les données en mémoire interne en utilisant la même disposition que le fichier. Normalement, ce type de données subira beaucoup de traitement après avoir été chargé à partir d'un fichier jusqu'à ce qu'il soit, par exemple, affiché à l'écran.

glampert
la source
1
"Normalement, ce type de données subira beaucoup de traitement après avoir été chargé à partir d'un fichier jusqu'à ce qu'il soit, par exemple, affiché à l'écran." comme une image est transformée en un tableau de pixels avant d'être affichée à l'écran, quel que soit le format d'origine. (malgré la compression matérielle)
ratchet freak
@ratchetfreak mais pas toutes les utilisations des formats 3D finissent sur l'écran.
joojaa
BMP, étant un format binaire, n'est pas une bonne contrepartie à OBJ. Une meilleure correspondance serait XPM , qui est textuelle.
Ruslan
5

Il n'y a pas de format standard pour les modèles 3D. Quelques-uns courants sont listés dans la réponse de glampert, plus peut être trouvé dans cette réponse SE .

Si vous concevez votre propre format pour vos propres besoins, (une chose assez courante en fait), c'est une bonne première étape pour voir comment vous utilisez vos données de modèle. Par exemple, si vous vous concentrez sur le rendu, vous pouvez utiliser le format attendu par la bibliothèque graphique. Si vous souhaitez réduire le temps de chargement de votre logiciel autant que possible, la réduction de la quantité d'analyse et de traitement que vous devez effectuer peut vous aider. Un utilitaire simple qui peut sortir un fichier au format attendu par votre moteur signifie que vous pouvez simplement mapper le fichier en mémoire, puis passer un pointeur dans votre bibliothèque graphique.

D'un autre côté, si le rendu n'est pas votre principale préoccupation et que l'édition est plus importante pour vous, vous pourriez envisager un format plus adapté à l'édition, comme le bord ailé . L'utilisation d'un format de modèle à usage général peut convenir à vos objectifs au début d'un projet, mais en fin de compte, vous pouvez faire beaucoup de choses avec les modèles 3D et chaque format a ses propres avantages et inconvénients, vous pouvez donc choisir celui qui vous convient le mieux. .

Jorge Rodriguez
la source
4

Il n'y a pas une seule norme qui définit le stockage des modèles 3D. L'API graphique ne se soucie que des triangles, qui sont définis par des sommets et des indices indiquant quels sommets forment un triangle.

De nombreuses entreprises ont créé leurs propres formats de modèle avec différentes fonctionnalités et objectifs. L'un des plus simples est le format .obj (Wavefront Object). Qui contient des listes de positions de sommets, de normales et de coordonnées de texture et une liste d'indices qui composent les triangles. Il contient également des matériaux, avec certaines propriétés de base comme les textures, les couleurs diffuses et spéculaires.

Les formats de modèle plus avancés, tels que .fbx (FilmBox) utilisés par Autodesk contiennent des informations supplémentaires requises par le logiciel de modélisation. Celles-ci peuvent inclure des os, des hiérarchies et encore plus de propriétés de vertex utilisées pour le skinning, etc. Il existe donc des "normes", mais elles ne sont pas vraiment unifiées car chaque programme peut nécessiter des informations différentes. Mais le front d'onde est un très bon choix, car de nombreuses applications de modélisation peuvent y exporter et il est facile d'écrire (trouver) un importateur pour.

Maurice Laveaux
la source
3

Comme d'autres réponses l'ont mentionné, il existe plusieurs formats concurrents pour le stockage de données 3D.

Cependant, un format spécifique est apparu depuis que cette question a été posée, qui présente de nombreuses caractéristiques que vous attendez d'un "standard": le format glTF .


glTF est un standard 3D publié par le groupe Khronos (l'organisation derrière OpenGL et Vulkan), qui vise à combler les défauts de Collada.

Ses principaux avantages sont:

  • Il est basé sur JSON, ce qui facilite l'analyse, la sérialisation, la lecture et l'envoi sur le réseau.

  • Il y a très peu d'ambiguïté ou de redondance dans la norme (bien qu'il y en ait *). Les unités, la gestualité, les signes de coordonnées de texture, etc. sont tous normalisés; tout est toujours basé sur un index, ce qui signifie qu'il n'y a pas de redondance des données. Cela facilite vraiment l'écriture d'un importateur.

  • La documentation est très propre et exhaustive.

  • La disposition des données est basée sur les flux de travail OpenGL / WebGL, ce qui signifie que les modèles importés peuvent être utilisés comme données dans le moteur avec peu de plomberie.

  • La norme est Open Source et la spécification est hébergée sur Github. Cela signifie que la norme sera toujours disponible, utilisable gratuitement et que le processus de développement est visible par tous. Par opposition, l'avenir des normes de source fermée est décidé par des intérêts privés, ce qui est intrinsèquement dangereux.

  • glTF est soutenu par de nombreux géants de l'industrie via Khronos (Adobe, Google, Microsoft, Mozilla, Unity); il peut être exporté par Blender (l'exportation depuis Maya n'est toujours pas officiellement pris en charge), et importé par Unreal, Unity et Godot.

Voir également:

* Je suis presque sûr que les tangentes à main variable sont inutiles.

Narrateur du chaos
la source
2

Pour ajouter à d'autres réponses, il existe en fait deux types de formats, intermédiaire et d'exécution. Les formats intermédiaires (exemple: COLLADA) sont plus verbeux / plus lents et sont finalement convertis entre les outils au format d'exécution personnalisé optimisé pour une application / un matériel spécifique. Les applications simples qui ne se soucient pas beaucoup des performances peuvent utiliser directement des formats intermédiaires.

SurvivalMachine
la source