Est-il possible de créer un modèle 3D simple (par exemple dans 3DS MAX), puis de l'importer sur Android?Existe-t-il un moyen d'importer un modèle 3D dans Android?
Répondre
C'est là que je suis arrivé à:
- Je l'ai utilisé les APIDemos de Google comme point de départ - il y a des cubes rotatifs là-dedans, chacun spécifié par deux tableaux: sommets et indices.
- J'ai construit mon modèle en utilisant Blender et l'ai exporté en tant que fichier OFF - c'est un fichier texte qui liste tous les sommets puis les faces en fonction de ces vertices (géométrie indexée)
- Puis j'ai créé un simple C++ application qui enlève cette valeur et l'écrit comme deux XML contenant des tableaux (un pour les sommets et un pour les index)
- Ces fichiers XML sont ensuite copiés dans res/values et ainsi je peux assigner les données qu'ils contiennent à des tableaux comme ceci:
int vertices[] = context.getResources().getIntArray(R.array.vertices);
- J'ai également besoin de changer manuellement le nombre de faces à dessiner ici:
gl.glDrawElements(GL10.GL_TRIANGLES, 212*6, GL10.GL_UNSIGNED_SHORT, mIndexBuffer);
- vous pouvez trouver ce nombre (212 dans ce cas) sur le O fichier FF
vous pouvez trouver ici ma page de projet, qui utilise cette solution:
Vous ne savez pas exactement sur Android, mais généralement vous avez besoin d'un script 3DS Max qui écrit manuellement le format dont vous avez besoin à partir du modèle. Quant à savoir si un existe pour Android ou non, je ne sais pas.
Cela devrait être possible. Vous pouvez avoir le fichier en tant que fichier de données avec votre programme (et en tant que tel, il sera poussé sur l'émulateur et emballé pour l'installation sur un périphérique réel). Ensuite, vous pouvez écrire un chargeur de modèle et une visionneuse dans Java en utilisant les bibliothèques Android et GLES pour afficher le modèle.
Les ressources spécifiques à ce sujet sont probablement limitées cependant. 3ds est un format propriétaire, donc les chargeurs tiers sont en rupture de stock et la plupart du temps inversés. D'autres formats (tels que blender ou milkshape) sont plus ouverts et vous devriez pouvoir trouver des détails sur l'écriture d'un loader pour eux en java assez facilement.
vous pouvez l'exporter au format ASE. de ASE, vous pouvez le convertir manuellement ou par programmation. Vous aurez besoin de vertex pour le tableau vertices et de visages pour les index sous Android. n'oubliez pas que vous devez définir
gl.glFrontFace(GL10.GL_CCW);
, car par défaut 3ds max est dans le sens antihoraire.
Avez-vous essayé min3d pour android? Il supporte les modèles 3ds max, obj et md2.
Bon tutoriel sur cette lib: http://www.mat-d.com/site/tutorial-load-a-3d-obj-model-with-min3d-for-android/ – Evgeny
Vous pouvez le faire aussi avec 3D Object Converter
Cet outil peut convertir objet 3ds au texte \ format xml ou code c.
Exemple de sortie de gl ouvert 'c':
glDisable(GL_TEXTURE_2D);
glEnable(GL_LIGHTING);
glEnable(GL_NORMALIZE);
GLfloat Material_1[] = { 0.498039f, 0.498039f, 0.498039f, 1.000000f };
glBegin(GL_TRIANGLES);
glMaterialfv(GL_FRONT,GL_DIFFUSE,Material_1
glNormal3d(0.452267,0.000000,0.891883);
glVertex3d(5.108326,1.737655,2.650969);
glVertex3d(9.124107,-0.002484,0.614596);
glVertex3d(9.124107,4.039649,0.614596);
glEnd();
ou 'c' Sortie
Point3 Object1_vertex[] = {
{5.108326,1.737655,2.650969},
{9.124107,-0.002484,0.614596},
{9.124107,4.039649,0.614596}};
long Object1_face[] = {
3,0,1,2,
3,3,4,5
3,6,3,5};
Ensuite, vous pouvez simplement remplacer les pièces de ce code par le code java.
P.s. Cet outil n'est pas gratuit et vous ne pouvez l'utiliser que pour une période d'essai de 30 jours. Mais le code 'c' et les convertisseurs XML sont disponibles pour cette période.
- 1. Rendre un modèle 3D transparent
- 2. Comment présenter un sous-modèle dans une scène 3D?
- 3. Implémenter un RadioButtonPreference dans Android
- 4. déplacer un point dans l'espace 3D
- 5. Existe-t-il un moyen de créer un répondeur personnalisé dans Android?
- 6. Pourquoi OpenGLES étire mon modèle 3D?
- 7. Comment ouvrir un SMS spécifique dans Android
- 8. Modèle 3D à intégrer dans la fenêtre d'affichage
- 9. Faire un assistant comme application dans Android
- 10. Application en place des transformations au modèle 3D dans WPF
- 11. Android, obtenir un enfant DecorView
- 12. Python d'itération sur un tableau 3D
- 13. Comment supprimer un contact programme dans Android
- 14. Comment utiliser un widget onglet dans Android?
- 15. Comment créer un affichage DataGrid dans Android?
- 16. Existe-t-il un moyen d'utiliser un référentiel comme "modèle" pour démarrer un nouveau référentiel?
- 17. Obtenir un groupe d'utilisateurs dans un modèle
- 18. Comment créer un camembert 3D? -Asp.net MVC
- 19. Comment créer un astérisque dans un EditText Android?
- 20. Quel est un bon moyen d'assigner un objet modèle à un symbole après l'avoir sauvegardé?
- 21. WPF et 3D comment changer un point de position unique dans l'espace 3D?
- 22. Quelle est la meilleure façon de construire un jeu sur un 3D-Engine existant
- 23. séparatrices ManyToManyFields dans un modèle
- 24. Dans Django, existe-t-il un moyen facile de représenter un champ de texte en tant que modèle dans un modèle?
- 25. Existe-t-il un moyen facile de modéliser une forme de cœur en 3D?
- 26. Effets 3D dans un jeu 2D utilisant OpenGL
- 27. Joindre deux sphères avec un cylindre dans WPF 3D
- 28. Éléments 3D en tant qu'éléments dans un ListBox WPF
- 29. Android: Comment décompresser un fichier zip crypté
- 30. Inclure un contenu non-Facelet dans un modèle Facelet
Merci, c'est très proche de ce que j'ai fait - j'ai utilisé OFF et Blonder à la place. –