Ist es möglich, ein einfaches 3D-Modell (z. B. in 3DS MAX) zu erstellen und es dann in Android zu importieren?Gibt es eine Möglichkeit, ein 3D-Modell in Android zu importieren?
Antwort
Das ist, wo ich bekam:
- Ich habe Google APIDemos als Ausgangspunkt verwendet - es gibt rotierende Würfel dort, die jeweils von zwei Arrays angegeben: Eckpunkte und Indizes.
- Ich habe mein Modell mit Blender und exportierte es als OFF-Datei - es ist eine Textdatei, die alle Scheitelpunkte und dann Gesichter in Bezug auf diese Scheitelpunkte (indizierte Geometrie)
- Dann habe ich ein einfaches C++ erstellt App, die das ausnimmt und es als zwei XMLs schreibt, die Arrays enthalten (eins für Scheitelpunkte und eins für Indizes)
- Diese XML-Dateien werden dann in res/values kopiert und so kann ich die Daten, die sie enthalten, solchen Arrays zuweisen:
int vertices[] = context.getResources().getIntArray(R.array.vertices);
- Ich muss auch die Anzahl der Gesichter, die hier gezeichnet werden, manuell ändern:
gl.glDrawElements(GL10.GL_TRIANGLES, 212*6, GL10.GL_UNSIGNED_SHORT, mIndexBuffer);
- Sie können diese Zahl (212 in diesem Fall) oben auf dem O finden FF-Datei
Hier können Sie meine Projektseite finden, die diese Lösung verwendet:
Nicht sicher über Android speziell, aber im Allgemeinen benötigen Sie ein Skript in 3DS Max, das manuell die erforderliche Formatierung aus dem Modell schreibt.
Ob es für Android existiert oder nicht, weiß ich nicht.
Es sollte möglich sein. Sie können die Datei als eine Datei mit Ihrem Programm haben (und als solche wird es auf den Emulator geschoben und für die Installation auf einem tatsächlichen Gerät verpackt). Dann können Sie einen Model Loader und Viewer in Java schreiben, indem Sie die Android- und GLES-Bibliotheken verwenden, um das Modell anzuzeigen.
Bestimmte Ressourcen hierzu sind jedoch wahrscheinlich begrenzt. 3ds ist ein proprietry Format, so dass Drittanbieter-Lader in Kürze zur Verfügung stehen und meist reverse engineered sind. Andere Formate (wie Blender oder Milkshape) sind offener und Sie sollten in der Lage sein, Details zum Schreiben eines Loaders für sie in Java ziemlich leicht zu finden.
können Sie es in das ASE-Format exportieren. von ASE können Sie es manuell oder programmatisch in Ihren Code konvertieren. Sie benötigen Vertex für Vertices Array und Flächen für Indizes in Android. nicht vergessen Sie
gl.glFrontFace(GL10.GL_CCW);
weil 3ds max Standard gegen den Uhrzeigersinn ist gesetzt haben.
Haben Sie versucht, min3d für Android? Es unterstützt die Modelle 3ds max, obj und md2.
Gute Tutorial über diese lib: http://www.mat-d.com/site/tutorial-load-a-3d-obj-model-with-min3d-for-android/ – Evgeny
Sie können dies mit 3D Object Converter tun auch
Dieses Tool kann 3ds Text \ xml-Format oder C-Code konvertieren Objekt.
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.
Ps.s. Dieses Tool ist nicht kostenlos und Sie können es nur für eine 30-tägige Testphase verwenden. Aber 'c' Code und XML Konverter sind für diesen Zeitraum verfügbar.
Danke, das ist sehr nah an dem, was ich getan habe - ich habe stattdessen OFF und Blonder verwendet. –