Question

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

Était-ce utile?

La solution

C'est là où je suis arrivé:

  • J'ai utilisé l'APIDemos de Google comme point de départ: des cubes rotatifs y sont spécifiés, chacun étant spécifié par deux tableaux: les sommets 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 sommets, puis les faces, en fonction de ces sommets (géométrie indexée)
  • Ensuite, j'ai créé une application C ++ simple qui supprime OFF et l'écrit sous forme de deux XML contenant des tableaux (un pour les sommets et l'autre pour les index)
  • Ces fichiers XML sont ensuite copiés dans les res / values. Ainsi, je peux affecter les données qu’ils contiennent à des tableaux de ce type:
    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 cela. numéro (212 dans ce cas) en haut du fichier OFF

Vous trouverez ici la page de mon projet, qui utilise cette solution: projet Github > vsiogap3d

Autres conseils

vous pouvez l'exporter au format ASE. ASE, vous pouvez le convertir en code manuellement ou par programme. Vous aurez besoin d'un sommet pour le tableau de sommets et de faces pour les index sous Android. n'oubliez pas que vous devez définir

gl.glFrontFace(GL10.GL_CCW);

parce que 3ds max par défaut est dans le sens anti-horaire.

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 empaqueté pour l'installation sur un périphérique réel). Vous pouvez ensuite écrire un chargeur de modèles et un visualiseur en 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, de sorte que les chargeurs tiers sont en nombre insuffisant et principalement en ingénierie inverse. Les autres formats (tels que blender ou milkshape) sont plus ouverts et vous devriez pouvoir trouver assez de détails pour écrire un chargeur en java assez facilement.

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

Vous ne connaissez pas précisément Android, mais vous avez généralement besoin d'un script dans 3DS Max qui écrit manuellement la mise en forme souhaitée dans le modèle.

Quant à savoir s’il en existe un pour Android ou non, je ne le sais pas.

Vous pouvez également le faire avec Convertisseur d'objets 3D

.

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

Cet outil peut convertir un objet 3ds au format texte \ xml ou code c.

Exemple de sortie ouverte '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 des parties de ce code par du 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.

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