5

我在使用三星 S6 的 GearVR 上使用 Unity (5.3.4p1) 时遇到了两个主要问题:

1)异步场景加载。有没有什么改变可以让我在后台加载新场景而不会看到小冻结?场景有大约 60k 的三角形,并使用了几个 4k 纹理和大约 10 个其他 2k 纹理。加载此场景时,会有多个短暂的冻结。我知道我可以通过淡出黑色然后开始加载级别来避免这种情况。但这需要大约 10 秒的时间,并且用户可能会在打开 VR 耳机的情况下长时间看到黑屏时感到困惑。

2) 从使用 WWW 类下载的图像创建纹理。我在另一个场景中使用显示在圆顶上的 360 4k 图像。当我尝试在运行时下载纹理(4k、PNG 或 JPG)时,它是异步完成的。但是当我使用 Unity 时,Unity 会冻结 2-3 秒:

Texture2D myTexture = www.texture;

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

这两个问题也出现在 Oculus Rift 上,但由于 PC 性能更好,所以不太明显。

一般来说,我希望使用 Unity 在 Gear VR 中实现流畅的加载体验。这有可能吗?

4

1 回答 1

3

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

AD 1:添加一个小的预加载场景,将其渲染给用户,然后他们加载主场景。Timewarp 应该仍在工作,因此头部方向的变化将是可见的。

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

您可以做的是拥有原生 DXT 或 ETC 格式的纹理,然后自己将它们作为纹理加载。我遇到了同样的问题,这使我的纹理加载速度加快了近 10 倍。他们也使用更少的内存。

请注意,下载大小会更大,并且根据纹理格式,您可能必须为不同的平台拥有不同的文件。

于 2016-04-12T09:16:16.817 回答