Est-il possible d’importer un modèle 3D dans Android?

Est-il possible de créer un modèle 3D simple (par exemple dans 3DS MAX) puis de l’importer dans Android?

C’est là que je dois:

  • J’ai utilisé APIDemos de Google comme sharepoint départ – il y a des cubes en rotation, chacun étant spécifié par deux tableaux: les sumts et les index.
  • J’ai construit mon modèle à l’aide de Blender et je l’ai exporté en tant que fichier OFF – c’est un fichier texte qui répertorie tous les sumts, puis les faces en fonction de ces sumts (géomésortinge indexée).
  • Ensuite, j’ai créé une application C ++ simple qui prend cet OFF et l’écrit comme deux fichiers XML contenant des tableaux (un pour les sumts et un pour les index)
  • Ces fichiers XML sont ensuite copiés dans res / values ​​et de cette façon, je peux affecter les données qu’ils contiennent aux tableaux comme ceci:
    int vertices[] = context.getResources().getIntArray(R.array.vertices);
  • Je dois également modifier manuellement le nombre de faces à dessiner ici: gl.glDrawElements(GL10.GL_TRIANGLES, 212*6, GL10.GL_UNSIGNED_SHORT, mIndexBuffer); – vous pouvez trouver ce numéro (212 dans ce cas) en haut du fichier OFF

Ici vous pouvez trouver ma page de projet, qui utilise cette solution: Projet Github> vsiogap3d

vous pouvez l’exporter au format ASE. ASE, vous pouvez le convertir manuellement ou par programme dans votre code. Vous aurez besoin d’un sumt pour le tableau des sumts et des faces pour les index dans Android. n’oublie pas que tu dois mettre

 gl.glFrontFace(GL10.GL_CCW); 

car 3ds max par défaut est dans le sens antihoraire.

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 envoyé sur l’émulateur et empaqueté pour être installé sur un périphérique réel). Vous pouvez ensuite écrire un chargeur de modèle et un visualiseur 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. 3ds est un format propriétaire, donc les chargeurs tiers sont peu nombreux et la plupart du temps désossé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 chargeur pour eux dans Java assez facilement.

Avez-vous essayé min3d pour Android? Il supporte les modèles 3ds max, obj et md2.

Vous ne savez pas exactement à propos d’Android, mais en général, vous avez besoin d’un script dans 3DS Max qui écrit manuellement le format dont vous avez besoin à partir du modèle.

Quant à savoir si on existe pour Android ou pas, je ne sais pas.

Vous pouvez le faire aussi avec 3D Object Converter

http://web.t-online.hu/karpo/

Cet outil peut convertir l’object 3ds au format text \ xml ou c code.

Exemple de sortie gl ‘c’ ouverte:

 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 certaines parties de ce code par du code Java.

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