Unity移动端VR场景简易优化笔记

平台:Pico Neo 3,Unity2020.3LTS

待优化资源: [Mars Environment 3D 环境 Unity Asset Store](https://assetstore.unity.com/packages/3d/environments/mars-environment-42564)

目标:在Pico端快速部署并流畅运行火星场景(fps>60)

第一遍直接部署场景时移动端出现黑屏,发现犯了一个很低级的错误,没有设置移动端Graphics API,默认将Vulkan放在了列表里。

修改后运行,FPS约等于1,直接卡成PPT。

参考一些官方和常规的操作来进行配置,比如:

6 性能优化指南 — PicoVR Unity SDK 0.1 文档

在Pico官方提供的性能优化指南里,对照6.5部分完成所有推荐配置,并将移动端的Quality设置为Very Low。FPS在5左右,仍然不能看。

如果走到场景的最边缘,会发现FPS能稳定到72,证明该资源的天空盒与环境光并不太吃资源。剩下的核心优化点就在地形上了。

地形方面看到有文章提到可以用MTE这个插件进行优化,即先将Unity的Terrain转换成三维模型,再对模型做减面操作。相比原始的Terrain会有明显性能提升(宣称)。

[Mesh Terrain Editor Free 地形 Unity Asset Store](https://assetstore.unity.com/packages/tools/terrain/mesh-terrain-editor-free-67758)

不过由于免费版插件不太支持这个规模的地形,也就搁置了。

后面参考其他通用优化方案也进行了一定调整,在调整一些纹理图大小后,FPS上到了15左右。

Unity 性能优化总结(适合初学者)_胖胖的橘猫君-CSDN博客_unity性能优化

根据之前和本次优化的一点经验,PicoVR这样的移动端,最吃资源的部分在纹理图大小这块,基本超过2K*2K的贴图就会明显卡顿。

针对地形,我们参考Unity文档提供的参数说明。

地形设置 (Terrain Settings) - Unity 手册

调整一些参数后发现,里面最核心的两个值是Pixel Error和Base Map Dist.

  • Pixel Error:地形贴图(如高度贴图和纹理)与生成的地形之间的映射精度。值越高表示精度越低,但渲染开销也越低。
  • Base Map Dist. Unity 以全分辨率显示地形纹理的最大距离。超过此距离后,系统将使用较低分辨率的合成图像来提高效率。

由于整个地形很大(1500m*1500m),将第二个参数调低后,FPS出现了质的飞跃,基本也就完成了基本要求。