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
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
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