2009-02-25 10 views
7

Sto scrivendo un gioco in JOGL e devo rappresentare il personaggio nel gioco. Ho in programma di usare l'animazione scheletrica per i movimenti del personaggio e, naturalmente, il personaggio sarà scuoiato. Non riesco a trovare alcun buon caricatore di modelli per JOGL, quindi ho in programma di caricare me stesso il tipo di file, in base alle specifiche o qualcosa del genere. Ho anche intenzione di usare Blender come mio modellatore 3D, quindi alcuni tipi che esistono in là sarebbero i migliori.Tipo di modello 3D consigliato per modello di personaggio nel gioco, caricato manualmente?

Che tipo di file suggerisci di utilizzare? .miscela? .x, .3ds, .md2/3/5, ... ?? Ricorda che mi piacerebbe qualcosa con un chiaro formato definito in modo che io possa scrivere il loader senza dover deoffuscare qualche formato di file casuale, e ha bisogno di supportare le funzionalità di cui sopra. Qualsiasi altra informazione che puoi fornire sul motivo per cui l'hai scelta e perché è meglio sarebbe molto utile anche tu!

Grazie!

MODIFICA: Scriverò un esportatore di MS3D Blender. Quando avrò finito lo pubblicherò here.

Nel frattempo, vedere la mia risposta contrassegnata di seguito; ma più è andato avanti da allora. Non ho intenzione di mantenere questo aggiornamento con quello che sto facendo, ma fondamentalmente ho trovato jMonkey Engine e ha già un importatore ms3d e altri sottosistemi che avevo iniziato a scrivere a mano. Nonostante le cose scenegraph (che è il motivo per cui stavo evitando Java3D) penso che sarà la mia scommessa migliore per unire le forze con esso, quindi è quello che sto facendo.

risposta

2

Prima di tutto, grazie agli altri due utenti.Anche il basszero avevi ragione riguardo al file blend e avrei dovuto prima controllare Wikipedia! È un binario quasi inutile della memoria di Blender.

Poco dopo aver scritto questa domanda, ho deciso di andare avanti e scrivere un loader OBJ, perché 1) mi avrebbe dato l'esperienza di caricare un formato di file 3D e 2) sembrava un bel formato comunemente usato, ma anche facile da caricare. Alla fine è stata una grande decisione, perché mi ha fatto capire, non conoscevo la differenza tra un oggetto e un gruppo, e anche io non ne sapevo molto dei materiali. Mi ha aiutato a stabilire il codice per queste strutture 3D.

Entrambe le risposte consigliano i formati basati su XML. Non voglio un formato XML. Non credo che questo sia il posto giusto per XML. Credo che questi formati siano stati creati perché XML è flessibile, universale e facile da creare per gli schemi, ma non è quello che sto cercando. Voglio un formato che sia veloce da caricare (XML non è, relativamente parlando), non deve essere flessibile o leggibile dall'uomo, e qualcosa per cui posso scrivere un importatore, piuttosto che fare affidamento su librerie XML. basszero ha anche detto "al costo di essere XML" e ha perfettamente ragione; è un costo che non ritengo valga la pena.

Il mio caricatore OBJ è terminato. L'ho separato dalle classi modello attuali e l'ho implementato con un'interfaccia MeshFactory in modo che in futuro possa scrivere un caricatore diverso se volessi ... Qual è il piano. Ho fatto più ricerche negli ultimi due giorni e ho deciso sul formato ms3d.

Il formato ms3d supporta l'animazione scheletrica (giunti) e l'animazione scheletrica dei fotogrammi chiave e supporta inoltre una mappa texture e una mappa alfa. Inoltre, è un formato binario facilmente leggibile dal computer che non spreca spazio (come XML e OBJ) con tag e etichette leggibili dall'uomo e simili.

Blender, sfortunatamente, non ha uno script di esportazione (funzionante) ms3d, quindi scriverò uno script per me stesso. Fortunatamente, non è un processo difficile, e puoi leggere 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 semplice, infatti sarà ancora più semplice del formato OBJ perché ms3d è più strutturato. Ho trovato specifications per il formato ms3d online, in stile C (genio!), Quindi sono incredibilmente auto-esplicativi e non ho altre domande sul formato. Baserò la mia implementazione su questa specifica, anche se in un secondo momento potrò implementare le mie variazioni; questo è il bello della scrittura del mio importatore ed esportatore, posso modificare il formato come ritengo opportuno.

Tutto sommato, ho deciso che questa è la soluzione migliore.

E basszero, hai perfettamente ragione, come ho visto dal mio caricatore OBJ: "Una volta che hai letto tutto, organizzazione dei dati (elenco di visualizzazione, trame, matrice di vertici, buffer dei vertici, ecc.) e il rendering è una bestia completamente diversa. "

Cruachan: no Java3D per me, sto attaccando con JOGL. In realtà io possiedo quel libro (anche se non è accessibile al momento) anche se non ricordo come ha caricato i modelli, ma sono abbastanza sicuro che ha usato i caricatori di formato Java3D che lo fanno automaticamente. Non qualcosa che sto pensando di usare ... Scusa!

-Ricket

3

Se si riesce a convivere con la geometria o si è pronti a gestire la propria trama, quindi .obj è probabilmente il formato di file 3D più semplice e ampiamente supportato. È fondamentalmente l'ascii della modellazione 3D.

Altrimenti tenderei verso vrml. È ben definito e c'è almeno un codice in giro per iniziare. Ho caricato con successo modelli vrml in java3D usando codice liberamente disponibile. Le dimensioni dei file nativi tendono ad essere grandi, ma possono essere risolte utilizzando un formato compresso.

Non consiglierei .3ds. L'unica volta che ho gestito un lettore per questo formato era in Delphi Pascal, ed è disordinato, mal definito, difficile da elaborare e tende ad avere un sacco di "variazioni" tali che nonostante sia riuscito a far esportare il mio lettore con i modelli esportati da Lo stesso 3D-MAX ha respinto bene molti modelli di altri pacchetti che si riteneva fossero in formato 3DS ma non erano formati correttamente.

AGGIUNTO: Inoltre, consiglierei di dare un'occhiata all'API Java3D e al libro O'Reilly Killer Game Programming in Java poiché anche se non si utilizza il percorso Java3D è probabile che risponda a molte delle vostre domande.

+0

io non sono così sicuro di obj, sembra estremamente inefficiente. non ho bisogno di un formato leggibile dall'uomo. cercherò in cosa rende grande vrml e forse ne creerò la mia versione ottimizzata, grazie! qualcun altro? :) – Ricket

+0

Obj è inefficiente, ma è molto standard. Potresti anche dare un'occhiata a Java3D e in particolare al libro O'Reilly "Killer Game Programming in Java" che potrebbe rispondere a molte domande. – Cruachan

1

Credo che .blend sia principalmente un dump binario di strutture di memoria dal frullatore, non ti aiuterà molto al di fuori del frullatore. Usa Blender per modellare, ma esporta in un formato diverso.

Può essere un po 'prolisso, ma ho sentito Collada riordina molto bene le informazioni 3D (a costo di essere XML). Il lato positivo è che probabilmente esiste una definizione di schema appropriata che è possibile passare attraverso JAXB risultante in un parser completo senza lavoro da parte dell'utente.

Anche i formati .md * possono essere una buona alternativa. Provengono da motori iD (q1, q2, q3, q4, doom3) e sono documentati. Contengono anche sequenze di animazioni.

Una volta letto tutto, l'organizzazione dei dati (elenco di visualizzazione, texture, array di vertici, buffer dei vertici, ecc.) E il rendering sono una bestia completamente diversa.

0

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

+0

Non ho ancora iniziato a codificare l'esportatore di blender; i miei studi mi hanno fatto molto impegnato la scorsa settimana. Che ne dici di questo: tieni d'occhio http://rickyc.org/ms3dexporter/ e quando avrò finito lo metterò lì. – Ricket

+0

Sembra un piano. Terrò d'occhio. –

+0

Ho finalmente iniziato a scrivere l'esportatore MS3D. Dovrei farlo nei prossimi giorni. So di averlo spinto indietro fino ad ora (ora che sono passati 3 mesi ...) ma se ne hai ancora bisogno, lo pubblicherò. Aggiungerò anche questo link con le informazioni su di esso e il download, poiché so che potresti non ricevere questo messaggio. – Ricket

0

C'è una fonte aperta.unisci il lettore di file che può estrarre qualsiasi informazione da un file .blend, incluse mesh, trame, scheletri e animazioni.

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

Problemi correlati