Esiste una specifica standard per la rappresentazione grafica 3D?


12

Sto leggendo un libro sulla computer grafica e ad un certo punto mostra un modello 3D, creato da un file .dat.

Ecco alcune regole per la creazione del file .dat:

  • Costituito da un elenco di posizioni / facce del vertice
  • Scritto in senso antiorario
  • Le facce terminano con un punto (.)
  • Anche le frazioni sono accettabili

Voglio sapere se questo è lo standard e, in caso contrario, qual è il modo standard di definire un oggetto 3D.

Inoltre, se esiste una specifica, chi l'ha definita e dove trovarla?

Risposte:


8

Quando parliamo di formati di file, stiamo parlando della persistenza di alcuni dati relativi a un modello / geometria 3D. Non esiste uno standard universale sui formati di file per la geometria 3D persistente. Esistono solo pochi formati più dominanti di altri.

Proprio come avviene con i formati di file immagine, i PNG e i JPEG sono i formati più comuni oggi disponibili, ma non esiste un accordo universale tra le applicazioni sull'uso dell'uno o dell'altro. Ogni app utilizza la soluzione migliore per i suoi scopi.

Lo stesso accade con i formati di file che memorizzano dati 3D. Ogni software di modellazione 3D avrà generalmente uno o una serie di formati preferiti. La maggior parte in realtà definisce formati personalizzati che funzionano solo con la versione specifica dello strumento. Ciò può accadere per molte ragioni, dalla semplificazione del funzionamento interno dell'applicazione, o dal rendere più veloce il caricamento dei file, fino all'associazione dell'utente a un determinato strumento apposta.

Questo .datformato che descrivi è un formato personalizzato creato dagli autori del libro, che probabilmente è stato progettato pensando alla semplicità. Sembra essere un file di testo simile al formato Wavefront OBJ , che a sua volta è un formato molto popolare per l'archiviazione della geometria statica, anche se un po 'obsoleto. Si potrebbe dire che il .OBJformato è quello .BMPdei formati di modello 3D.

Altri formati di modelli 3D popolari includono:

E molti altri. Spiegazione più generale qui .

Si noti inoltre che all'inizio ho affermato che si tratta di formati per l'archiviazione / la persistenza di un modello 3D o di una geometria su un archivio offline. Non significa (e di solito non è il caso) che le applicazioni che li usano memorizzeranno i dati internamente in memoria usando lo stesso layout del file. Normalmente, questo tipo di dati subirà molta elaborazione dopo essere stato caricato da un file fino a quando non viene visualizzato, ad esempio, sullo schermo.


1
"Normalmente, questo tipo di dati subirà molta elaborazione dopo essere stati caricati da un file fino a quando, ad esempio, non viene visualizzato sullo schermo." come un'immagine viene trasformata in una matrice di pixel prima di essere trasmessa sullo schermo indipendentemente dal formato originale. (nonostante la compressione hardware)
maniaco del cricchetto

@ratchetfreak ma non tutti gli usi dei formati 3D finiscono sullo schermo.
joojaa,

BMP, essendo un formato binario, non è una buona controparte di OBJ. Una corrispondenza migliore sarebbe XPM , che è testuale.
Ruslan,

5

Non esiste un formato standard per i modelli 3D. Alcuni comuni sono elencati nella risposta di glampert, altri sono disponibili in questa risposta SE .

Se stai progettando il tuo formato per i tuoi scopi (una cosa abbastanza comune da fare, in realtà) è un buon primo passo per vedere come stai usando i dati del tuo modello. Ad esempio, se ti concentri sul rendering, puoi utilizzare il formato previsto dalla libreria grafica. Se si desidera ridurre il più possibile il tempo di caricamento del software, può essere utile ridurre la quantità di analisi ed elaborazione che è necessario eseguire. Una semplice utility in grado di generare un file nel formato previsto dal tuo motore ti consentirà di mappare semplicemente il file in memoria e quindi passare un puntatore nella tua libreria grafica.

D'altra parte, se il rendering non è la tua preoccupazione principale e la modifica è più importante per te, potresti considerare un formato più suscettibile alla modifica, come il bordo alato . L'uso di un formato modello per scopi generici può adattarsi ai tuoi scopi all'inizio di un progetto, ma alla fine ci sono molte cose che puoi fare con i modelli 3D e ogni formato ha i suoi vantaggi e svantaggi, quindi puoi scegliere quello che funziona meglio per te .


4

Non esiste un unico standard che definisce la memorizzazione dei modelli 3D. L'API grafica si preoccupa solo dei triangoli, che sono definiti da vertici e indici che indicano quali vertici formano un triangolo.

Molte aziende hanno creato i propri formati di modello con caratteristiche e obiettivi diversi. Uno dei più semplici è il formato .obj (Wavefront Object). Che contiene elenchi di posizioni di vertici, normali e coordinate di trama e un elenco di indici che compongono i triangoli. Contiene anche materiali, con alcune proprietà di base come trame, colori diffusi e speculari.

Formati di modello più avanzati, come .fbx (FilmBox) utilizzato da Autodesk contengono informazioni aggiuntive richieste dal software di modellazione. Questi potrebbero includere ossa, gerarchie e ancora più proprietà dei vertici utilizzate per la scuoiatura, ecc. Quindi ci sono "standard", ma non sono realmente unificati poiché ogni programma potrebbe richiedere informazioni diverse. Ma wavefront è un'ottima scelta, perché molte applicazioni di modellazione possono esportare in esso ed è facile scrivere (trovare) un importatore per.


3

Come menzionato da altre risposte, esistono diversi formati concorrenti per la memorizzazione di dati 3D.

Tuttavia, da quando è stata posta questa domanda, è apparso un formato specifico che presenta molte caratteristiche che ci si aspetterebbe da uno "standard": il formato glTF .


glTF è uno standard 3D pubblicato dal gruppo Khronos (l'organizzazione dietro OpenGL e Vulkan), che mira a rimediare ai difetti di Collada.

I suoi principali vantaggi sono:

  • È basato su JSON, il che rende molto semplice analizzare, serializzare, leggere e inviare in rete.

  • Esistono pochissime ambiguità o ridondanze nello standard (sebbene ce ne siano alcuni *). Le unità, la mano, i segni delle coordinate delle trame, ecc. Sono tutti standardizzati; tutto è sempre basato sull'indice, il che significa che non esiste ridondanza dei dati. Questo rende davvero facile scrivere un importatore.

  • La documentazione è molto pulita ed esaustiva.

  • Il layout dei dati si basa sui flussi di lavoro OpenGL / WebGL, il che significa che i modelli importati possono essere utilizzati come dati all'interno del motore con pochi impianti idraulici.

  • Lo standard è Open Source e le specifiche sono ospitate su Github. Ciò significa che lo standard sarà sempre disponibile, utilizzabile gratuitamente e il processo di sviluppo è visibile a tutti. Per opposizione, il futuro degli standard a fonte chiusa è deciso da interessi privati, che è intrinsecamente pericoloso.

  • glTF è supportato da molti giganti del settore attraverso Khronos (Adobe, Google, Microsoft, Mozilla, Unity); può essere esportato da Blender (l'esportazione da Maya non è ancora ufficialmente supportata) e importata da Unreal, Unity e Godot.

Guarda anche:

* Sono abbastanza sicuro che le tangenti a mano variabile sono inutili.


2

Per aggiungere ad altre risposte, esistono in realtà due tipi di formati, intermedio e runtime. I formati intermedi (esempio: COLLADA) sono più dettagliati / più lenti e alla fine vengono convertiti tra gli strumenti nel formato di runtime personalizzato ottimizzato per una specifica applicazione / hardware. Le applicazioni semplici che non tengono molto alle prestazioni possono utilizzare direttamente i formati intermedi.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.