Guarde matrices de gran tamaño en un archivo en Android

Estoy creando una aplicación para Android con la vista 3D OpenGL ES que consistirá en modelos 3D importados de archivos obj wavefront. Un archivo obj típico de Wavefront contendrá solo objetos triangulados y podría verse así:

v 1.00000 1.00000 0
v 1.00000 -1.00000 0
v -1.00000 -1.00000 0
vt 1.00000 1.00000 0
vt 1.00000 -1.00000 0
vt -1.00000 -1.00000 0
vn 1.00000 1.00000 0
vn 1.00000 -1.00000 0
vn -1.00000 -1.00000 0
f 1/1/1 2/2/2 3/3/3

Al final, todo se convertirá en una sola matriz (unidimensional) de flotadores. El problema es que este archivo es enorme y cargarlo como cadenas y procesarlo lleva una gran cantidad de tiempo. (Necesitamos cargar el archivo en líneas y luego dividirlas en tokens, lo que requiere mucho tiempo y memoria). Estoy buscando una forma alternativa y una solución para almacenar una matriz lista. La única idea que tengo es leer el archivo .obj y crear la matriz deseada. Después de eso, serialice la matriz y para cada próxima ejecución de la aplicación, simplemente lea la matriz serializada. ¿Es una buena idea o hay alguna otra forma mejor en Android? ¡Recuerde que hay muchos datos que manejar! Lo que estoy buscando es una buena solución, creo que no necesitamos preocuparnos por el espacio en el disco duro, ¡solo nos preocupamos por el tiempo de carga y el uso de la memoria RAM!

preguntado el 27 de agosto de 11 a las 19:08

1 Respuestas

Yo mismo enfrenté este problema hace un tiempo cuando estaba desarrollando mi propia aplicación (https://market.android.com/details?id=de.hsrm.objectify) y la mejor solución para este AFAIK es serializar todos los datos y escribirlos en la tarjeta SD. Guardar y cargar objetos desde un almacenamiento externo no es tan lento como podría pensar.

La carga de ~ 15.000 vértices y normales con textura tarda aproximadamente ~ 1 segundo. Al menos en mi caso.

Respondido 28 ago 11, 00:08

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.