无缝的异步场景和纹理加载 - Unity& GearVR

时间:2016-04-12 07:02:37

标签: android unity3d unity5 oculus 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;

除了使用下载的字节并在背景上使用非Unity算法解压缩JPG或PNG,然后将创建的rgb值加载到新纹理之外,是否有任何选项可以避免这种情况? 在Flickr VR应用程序中可以看到平滑纹理加载的好例子,但我怀疑他们使用Unity来创建这个应用程序。

这两个问题也出现在Oculus Rift上,但由于PC性能要好得多,因此不太明显。

通常,我希望使用Unity在Gear VR中实现平滑的加载体验。这有可能吗?

1 个答案:

答案 0 :(得分:3)

这个问题本应作为两个单独的问题发布,但仍然是:

AD 1:添加一个小的预加载器场景,将其呈现给用户并加载主场景。时间扭曲应该仍然有效,因此可以看到头部方向的变化。

AD 2:Android设备无法呈现jpeg或png。他们必须将它们解压缩到非常大的未压缩纹理,再次加载到内存然后才渲染。这需要大量的ram和时间。

你可以做的是拥有原生DXT或ETC格式的纹理,并自己将它们加载为纹理。我有同样的问题,这加快了我的纹理加载几乎10倍。他们也使用更少的内存。

请注意,下载大小会更大,并且根据纹理格式,您可能需要为不同平台提供不同的文件。