Est-il possible de créer un modèle 3D simple (par exemple dans 3DS MAX) puis de l'importer sur Android?
Voilà où je suis arrivé:
int vertices[] = context.getResources().getIntArray(R.array.vertices);
gl.glDrawElements(GL10.GL_TRIANGLES, 212*6, GL10.GL_UNSIGNED_SHORT, mIndexBuffer);
- vous pouvez trouver ce nombre (212 dans ce cas) en haut du fichier OFFIci vous pouvez trouver ma page de projet, qui utilise cette solution: projet Github> vsiogap3d
vous pouvez l'exporter au format ASE. depuis ASE, vous pouvez le convertir en votre code manuellement ou par programme. Vous aurez besoin d'un sommet pour le tableau de sommets et de faces pour les indices dans Android. n'oubliez pas que vous devez régler
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 poussé sur l'émulateur et empaqueté pour l'installation sur un périphérique réel). Ensuite, vous pouvez écrire un chargeur et une visionneuse de modèle dans Java en utilisant les bibliothèques Android et GLES pour afficher le modèle).
Les ressources spécifiques à ce sujet sont cependant probablement limitées. 3ds étant un format de propriété, les chargeurs tiers sont en quantité insuffisante et sont pour la plupart rétroconçus. 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 prend en charge les modèles 3ds max, obj et md2.
Je ne sais pas exactement Android spécifiquement, mais en général, vous avez besoin d'un script dans 3DS Max qui écrit manuellement la mise en forme dont vous avez besoin à partir du modèle.
Quant à savoir s'il existe pour Android ou non, je ne sais pas.
Vous pouvez également le faire avec 3D Object Converter
Cet outil peut convertir un objet 3ds au format texte\xml ou code c.
Exemple de sortie open gl '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 sortie "c"
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 Java code.
P.s. Cet outil n'est pas gratuit et vous ne pouvez l'utiliser que pendant une période d'essai de 30 jours. Mais le code "c" et les convertisseurs xml sont disponibles pour cette période.