Recommandé Type de modèle 3D pour le modèle de personnage dans le jeu, chargé manuellement?

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

  •  06-09-2019
  •  | 
  •  

Question

J'écris un jeu JOGL et doivent représenter le caractère dans le jeu. Je prévois d'utiliser l'animation du squelette pour les mouvements de caractère, et bien sûr le personnage sera à la peau. Je ne peux pas sembler trouver des chargeurs bon modèle pour JOGL donc je prévois de charger moi-même filetype, en fonction des spécifications ou quelque chose. Je prévois aussi d'utiliser Blender comme mon modeleur 3D, donc un certain type qui existe là-bas serait le mieux.

Qu'est-ce que filetype recommandez-vous-je utiliser? .mélange? .x, .3ds, .md2 / 3/5, ... ?? Se souvenir Je voudrais quelque chose avec un format clairement défini afin que je puisse écrire le chargeur sans avoir à deobfuscate un format de fichier aléatoire, et il doit prendre en charge les caractéristiques mentionnées ci-dessus. Toute autre information que vous pouvez donner au sujet de pourquoi vous avez choisi et pourquoi il est préférable serait très helpeful aussi!

Merci!

EDIT: Je vais écrire un exportateur Blender MS3D. Quand je suis fini, je vais poster .

Pendant ce temps, voir ma réponse ci-dessous marquée; mais plus est passé depuis. Je ne vais pas garder cette mise à jour avec ce que je fais, mais fondamentalement je l'ai trouvé jMonkey moteur et il a déjà un importateur de MS3D et d'autres sous-systèmes que j'avais commencé l'écriture à la main. Malgré les trucs SceneGraph (ce qui est la raison pour laquelle j'était d'éviter Java3D) Je pense que ce sera mon meilleur pari d'unir leurs forces avec, de sorte que ce que je suis à.

Était-ce utile?

La solution 2

Tout d'abord, merci aux deux autres answerers. basszero Aussi, vous aviez raison sur le fichier de mélange, et j'ai vérifié Wikipedia d'abord! Il est un vidage binaire quasi-inutile de la mémoire de Blender.

Peu de temps après avoir écrit cette question, je décide d'aller de l'avant et d'écrire un chargeur OBJ, parce que 1) il me donnerait l'expérience de chargement d'un format de fichier 3D et 2) il semblait un joli format couramment utilisé, mais aussi facile charger. Il a fini par être une grande décision, parce qu'il m'a fait réaliser, je ne savais pas vraiment la différence entre un objet et un groupe, et je ne savait pas grand-chose au sujet des matériaux. Il m'a aidé à établir le code de ces structures 3D.

Les deux réponses recommandent des formats XML. Je ne veux pas un format XML. Je ne crois pas que ce soit le bon endroit pour XML. Je crois que ces formats ont été créés parce que XML est souple, universel et facile de créer des schémas pour, mais ce n'est pas ce que je cherche. Je veux un format qui est rapide à charger (XML n'est pas, relativement parlant) ont, il n'a pas à être souple ou lisible par l'homme, et quelque chose que je peux écrire un importateur, plutôt que de compter sur les bibliothèques XML. basszero même dit, « au prix d'être XML, » et il est tout à fait raison; il est un coût que je ne me sens pas vaut la charge.

Mon chargeur OBJ est fait. Je séparaient des classes de modèles réels, et mis en œuvre avec une interface MeshFactory pour que je puisse à l'avenir écrire un chargeur différent si je voulais ... Quel est le plan. Je suis en train de faire des recherches les derniers jours de couple et décidé sur le format MS3D.

Le format MS3D soutient le calage du squelette (articulations) et de l'animation du squelette keyframe, et soutient en outre une carte de texture et carte alpha. De plus, il est un format binaire lisible facilement par ordinateur qui gaspille pas d'espace (comme XML et OBJ faire) avec des étiquettes lisibles par l'homme et les étiquettes et autres.

Blender, malheureusement, ne dispose pas d'un (de travail) MS3D script d'exportation, donc je vais être en train d'écrire un script pour moi-même. Heureusement, ce n'est pas un processus difficile, et vous pouvez lire la documentation de Blender et utiliser d'autres exportateurs comme exemples. Je vais devoir brosser sur mon Python, mais sinon, il semble très simple, de ce que j'ai vu d'autres scripts.

Le côté Java des choses devrait être facile, en fait, il sera encore plus facile que le format OBJ, car MS3D est plus structuré. J'ai trouvé spécifications pour le format MS3D en ligne, dans le style C (génie!) ils sont incroyablement explicites et j'ai pas d'autres questions sur le format. Je vais fonder ma mise en œuvre hors de cette spécification, bien que je puisse à un moment plus tard, mettre en œuvre mes propres variations; qui est la grande chose à écrire mon propre importateur et exportateur, je peux modifier le format que je l'entends.

Dans l'ensemble, j'ai décidé c'est la meilleure solution.

Et basszero, vous êtes tout à fait raison, comme je l'ai vu de mes OBJ chargeur: « Une fois que vous avez tout lu, l'organisation des données (liste d'affichage, textures, tableau de vertex, vertex buffer, etc.) et le rendu est une bête complètement différente. "

Cruachan: pas Java3D pour moi, je suis coller avec JOGL. Je ne possède en fait ce livre (bien que ce n'est pas accessible pour le moment) mais je ne me souviens pas comment il les modèles chargés, mais je suis sûr qu'il a utilisé les chargeurs format Java3D qui le font automatiquement. Pas quelque chose que je prévois d'utiliser ... Désolé!

-Ricket

Autres conseils

Si vous pouvez vivre avec juste la géométrie, ou êtes prêt à gérer votre propre texturation, alors obj est probablement le plus simple et largement pris en charge le format de fichier 3D. Il est fondamentalement la ascii de la modélisation 3D.

Sinon, je tends vers VRML. Il est bien défini et il y a au moins un code autour pour vous aider à démarrer. J'ai modèles VRML chargé avec succès dans java3d en utilisant le code librement disponible. Taille du fichier natif a tendance à être grande, mais qui peut être résolu en utilisant un format compressé.

Je ne recommanderais pas .3ds. La seule fois que je l'ai traité un lecteur pour ce format était en Delphi Pascal, et il est en désordre, mal défini, difficile à traiter et a tendance à avoir beaucoup de ces « variations » que même si je réussi à obtenir mes modèles de manipulation des lecteurs exportés de lui-même 3D MAX très bien, il a rejeté de nombreux modèles d'autres paquets qui prétendent être au format 3DS, mais ne sont pas correctement formés.

AJOUTEE: Aussi je vous recommande de jeter un oeil à l'API Java3D et le livre O'Reilly tueur programmation de jeux en Java que même si vous n'allez pas dans la voie Java3D il est susceptible de répondre à beaucoup de vos questions.

Je crois blend est la plupart du temps une décharge binaire dans des structures de mémoire du mélangeur, ne va pas vous aider beaucoup en dehors du mélangeur. Utilisez Blender pour modèle, mais l'exportation vers un format différent.

Il peut être un peu bavard, mais je l'ai entendu enveloppements Collada des informations 3D très bien (au prix d'être XML). Le côté positif est qu'il ya probablement une définition de schéma propery que vous pourriez passer à travers JAXB résultant dans un analyseur complet w / pas de travail de votre part.

Les formats .md * peuvent aussi être une bonne alternative. Ils sont des moteurs de iD (q1, q2, q3, q4, doom3) et ils sont documentés. Ils contiennent également des séquences d'animations.

Une fois que vous avez tout lu, organisation des données (liste d'affichage, textures, tableau de vertex, vertex buffer, etc.) et le rendu sont une bête complètement différente.

Woah, l'homme, que vous allez libérer l'exportateur de MS3D Lorsque vous avez terminé? Et si oui, comment est-il à venir? Je dois vraiment obtenir mes mains sur un exportateur qui travaille pour l'animation et que Fragmotion utilise, et il ressemble à ce que vous faites est mon dernier espoir.

Il est un lecteur de fichiers .blend open source qui permet d'extraire des informations à partir d'un fichier .blend, y compris les mailles, les textures, le squelette et l'animation.

Voir quelques exemples en utilisant Ogre et Irrlicht ici: http://gamekit.googlecode.com

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top