Frage

Ist es möglich, ein einfaches 3D-Modell (zum Beispiel in 3DS MAX) zu erstellen und sie dann auf Android importieren?

War es hilfreich?

Lösung

Das ist, wo ich an:

  • Ich habe Google APIDemos als Ausgangspunkt verwendet - es gibt rotierende Würfel dort jeweils angegeben durch zwei Arrays: Eckpunkte und Indizes
  • .
  • Ich habe mein Modell bauen Blender mit und als OFF-Datei exportiert - es ist eine Textdatei, die die Eckpunkte alle auflistet und dann steht in Bezug auf diese Eckpunkte (indexiert Geometrie)
  • Dann habe ich ein einfachen C ++ App erstellt, die diese OFF nimmt und schreibt sie als zwei XMLs Arrays (ein für Ecken und ein für Indizes), die
  • Diese XML-Dateien dann in res / Werte kopiert und auf diese Weise ich die Daten zuordnen können sie enthalten, wie dies auf Arrays:
    int vertices[] = context.getResources().getIntArray(R.array.vertices);
  • Ich brauche auch die Anzahl der Flächen manuell zu ändern, hier gezogen werden: gl.glDrawElements(GL10.GL_TRIANGLES, 212*6, GL10.GL_UNSIGNED_SHORT, mIndexBuffer); - Sie diese Nummer (212 in diesem Fall) auf der Oberseite der OFF-Datei finden

Hier können Sie meine Projektseite finden, die diese Lösung verwendet: Github-Projekt> vsiogap3d

Andere Tipps

Sie können es ASE-Format exportieren. von ASE, können Sie es zu Ihrem Code manuell oder programmatisch konvertieren. Sie werden Vertex für Scheitel Array benötigen und steht für Indizes in Android. vergessen Sie nicht, Sie setzen müssen,

gl.glFrontFace(GL10.GL_CCW);

da 3ds max Standard ist gegen den Uhrzeigersinn.

Es sollte möglich sein. Sie können die Datei als eine Datendatei mit Ihrem Programm haben (und als solche werden sie auf den Emulator und verpackt für die Installation auf einem Gerät geschoben werden). Dann können Sie ein Modell loader und Viewer in Java schreiben, um die Android und GLES Bibliotheken mit Hilfe des Modells angezeigt werden.

Spezifische Ressourcen auf diese sind aber wahrscheinlich begrenzt. 3ds ist ein proprietry Format so 3rd-Party-Lader in shortish Versorgung sind und meist Reverse Engineering. Andere Formate (wie Mixer oder Milkshape) sind offener und Sie sollten Details Lage zu finden, relativ leicht einen Lader für sie in Java zu schreiben.

Haben Sie versucht min3d für Android? Es unterstützt 3ds max, OBJ und md2 Modelle.

Nicht sicher Android speziell, aber im Allgemeinen Sie ein Skript in 3DS Max benötigen, die aus der Formatierung Sie aus dem Modell von Hand schreibt müssen.

Zur Frage, ob eine solche existiert für Android oder nicht, ich weiß es nicht.

Sie können dies auch mit 3D Object Converter

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

Dieses Tool kann 3ds konvertieren Objekt in Text \ xml-Format oder C-Code.

Beispiel für Open GL 'c' Ausgabe:

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();

oder 'c' Ausgabe

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

Dann können Sie nur Teile dieses Codes durch Java-Code ersetzen.

P. S. Dieses Tool ist nicht kostenlos und Sie können es verwenden, nur für 30-tägige Testversion. Aber ‚c‘ Code und XML-Konverter ist verfügbar für diesen Zeitraum.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top