Consigliato tipo di modello 3D per il modello personaggio in-game, caricato manualmente?

StackOverflow https://stackoverflow.com/questions/585769

  •  06-09-2019
  •  | 
  •  

Domanda

Sto scrivendo un gioco in JOGL e la necessità di rappresentare il personaggio in-game. Ho intenzione di utilizzare l'animazione scheletrica per i movimenti dei personaggi, e, naturalmente, il personaggio sarà scuoiati. Io non riesco a trovare qualsiasi buoni caricatori modello per JOGL così ho intenzione di caricare il me stesso tipo di file, sulla base di specifiche o qualcosa del genere. Ho anche intenzione di usare Blender come il mio modellatore 3D, in modo da un certo tipo che esiste in là sarebbe stato meglio.

Che tipo di file fare consigliate che uso? .miscela? .x, .3ds, .md2 / 3/5, ... ?? Ricorda Mi piacerebbe qualcosa con un formato definito in modo chiaro che posso scrivere il caricatore senza dover deobfuscate un formato file casuale, e ha bisogno di supportare le caratteristiche di cui sopra. Qualsiasi altra informazione si può dare per quanto riguarda il motivo per cui si è scelto e perché è meglio sarebbe troppo molto helpeful!

Grazie!

EDIT: Scriverò un esportatore Blender MS3D. Quando ho finito mi post che qui .

Nel frattempo, vedi la mia risposta segnata in basso; ma più va avanti da allora. Non ho intenzione di mantenere questo aggiornato con quello che sto facendo, ma in fondo ho trovato jMonkey motore e ha già un importatore ms3d e altri sottosistemi che avevo cominciato scrittura a mano. Nonostante la roba scenegraph (è per questo che è stato evitano Java3D) penso che sarà la mia migliore possibilità di unire le forze con esso, in modo che è quello che sto facendo.

È stato utile?

Soluzione 2

Prima di tutto, grazie alle altre due answerers. basszero Anche avevi ragione sul file blend, e avrei dovuto controllare Wikipedia primo! Si tratta di una discarica quasi inutile binario della memoria di Blender.

Poco dopo aver scritto questa domanda, ho deciso di andare avanti e scrivere un caricatore OBJ, perché 1) mi avrebbe dato l'esperienza di caricamento di un formato di file 3D e 2) c'è sembrato un bel formato, comunemente usato, ma anche facile caricare. È finito per essere una grande decisione, perché mi ha fatto capire, non ho fatto sapere la differenza tra un oggetto e un gruppo, e ho anche non sapeva molto sui materiali. Mi ha aiutato a stabilire il codice per queste strutture 3D.

Entrambe le risposte raccomandano formati basati su XML. Non voglio un formato XML. Non credo che questo è il posto giusto per XML. Credo che questi formati sono stati creati perché XML è flessibile, universale e facile per creare schemi per, ma non è quello che sto cercando. Voglio un formato che è veloce da caricare (XML non è, relativamente parlando), non deve essere flessibile o leggibile, e qualcosa che posso scrivere un importatore per, piuttosto che basarsi su librerie XML. basszero anche detto, "a costo di essere XML," e lui è completamente a destra; si tratta di un costo che non mi sento vale il fardello.

Il mio OBJ loader è fatto. Ho separato da classi del modello attuale, e realizzato con un'interfaccia MeshFactory modo che io possa in futuro scrivere un loader diverso se volevo ... Qual è il piano. Ho fatto più ricerca degli ultimi due giorni e ha deciso sul formato ms3d.

Il formato ms3d supporta sartiame scheletrico (articolazioni) e l'animazione scheletrica keyframe, e inoltre supporta una texture map e mappa alfa. Inoltre, si tratta di un formato binario facilmente leggibili da computer che non perde spazio (come XML e OBJ fare) con le etichette leggibili e le etichette e così via.

Blender, purtroppo, non dispone di una (di lavoro) ms3d script di esportazione, così sarò scrivendo una sceneggiatura per me stesso. Per fortuna, non è un processo difficile, e si può leggere attraverso la documentazione di Blender e utilizzare altri esportatori come esempi. Dovrò rispolverare il mio Python, ma per il resto sembra molto semplice, da quello che ho visto di altri script.

Il lato Java delle cose dovrebbe essere facile, in realtà sarà ancora più semplice rispetto al formato OBJ perché ms3d è più strutturato. Ho trovato specifiche per il formato ms3d on-line, in stile C (genio!) in modo che siano incredibilmente auto-esplicativi e non ho altre domande sul formato. Sarò basando la mia implementazione fuori di questa specifica, anche se posso in un secondo momento implementare le mie variazioni; questo è il bello di scrivere il mio importatore ed esportatore, posso modificare il formato, come vedo in forma.

Tutto sommato, ho deciso questa è la soluzione migliore.

E basszero, lei ha assolutamente ragione, come ho visto dalla mia OBJ loader: "Una volta che hai tutto letta, organizzazione dei dati (elenco di visualizzazione, texture, array di vertici, vertex buffer, ecc) e il rendering sono una bestia completamente diversa ".

Cruachan: nessuna Java3D per me, sto attaccare con JOGL. Io in realtà proprio quel libro (anche se non è accessibile al momento) anche se non mi ricordo come ha caricato modelli, ma sono abbastanza sicuro ha usato i caricatori formato Java3D che lo fanno automaticamente. Non è una cosa che sto pensando di usare ... Ci dispiace!

-Ricket

Altri suggerimenti

Se si può vivere con solo la geometria, o sono preparati a gestire il proprio texturing, allora obj è probabilmente il formato di file 3D più semplice e ampiamente supportato. E 'fondamentalmente l'ascii di modellazione 3D.

Altrimenti sarei tendo verso VRML. E 'ben definita e non v'è almeno un po' di codice in giro per iniziare. Ho caricato con successo modelli VRML in Java3D utilizzando il codice liberamente disponibile. formato file nativo tende ad essere grande, ma che può essere risolto utilizzando un formato compresso.

Non suggerirei .3ds. L'unica volta che ho gestito un lettore per questo formato è in Delphi Pascal, ed è disordinato, mal definita, difficile da elaborare e tende ad avere un sacco di 'variazioni' in modo tale che, anche se sono riuscito a ottenere i miei modelli di gestione del lettore esportati da 3D-MAX per sé più che bene ha respinto molti modelli da altri pacchetti che sosteneva di essere in formato 3DS ma non sono stati adeguatamente formati.

ha aggiunto: Anche io vi consiglio di dare un'occhiata alla API Java3D e il libro O'Reilly Killer gioco Programmazione in Java in quanto anche se non imboccare la strada Java3D è probabile che rispondere a molte delle vostre domande.

Credo .blend è per lo più un dump binario di in strutture di memoria dal frullatore, non te l'aiuto molto al di fuori del frullatore. Utilizzare Blender il modello, ma l'esportazione in un formato diverso.

Può essere un po 'prolisso, ma ho sentito Collada avvolge le informazioni 3D molto bene (a costo di essere XML). Il vantaggio è che non v'è probabilmente una definizione dello schema propery che si potrebbe passare attraverso JAXB con un conseguente parser completo w / nessun lavoro da voi.

I formati .MD * possono anche essere una buona alternativa. Sono da motori di iD (Q1, Q2, Q3, Q4, Doom3) e sono documentati. Essi contengono anche animazioni sequenze.

Una volta che hai tutto letta, organizzazione dei dati (elenco di visualizzazione, texture, array di vertici, vertex buffer, ecc) e di rendering sono una bestia completamente diversa.

Woah, l'uomo, hai intenzione di rilasciare l'esportatore ms3d quando lo finisci? E se sì, come si arriva? Ho davvero bisogno di mettere le mani su un esportatore che funziona per l'animazione e che Fragmotion usa, e sembra che cosa stai facendo è la mia ultima speranza.

C'è un lettore di file .blend open source in grado di estrarre le informazioni da un file .blend, tra cui maglie, le texture, scheletro e animazione.

Vedi alcuni esempi che utilizzano Ogre e Irrlicht qui: http://gamekit.googlecode.com

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top