Gibt es eine Standardspezifikation für die grafische Darstellung in 3D?


12

Ich lese ein Buch über Computergrafik und irgendwann zeigt es ein 3D-Modell, das aus einer DAT-Datei erstellt wurde.

Hier sind einige Regeln für die Erstellung der DAT-Datei:

  • Hergestellt aus einer Liste von Eckpunkten / Flächen
  • Gegen den Uhrzeigersinn geschrieben
  • Gesichter enden mit einem Punkt (.)
  • Brüche sind ebenfalls akzeptabel

Ich möchte wissen, ob dies der Standard ist und wenn nicht, wie ein 3D-Objekt standardmäßig definiert wird.

Wenn es eine Spezifikation gibt, wer hat sie definiert und wo ist sie zu finden?

Antworten:


8

Wenn es um Dateiformate geht, geht es darum, einige Daten in Bezug auf ein 3D-Modell / eine 3D-Geometrie beizubehalten. Es gibt keinen universellen Standard für Dateiformate für persistente 3D-Geometrie. Es gibt nur wenige Formate, die dominanter sind als andere.

Genau wie bei Bilddateiformaten sind PNGs und JPEGs die gängigsten Formate, es gibt jedoch keine allgemeingültige Übereinstimmung zwischen den Anwendungen bei der Verwendung der einen oder anderen. Jede App verwendet die beste Anpassung für ihre Zwecke.

Gleiches gilt für Dateiformate, in denen 3D-Daten gespeichert werden. Jede 3D-Modellierungssoftware verfügt im Allgemeinen über ein oder mehrere bevorzugte Formate. Die meisten definieren benutzerdefinierte Formate, die nur mit der spezifischen Version des Tools funktionieren. Dies kann aus vielen Gründen geschehen, angefangen von der Vereinfachung des inneren Ablaufs der Anwendung oder der Beschleunigung des Ladens von Dateien bis hin zur gezielten Bindung des Benutzers an ein bestimmtes Tool.

Dies .dat Ihnen beschriebenen Format handelt es sich um ein benutzerdefiniertes Format, das von den Autoren des Buches erstellt wurde und wahrscheinlich mit Blick auf die Einfachheit entworfen wurde. Es scheint sich um eine Textdatei zu handeln, die dem Wavefront-OBJ- Format ähnelt. Dies ist wiederum ein sehr beliebtes Format zum Speichern statischer Geometrie, obwohl es inzwischen etwas veraltet ist. Man könnte sagen, dass das .OBJFormat das .BMPvon 3D-Modellformaten ist.

Andere beliebte 3D-Modellformate sind:

Und viele andere. Allgemeine Erklärung hier .

Beachten Sie auch, dass ich zu Beginn sagte, dass dies Formate zum Speichern / Speichern eines 3D-Modells oder einer Geometrie in einem Offline-Speicher sind. Dies bedeutet nicht (und normalerweise auch nicht), dass die Anwendungen, die sie verwenden, die Daten intern im Speicher mit demselben Layout wie die Datei speichern. Normalerweise werden diese Daten nach dem Laden aus einer Datei so lange weiterverarbeitet, bis sie beispielsweise auf dem Bildschirm angezeigt werden.


1
"Normalerweise werden diese Daten nach dem Laden aus einer Datei einer umfangreichen Verarbeitung unterzogen, bis sie beispielsweise auf dem Bildschirm angezeigt werden." Wie ein Bild wird es in ein Pixel-Array umgewandelt, bevor es auf den Bildschirm geschoben wird, unabhängig vom ursprünglichen Format. (Hardware-Komprimierung trotz)
Ratschenfreak

@ratchetfreak, aber nicht alle Verwendungen von 3D-Formaten landen auf dem Bildschirm.
Joojaa

BMP ist als Binärformat kein gutes Gegenstück zu OBJ. Eine bessere Übereinstimmung wäre XPM , das in Textform vorliegt.
Ruslan

5

Es gibt kein Standardformat für 3D-Modelle. Einige häufige sind in Glamperts Antwort aufgeführt, weitere finden Sie in dieser SE-Antwort .

Wenn Sie Ihr eigenes Format für Ihre eigenen Zwecke entwerfen (was eigentlich ziemlich häufig vorkommt), ist dies ein guter erster Schritt, um zu sehen, wie Sie Ihre Modelldaten verwenden. Wenn Sie sich beispielsweise auf das Rendern konzentrieren, können Sie das von der Grafikbibliothek erwartete Format verwenden. Wenn Sie die Ladezeit Ihrer Software so weit wie möglich reduzieren möchten, kann eine Reduzierung des Parsing- und Verarbeitungsaufwands hilfreich sein. Ein einfaches Dienstprogramm, das eine Datei in dem von Ihrer Engine erwarteten Format ausgeben kann, bedeutet, dass Sie die Datei einfach in den Speicher zuordnen und dann einen Zeiger in Ihre Grafikbibliothek übergeben können.

Auf der anderen Seite, wenn das Rendern nicht Ihr Hauptanliegen ist und die Bearbeitung für Sie wichtiger ist, können Sie ein Format in Betracht ziehen, das für die Bearbeitung besser geeignet ist, z. B. eine geflügelte Kante . Die Verwendung eines universellen Modellformats mag zu Beginn eines Projekts für Ihre Zwecke geeignet sein. Letztendlich gibt es jedoch viele Möglichkeiten für 3D-Modelle. Jedes Format hat seine eigenen Vor- und Nachteile, sodass Sie das für Sie am besten geeignete auswählen können .


4

Es gibt keinen einzigen Standard, der die Speicherung von 3D-Modellen definiert. Die Grafik-API kümmert sich nur um Dreiecke, die durch Scheitelpunkte und Indizes definiert sind, die angeben, welche Scheitelpunkte ein Dreieck bilden.

Viele Unternehmen haben ihre eigenen Modellformate mit unterschiedlichen Funktionen und Zielen erstellt. Eines der einfachsten ist das .obj-Format (Wavefront Object). Welche enthält Listen von Eckpunkten, Normalen und Texturkoordinaten und eine Liste von Indizes, die die Dreiecke bilden. Es enthält auch Materialien mit einigen grundlegenden Eigenschaften wie Texturen, diffusen und spiegelnden Farben.

Fortgeschrittenere Modellformate wie .fbx (FilmBox), die von Autodesk verwendet werden, enthalten zusätzliche Informationen, die von der Modellierungssoftware benötigt werden. Dies können Bones, Hierarchien und noch mehr Scheitelpunkteigenschaften sein, die zum Skinnen usw. verwendet werden. Es gibt also "Standards", die jedoch nicht wirklich einheitlich sind, da jedes Programm möglicherweise andere Informationen benötigt. Aber Wellenfront ist eine sehr gute Wahl, da viele Modellierungsanwendungen in diese exportiert werden können und es einfach ist, einen Importeur für diese zu schreiben (zu finden).


3

Wie andere Antworten bereits erwähnt haben, gibt es mehrere miteinander konkurrierende Formate zum Speichern von 3D-Daten.

Seitdem diese Frage gestellt wurde, ist jedoch ein bestimmtes Format erschienen, das viele Eigenschaften aufweist, die Sie von einem "Standard" erwarten würden: das glTF-Format .


glTF ist ein 3D-Standard, der von der Khronos Group (der Organisation hinter OpenGL und Vulkan) veröffentlicht wurde, um die Mängel in Collada auszugleichen.

Die Hauptvorteile sind:

  • Es ist JSON-basiert, was das Parsen, Serialisieren, Lesen und Senden über das Netzwerk sehr einfach macht.

  • Der Standard weist nur eine sehr geringe Mehrdeutigkeit oder Redundanz auf (obwohl es einige * gibt). Die Einheiten, die Händigkeit, die Texturkoordinatenzeichen usw. sind alle standardisiert; Alles ist immer indexbasiert, dh es gibt keine Datenredundanz. Dies macht es wirklich einfach, einen Importeur zu schreiben.

  • Die Dokumentation ist sehr sauber und vollständig.

  • Das Layout der Daten basiert auf den OpenGL / WebGL-Workflows. Das bedeutet, dass importierte Modelle mit geringem Installationsaufwand als Daten im Motor verwendet werden können.

  • Der Standard ist Open Source und die Spezifikation wird auf Github gehostet. Das heißt, der Standard ist immer verfügbar, kostenlos nutzbar und der Entwicklungsprozess für alle sichtbar. Durch die Opposition wird die Zukunft von Closed-Source-Standards von privaten Interessen bestimmt, was von Natur aus gefährlich ist.

  • glTF wird von vielen Branchengrößen über Khronos unterstützt (Adobe, Google, Microsoft, Mozilla, Unity). Es kann von Blender exportiert werden (der Export aus Maya wird offiziell noch nicht unterstützt) und von Unreal, Unity und Godot importiert werden.

Siehe auch:

* Ich bin mir ziemlich sicher, dass die Tangenten mit variabler Händigkeit sinnlos sind.


2

Um andere Antworten zu ergänzen, gibt es eigentlich zwei Arten von Formaten, Intermediate und Runtime. Zwischenformate (Beispiel: COLLADA) sind ausführlicher / langsamer und werden zwischen Tools letztendlich in das benutzerdefinierte Laufzeitformat konvertiert, das für eine bestimmte Anwendung / Hardware optimiert ist. Einfache Anwendungen, die wenig Wert auf Leistung legen, können direkt Zwischenformate verwenden.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.