android - started - Carga de texturas y escena asíncrona sin fisuras-Unity & GearVR
unity vr (1)
Tengo dos problemas principales con Unity (5.3.4p1) en GearVR con Samsung S6:
1) carga de escena asíncrona. ¿Hay algún cambio que pueda cargar una nueva escena en el fondo sin ver pequeñas heladas? La escena tiene ~ 60k triángulos y usa un par de texturas de 4k y ~ 10 texturas de otros 2k. Cuando esta escena se está cargando, hay múltiples heladas cortas. Sé que puedo evitar esto desvaneciéndome en negro y luego comenzando a cargar el nivel. Pero lleva ~ 10 segundos y el usuario puede verse confundido al ver la pantalla en negro durante tanto tiempo con los auriculares VR encendidos.
2) Crear texturas a partir de imágenes descargadas usando la clase WWW. Utilizo la imagen 360 4k mostrada en un domo en otra escena. Cuando intento descargar una textura (4k, PNG o JPG) en tiempo de ejecución, se realiza de forma asincrónica. Pero la Unidad se congela durante 2-3 segundos cuando uso:
Texture2D myTexture = www.texture;
¿Hay alguna opción para evitar esto que no sea utilizar bytes descargados y descomprimir JPG o PNG utilizando un algoritmo que no sea Unity en segundo plano y luego cargar valores rgb creados a una nueva textura? El buen ejemplo de carga de textura suave se puede ver en la aplicación Flickr VR, pero dudo que hayan usado Unity para crear esta aplicación.
Estos dos problemas también ocurren en Oculus Rift, pero son menos notorios debido a un mejor rendimiento de la PC.
En general, quiero lograr una experiencia de carga suave en Gear VR usando Unity. ¿Es esto de alguna manera posible?
Esta pregunta debería haberse publicado como dos preguntas separadas, pero aún así:
AD 1: Agregue una pequeña escena de precargador, renderícela al usuario y ellos carguen la escena principal. Timewarp aún debería estar funcionando para que los cambios de orientación de la cabeza sean visibles.
AD 2: los dispositivos Android no pueden representar jpeg o pngs. Deben descomprimirlos en texturas descomprimidas muy grandes, cargar en la memoria de nuevo y luego renderizar. Esto requiere mucho tiempo y ram.
Lo que puede hacer es tener las texturas en el formato nativo DXT o ETC y cargarlas como una textura usted mismo. Tuve el mismo problema y esto ha acelerado la carga de mis texturas casi 10 veces. Usan menos memoria también.
Tenga en cuenta que el tamaño de descarga será mayor y, dependiendo del formato de textura, es posible que tenga que tener diferentes archivos para diferentes plataformas.