您的位置:首页 > 移动开发 > Unity3D

基于Unity开发OculusVR产品的 性能优化

2020-07-20 04:17 736 查看

1.使用现状

     随着社会对虚拟行业的需求增大,越来越多的公司、供应商开始对VR产品进行研究开发。硬件产品从刚开始的盒子式到头盔式再到现在的一体式头盔,VR产业一直在快速发展,以oculus一体式头盔为代表的一系列VR产品受到市场的欢迎,其小型化、便携式是传统VR设备不具备的,然而这些特点也导致一体机在性能方面有所限制,随着游戏开发商对游戏的不断提高以及体验者对产品沉浸体验需求的增大,在不改变一体式头盔硬件的情况下,开发者只能在开发过程中对游戏、软件进行不断的调试、性能优化,尽可能提高体验者的舒适度和沉浸感,所以VR游戏、软件的性能优化尤为重要。

 

 

 

 

2.性能优化

2.1.项目准备时期

2.1.1场景资源评估

      在项目开始开发前的准备时期,每一个开发团队都必须要对即将开发的产品做一个评估,包括产品可行性、产品风险评估、场景资源评估等;

      由于是用于oculus一体机的商业VR产品,团队在开发之前要对场景资源进行评估, 包括场景的点数、模型的大小&数量、场景的大小、加载资源的多少等,对这些资源进行大致评估可以对后面的开发有着指导性作用,比如当我们开发过程中客户需要临时添加一些模型资源甚至是小的场景,那么我们在别的方面的优化(比如贴图、光照)就得加大力度来填补这些新增的东西所带来的额外资源负担。所以在项目准备阶段需要对场景进行资源评估;

 

2.2.项目开发前期

2.2.1 模型

   在VR场景的制作过程中,我以人眼所能看到的模型为例把模型分为三类

            1.该模型会被人眼仔细观察

                2.该模型只是装饰品,人眼看到即可

                3.该模型只会被人眼看到部分

      对于VR场景而言,模型在整个场景中占了很大一部分资源,在优化方面对模型优化的好与不好很大程度决定整个VR场景放入一体机中的卡顿问题。模型资源的精细程度可以根据其模型在场景中发挥的作用而对模型进行不同的精细化分。

解决方法:1.上面说的2.3类模型,可以减少模型的面数、顶      点数,甚至有的模型只导入人眼能看到的那部分;

2.将模型分组,人眼看不到的区域就隐藏这些组;

3.尽量让模型合并材质和贴图,减少贴图、材质数量;

4.场景中能合并的模型尽量合并;

5.不需要阴影的模型在场景中勾掉Receive Shadows

6.静态批处理

7.LOD多层次渲染

2.2.2 图片

        1.导入的图片可以根据其需要对图片的分辨率进行修改;

2.转化为精灵模式(spirit)

 

2.3.项目开发中期

      2.3.1 代码

       在项目开发中脚本会用到各种各样的封装的方法、类,对代码的优化也可以减少VR场景的负担  

  1. 脚本中不用的代码一定要删除,因为有些代码会产生GC
  2. Getcomponent  Gameobject.find()等这些方法尽量少用,而且千万不要放在Update中循环执行
  3. Update里面的逻辑尽量不要太复杂

 

       2.3.2 插件

           在不影响场景内容的基础上,能用unity自带的组件就不要用外部导入的插件,当然有些插件能大大提高开发效率,视情况而定;

 

 

2.4.项目开发后期

       2.4.1 打包

          项目完成打包时,如果资源多可采用AB打包方式,将场景的一部分模型、贴图、声音之类的资源分组打包,在场景运行时这些资源再被加载在出来,可以减少安装包的大小;

 

       2.4.2 其他

          其实在开发VR项目时候,还有很多的资源优化方法,例如:场景异步加载、减少实时灯光使用、减少粒子系统的使用等;

            

 

在VR场景的开发过程中,资源优化一直是开发者需要解决的问题,资源优化并不是一个短期的内容,它是需要我们在开发的过程中就要考虑到的问题,伴随着整个项目的开发周期,资源优化没有一劳永逸的方法,只能一步一步根据项目进行优化调试,总之:开发不停,优化不止。

 

 

 

 

                                                       

 

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐