¿Es posible crear un modelo 3D simple (por ejemplo, en 3DS MAX) y luego importarlo a Android?¿Hay alguna forma de importar un modelo 3D a Android?
Respuesta
Ahí es donde llegué a:
- He usado APIDemos de Google como punto de partida - hay cubos giratorios de allí, cada uno especificado por dos matrices: vértices y los índices.
- Construí mi modelo usando Blender y lo exporté como archivo OFF - es un archivo de texto que muestra todos los vértices y luego caras en términos de estos vértices (geometría indexada)
- Luego creé un simple C++ aplicación que lo desactiva y lo escribe como dos XML que contienen matrices (uno para vértices y uno para índices)
- Estos archivos XML se copian a res/values y de esta manera puedo asignar los datos que contienen a matrices como esta:
int vertices[] = context.getResources().getIntArray(R.array.vertices);
- También necesito cambiar manualmente el número de caras para dibujar aquí:
gl.glDrawElements(GL10.GL_TRIANGLES, 212*6, GL10.GL_UNSIGNED_SHORT, mIndexBuffer);
- puede encontrar ese número (212 en este caso) en la parte superior de la O FF archivo
Aquí puede encontrar mi página del proyecto, que utiliza esta solución:
No estoy seguro acerca de Android específicamente, pero en general necesita una secuencia de comandos en 3DS Max que escribe manualmente el formato que necesita del modelo.
En cuanto a si existe para Android o no, no sé.
Debería ser posible. Puede tener el archivo como un archivo de datos con su programa (y como tal, se insertará en el emulador y se empaquetará para su instalación en un dispositivo real). Luego puede escribir un modelo de cargador y visor en Java usando las bibliotecas Android y GLES para mostrar el modelo.
Sin embargo, los recursos específicos sobre esto probablemente sean limitados. 3ds es un formato de propiedad, por lo que los cargadores de terceros tienen un suministro escaso y, en su mayoría, ingeniería inversa. Otros formatos (como Blender o Milkshape) son más abiertos y debería ser capaz de encontrar detalles sobre cómo escribir un cargador para ellos en Java con bastante facilidad.
puede exportarlo al formato ASE. de ASE, puede convertirlo a su código de forma manual o programáticamente. Necesitarás vértices para vértices y caras para índices en Android. No olvide que usted tiene que fijar
gl.glFrontFace(GL10.GL_CCW);
porque por defecto 3ds max es hacia la izquierda.
Ha intentado min3d para android? Admite los modelos 3ds max, obj y md2.
Buen tutorial sobre esta lib: http://www.mat-d.com/site/tutorial-load-a-3d-obj-model-with-min3d-for-android/ – Evgeny
Usted puede hacer esto también con el convertidor de objetos 3D
Esta herramienta puede convertir 3ds objeto a formato XML de texto \ o código c.
Ejemplo de salida de 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' de salida
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};
A continuación, puede simplemente reemplazar partes de este código por código java.
P.s. Esta herramienta no es gratuita y solo puede usarla durante un período de prueba de 30 días. Pero el código 'c' y los convertidores xml están disponibles para este período.
- 1. construyendo un visor de modelo 3d android?
- 2. Importar modelo desde 3dStudioMax a THREE.js
- 3. ¿Hay alguna manera de importar/exportar SourceGear Vault a Git
- 4. ¿Hay alguna forma de usar @ Html.HiddenFor para el modelo completo?
- 5. Android: ¿Hay alguna forma de cambiar el idioma predeterminado de Android a un nuevo idioma?
- 6. ¿Hay alguna forma de conectar un dispositivo Android a una impresora externa a través de Bluetooth?
- 7. ¿hay alguna forma de importar un huevo de Python de la memoria, pero no del disco?
- 8. ¿Hay alguna forma de generar automáticamente ObjectId cuando se renueva un modelo de mangosta?
- 9. ¿Hay alguna forma de multirreproducir un SqlDataReader?
- 10. ¿Hay alguna forma de exportar un objeto ActiveRecord a seeds.rb?
- 11. ¿Hay alguna forma de agregar columnas adicionales a un jstree?
- 12. ¿Hay alguna forma de acceder dinámicamente a un superglobal?
- 13. ¿Hay alguna forma de comunicarse con dispositivos USB en Android?
- 14. ¿Hay alguna forma de crear un formulario con formtastic sin un modelo?
- 15. ¿Hay alguna forma de actualizar automáticamente la aplicación en Android?
- 16. ¿Hay alguna forma de escribir aplicaciones de Android en PHP?
- 17. ¿Hay alguna manera de dibujar primitivas en 3D con Python?
- 18. Mostrar un modelo 3D en JavaScript/HTML5
- 19. ¿Hay alguna forma de definir el atributo de un modelo como siempre html_safe?
- 20. ¿Cómo se exporta un modelo 3D de Cinema4D a three.js?
- 21. Rieles: ¿hay alguna forma de actualizar un solo atributo?
- 22. ¿Hay alguna forma de ignorar las advertencias inversas faltantes al compilar un modelo de objetos gestionados?
- 23. ¿Hay alguna forma o estructura en python para crear un modelo de objetos a partir de un xml?
- 24. ¿Hay alguna forma de importar paquetes de su proyecto actual en una hoja de cálculo?
- 25. Necesito agregar un modelo 3D interactivo a mi aplicación que no sea en 3D
- 26. ¿Hay alguna forma de vincular una lista de casilla de verificación a un modelo en asp.net mvc
- 27. ¿Hay alguna forma de generar una tabla LaTeX a partir de un objeto de ajuste modelo lme4 mer?
- 28. ¿Hay alguna forma de importar ICS mediante programación en Google Calendar?
- 29. Girar modelo 3D en XNA
- 30. ¿Hay alguna forma de cargar json desde un subdominio?
Gracias, eso está muy cerca de lo que hice, he usado OFF y Blonder en su lugar. –