jak*_*.sz 5 android unity-game-engine oculus unity5 gear-vr
我在使用三星S6的GearVR上的Unity(5.3.4p1)遇到两个主要问题:
1)异步场景加载.是否有任何变化我可以在背景中加载新场景而不会看到小的冻结?场景有~60k三角形,使用了几个4k纹理和~10个其他2k纹理.当这个场景加载时,有多个短暂的冻结.我知道我可以通过淡出黑色然后开始加载级别来避免这种情况.但是需要大约10秒钟,用户可能会因为看到黑色屏幕而长时间使用VR耳机而感到困惑.
2)使用WWW类下载的图像创建纹理.我在另一个场景中使用360 4k图像显示在圆顶上.当我尝试在运行时下载纹理(4k,PNG或JPG)时,它是异步完成的.但是当我使用时,Unity会冻结2-3秒:
Texture2D myTexture = www.texture;
Run Code Online (Sandbox Code Playgroud)
除了使用下载的字节并在背景上使用非Unity算法解压缩JPG或PNG然后将创建的rgb值加载到新纹理之外,有没有其他选项可以避免这种情况吗?在Flickr VR应用程序中可以看到平滑纹理加载的好例子,但我怀疑他们使用Unity来创建这个应用程序.
这两个问题也出现在Oculus Rift上,但由于PC性能要好得多,因此不太明显.
通常,我希望使用Unity在Gear VR中实现平滑的加载体验.这有点可能吗?
这个问题应该作为两个单独的问题发布,但仍然:
AD 1:添加一个小的预加载场景,将其渲染给用户,然后他们加载主场景。时间扭曲应该仍在工作,因此头部方向的变化将是可见的。
AD 2:Android 设备无法渲染 jpeg 或 png。他们必须将它们解压缩为非常大的未压缩纹理,再次加载到内存中,然后才进行渲染。这需要大量的内存和时间。
您可以做的就是拥有原生 DXT 或 ETC 格式的纹理,然后自己将它们作为纹理加载。我遇到了同样的问题,这使我的纹理加载速度加快了近 10 倍。他们使用的内存也更少。
请注意,下载大小会更大,并且根据纹理格式,您可能需要为不同平台提供不同的文件。