Domanda

È possibile creare un semplice modello 3D (ad esempio in 3DS MAX) e quindi importarlo su Android?

È stato utile?

Soluzione

Ecco dove sono arrivato:

  • Ho usato APIDemos di Google come punto di partenza: ci sono cubi rotanti, ciascuno specificato da due array: vertici e indici.
  • Ho creato il mio modello usando Blender ed esportato come file OFF - è un file di testo che elenca tutti i vertici e quindi le facce in termini di tali vertici (geometria indicizzata)
  • Quindi ho creato una semplice app C ++ che la disattiva e la scrive come due XML contenenti array (una per vertici e una per indici)
  • Questi file XML vengono quindi copiati in res / valori e in questo modo posso assegnare i dati che contengono agli array in questo modo:
    int vertices [] = context.getResources (). getIntArray (R.array.vertices);
  • Devo anche cambiare manualmente il numero di facce da disegnare qui: gl.glDrawElements (GL10.GL_TRIANGLES, 212 * 6, GL10.GL_UNSIGNED_SHORT, mIndexBuffer); - puoi trovare che numero (212 in questo caso) nella parte superiore del file OFF

Qui puoi trovare la pagina del mio progetto, che utilizza questa soluzione: Progetto Github > vsiogap3d

Altri suggerimenti

puoi esportarlo nel formato ASE. da ASE, puoi convertirlo nel tuo codice manualmente o programmaticamente. Avrai bisogno del vertice per l'array dei vertici e delle facce per gli indici in Android. non dimenticare che devi impostare

gl.glFrontFace(GL10.GL_CCW);

perché il valore predefinito di 3ds max è in senso antiorario.

Dovrebbe essere possibile. Puoi avere il file come file di dati con il tuo programma (e come tale verrà inserito nell'emulatore e impacchettato per l'installazione su un dispositivo reale). Quindi puoi scrivere un caricatore di modelli e un visualizzatore in Java usando le librerie Android e GLES per visualizzare il modello.

Tuttavia, risorse specifiche su questo sono probabilmente limitate. 3ds è un formato proprietario, quindi caricatori di terze parti sono in offerta insufficiente e per lo più ingegnerizzati al contrario. Altri formati (come blender o milkshape) sono più aperti e dovresti essere in grado di trovare i dettagli sulla scrittura di un caricatore per loro in Java abbastanza facilmente.

Hai provato min3d per Android? Supporta i modelli 3ds max, obj e md2.

Non sei sicuro di Android in particolare, ma in generale hai bisogno di uno script in 3DS Max che scriva manualmente la formattazione di cui hai bisogno dal modello.

Non so se ne esiste uno per Android, non lo so.

Puoi farlo anche con Convertitore oggetti 3D

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

Questo strumento può convertire l'oggetto 3ds in formato text \ xml o codice c.

Esempio di output 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();

o 'c' output

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};

Quindi puoi semplicemente sostituire parti di questo codice con il codice Java.

P.S. Questo strumento non è gratuito e puoi utilizzarlo solo per un periodo di prova di 30 giorni. Ma i convertitori di codice "c" e xml sono disponibili per questo periodo.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top