Formato file per modelli 3D statici e animati


22

Attualmente sto scrivendo un gioco 3D in C ++ con OpenGL e sto arrivando alla parte in cui caricare i modelli 3D. Pertanto sto cercando formati di file e tecniche popolari per

  • visualizzare mesh statiche e
  • renderizza mesh animate.

Ho già trovato un gran numero di possibili formati e tecniche, come animazioni di fotogrammi chiave, animazione scheletrica, MD2 fino a MD5, 3DS, X, Collada ecc. Pp.

Per semplicità, mi piacerebbe usare un formato (e una tecnica) che consenta sia mesh statiche che animate. Quindi la mia domanda è se un formato è adatto per quell'attività e quale suggeriresti. E per chiarire un po ': non ho bisogno di animazioni super fluide o nuove funzionalità.

Sidenote: Perché sono un fan di Blender (ma non un esperto ;-)) sarebbe utile se potesse essere usato con quello - ma ovviamente non dovrebbe essere il tappo dello spettacolo, qui.

Risposte:


16

Lascia che ti proponga di utilizzare Collada .

È ampiamente supportato dagli strumenti DCC e ben standardizzato. Supporta animazioni scheletriche e ... beh, fa quasi tutto, inclusi shader e fisica - quelli non saranno rilevanti per te.

Le animazioni basate su vertici come nei formati MDL o MD2 sono più o meno un relitto del passato. Oggi, la maggior parte delle animazioni sono animazioni scheletriche (vale a dire pensare se i personaggi sono armoniosamente truccati) e gli strumenti di creazione dei contenuti sono ottimizzati per loro.

Blender ha un esportatore Collada funzionante, ma come sempre esportare cose da Blender può essere fastidioso. Potrebbe essere necessario provare esportatori o formati di file alternativi o hackerare manualmente gli script in caso di problemi.

Per caricare Collada, utilizzare librerie come FCollada o ColladaDOM (non tentare di analizzarlo da solo, Collada è un mostro XML davvero grasso ...). C'è anche Open Asset Import Library , che carica ~ 25 formati di file, incluso Collada (e tutti gli altri formati che menzioni). Sarebbe una scelta eccellente poiché mira soprattutto agli sviluppatori di giochi e fornisce il suo output in un formato adatto al rendering in tempo reale. Ma ad essere sincero: sono uno dei suoi coautori, quindi probabilmente sono un po 'di parte .

Ultimo ma non meno importante : il formato del file che usi per importare le tue risorse non dovrebbe definire le capacità del tuo motore e le tecniche che usa - dovrebbe piuttosto essere il contrario. Se le tue animazioni sono estremamente fluide non è una questione di formato di importazione, si tratta di quale tecnica usi per animare le mesh e quanto sono buone per essere modellate in primo luogo. Il formato di importazione dovrebbe solo aiutarti a portare i tuoi dati da Blender nel tuo gioco.


Grazie mille per la risposta dettagliata. Ho sentito parlare di Collada oggi (consigliato da un amico) e non ero sicuro che fosse davvero pronto per essere utilizzato in un ambiente di produzione. Ci proverò ora, grazie. :-)
stschindler

2
Un buon consiglio, in particolare il riferimento ad AssImp. Non avrei suggerito COLLADA, tuttavia, poiché nessuno sembra supportarlo in modo coerente e corretto, ed è piuttosto grande per i veri contenuti. Suggerirei di usare qualcosa come MD5, che ti dà lo scheletro ed è abbastanza ampiamente implementato correttamente (penso). Inoltre non chiuderei abbastanza facilmente MD2; ci sono molti modelli di esempio disponibili e puoi animarlo banalmente a buon mercato (anche se è inutile per i ragdoll o cosa hai).
ChrisE,

Giocherò solo con diversi formati di file. Grazie ad AssImp, sarà facile da fare. MD2 è stata davvero la mia prima idea, tuttavia è piuttosto costoso da creare, credo, invece di esportare solo le ossa giuste. Nel mio caso i ragdoll non sono necessari, ho solo bisogno di modelli animati, nessuna fisica coinvolta.
stschindler,

Esistono davvero pessimi esportatori di Collada là fuori, ma almeno il formato è ben documentato, quindi sai sempre di chi è la colpa :-). Anche MD5 è un buon candidato, ma non so quanto siano bravi gli esportatori di Blender. MD2 ha una rappresentazione del vertice molto limitata e soffre di limiti di dimensioni e precisione. Non lo userei davvero , non c'è motivo di farlo.
Alexander Gessler,

wazim.com/Collada_Tutorial_1.htm è un tutorial abbastanza approfondito per caricare collada, ma consiglierei comunque di usare una libreria.
Exilyth,
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.