Gibt es eine Möglichkeit, ein 3D-Modell in Android zu importieren?

Lesezeit: 3 Minuten

Benutzer-Avatar
Maciej Gryka

Ist es möglich, ein einfaches 3D-Modell (z. B. in 3DS MAX) zu erstellen und es dann in Android zu importieren?

Benutzer-Avatar
Maciej Gryka

Da bin ich hingekommen:

  • Ich habe Googles APIDemos als Ausgangspunkt verwendet – dort befinden sich rotierende Würfel, die jeweils durch zwei Arrays spezifiziert werden: Scheitelpunkte und Indizes.
  • Ich habe mein Modell mit Blender erstellt und als OFF-Datei exportiert – es ist eine Textdatei, die alle Scheitelpunkte und dann Gesichter in Bezug auf diese Scheitelpunkte auflistet (indizierte Geometrie).
  • Dann habe ich eine einfache C++-App erstellt, die das ausschaltet und als zwei XMLs mit Arrays schreibt (eines für Vertices und eines für Indizes).
  • Diese XML-Dateien werden dann nach res/values ​​kopiert und auf diese Weise kann ich die darin enthaltenen Daten Arrays wie diesem zuweisen:

    int vertices[] = context.getResources().getIntArray(R.array.vertices);
  • Ich muss auch die Anzahl der hier einzuzeichnenden Gesichter manuell ändern: gl.glDrawElements(GL10.GL_TRIANGLES, 212*6, GL10.GL_UNSIGNED_SHORT, mIndexBuffer); – Sie finden diese Nummer (in diesem Fall 212) oben in der OFF-Datei

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

Sie können es in das ASE-Format exportieren. aus ASE können Sie es manuell oder programmgesteuert in Ihren Code konvertieren. Sie benötigen Vertex für Vertices-Array und Faces für Indizes in Android. Vergessen Sie nicht, dass Sie einstellen müssen

gl.glFrontFace(GL10.GL_CCW);

weil 3ds max standardmäßig gegen den uhrzeigersinn ist.

  • Danke, das kommt dem sehr nahe, was ich getan habe – ich habe stattdessen OFF und Blonder verwendet.

    – Maciej Gryka

    12. April 2009 um 17:38 Uhr

Es sollte möglich sein. Sie können die Datei als Datendatei mit Ihrem Programm haben (und als solche wird sie auf den Emulator geschoben und für die Installation auf einem tatsächlichen Gerät gepackt). Dann können Sie einen Modelllader und -betrachter in Java schreiben, indem Sie die Android- und GLES-Bibliotheken verwenden, um das Modell anzuzeigen.

Spezifische Ressourcen dazu sind jedoch wahrscheinlich begrenzt. 3ds ist ein proprietäres Format, daher sind Lader von Drittanbietern knapp und werden größtenteils rückentwickelt. Andere Formate (wie Blender oder Milkshape) sind offener und Sie sollten in der Lage sein, ziemlich einfach Details zum Schreiben eines Ladeprogramms für sie in Java zu finden.

Benutzer-Avatar
mrYogi

Hast du min3d für Android ausprobiert? Es unterstützt 3ds max-, obj- und md2-Modelle.

Bei Android bin ich mir nicht sicher, aber im Allgemeinen benötigen Sie ein Skript in 3DS Max, das die benötigte Formatierung manuell aus dem Modell herausschreibt.

Ob es eine für Android gibt oder nicht, weiß ich nicht.

Sie können das 3DS MAX-Modell auch mit konvertieren 3D-Objektkonverter

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

Dieses Tool kann 3ds-Objekte in das Text-\XML-Format oder C-Code konvertieren. Bitte beachten Sie, dass das Tool nicht kostenlos ist. Sie können es 30 Tage lang testen. ‘C’-Code und XML-Konverter sind verfügbar.

‘c’ OpenGL-Ausgabebeispiel:

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

Sie können dann diese Sammlungen von Objekten in Ihren Java-Code migrieren.

1179260cookie-checkGibt es eine Möglichkeit, ein 3D-Modell in Android zu importieren?

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy