Eagle Flight是我认为目前品质达到”优秀”的VR游戏, 所以关于它的一些分享是非常有参考价值的

这个游戏有几点挑战:
* 怎么让高速的飞行尽可能的舒适? 因为VR中的移动非常难保证不会晕
* 规模非常庞大的场景, 还有非常多的植被
* PC上要达到90FPS, PS4上要达到60FPS, 性能优化是一个挑战

第一个关键点: 飞行的方向就是你面向的方向, 没有漂移, 这样可以极大地避免眩晕的问题. 不过这样带来的问题就是没办法边飞的时候边往四周看了.
关于加速度的问题, 很多VR游戏的制作建议是不要有, 但是这里却说有时候加速度是有必要的, 出于真实的考虑.

第二个关键点: 不要让玩家倾斜太大, 25度是最大值了. 这也是避免眩晕的一个手段. 游戏里是通过歪头(不是转头)来进行转向的, 倾斜超过1度才开始进行线性的转向

关于撞墙: 撞墙后会变成黑屏, 但是径向流动的白色的风特效在撞墙后并不会停止, 这样会让玩家有仍然向前惯性飞行的感觉, 不会感觉很突兀地停止, 因为撞在墙上的感觉是不舒服的.

晕动症的来源是视觉感知到相对运动, 但是内耳没有感觉到, 所以舒适度的优化需要从这个问题着手

人们都知道视野的中心区域是对细节敏感的, 但是很少知道视野的外围区域对运动更敏感. 所以, 视野的外围视觉的相对运动才是我们应该重点关注的.

这种外围视觉相对运动在游戏中主要出现在两个情况下: 一是自身转向时, 二是高速近距离飞行时(包括钻洞)

游戏中引入了一种”隧道视野”, 会把外围视觉的高速移动像素给遮住, 转向时会自动把侧面挡住, 避免外围视觉感知到过多的相对运动

对于近距离的物体, 通过在4个方向绑定相应的触发器进行检测, 分别控制上下左右的抛物遮挡面, 为了避免跳变, 做了Temporal Smoothing的平滑过渡

性能优化部分主要提到的有: LOD, 内存, 加载时间, Overdraw, 垃圾回收.
整个巴黎场景主要是建筑和植被, 虽然场景很大, 但是一次性加载到内存的, 不会在运行时时行流式加载, 整个城市共享两张拼接合并过的4k纹理, 一张是不透明的, 一张是Alpha Test的.
尝试过一些优化手段, 包括遮挡剔除, 批次合并, 实例化等, 效果不大或者起反作用.

LOD是通过离线预生成每个Cell的层次, 通过层级结构组织到一起, 比Unity的LOD快了2.7ms

层级的遍历可以通过简单的4N+i来在不同层级之间进行索引的换算, 相比使用一个树形结构快得多

通过Mesh压缩减少了一半的内存占用, 虽然GPU上的解压缩会带来额外的计算量, 但是带宽的节省使得最终的速度提升了0.5ms

很多不可见的在模型内部面也会被绘制出来, 比如植被在建筑内部或者地下, 特别是从远处看时, 这个靠人工来优化显然是不现实的


开发了一个减面工具, 专门干掉那些永远看不到的三角形

第一种尝试过的方法: 通过把每个区块用一个半球罩起来, 从半球上的每个采样点生成快照, 统计最终每个三角形上的像素数, 把低于一定阈值的干掉

不过在飞行时经常会穿过一些隧道, 这种方法会连隧道里的三角形也干掉了, 所以在LOD0这一级不进行这个优化, 只在LOD1, LOD2, LOD3优化效果就很好了, 大约降低了25%~40%的面数

第二种尝试过的方法: 空间划分4m的小格子, 每个格子进行一次cubemap渲染, 通过统计背面和正面三角形的比率, 标记这个格式是内部的还是外部的. 这种方法保留了洞之类的面, 但是整个城市处理一遍要12个小时. 优化办法是只处理植被, 不处理建筑, 结合十个GPU分布式计算, 可以把时间缩短到40分钟.
最终再结合第一种方法处理LOD1和LOD2, 减少了29%的三角形, 14%的顶点, GPU时间提升了2.8ms

优化加载时间: 避免使用Awake(), 分帧处理物理和音效对象等

运行时的优化, 继续挑战11ms

类似VR渲染时使用模板缓冲优化的思路, 在鹰鼻, 眉毛, 隧道视野方面进行模板优化, 最多节省了1ms. (鹰鼻原来不只是防眩晕用的…)

公告板全部改到GPU上, 避免了遍历层级进行绘制更新
避免使用全屏特效, 避免使用依赖深度, 只是把隧道视野从基于深度像素检测的改成基于碰撞体的, 在PS4上就节省了4.5ms

另外关于多平台移植的问题, 提到了Vive的水平FOV略大, 所以中心位置跟Oculus不一样

最后总结的一点: 舒适度, 操作, 性能三者是紧密关联的, 一个改变了, 其它两个都要相应调整


很多时候, 我们只看到某个事情”不好做”或者其他所谓的”前辈”分享的”失败经验”不就不去尝试了, 规避掉各种坑之后, 做出的东西也只能是中规中矩的水平. 就像之前很多人说的, VR里不能快速移动, VR里不能有加减速, VR里不能做Roll旋转等, 如果被这些”经验”限制住了, 根本做不出Eagle Flight这样的产品. 所以, 作为一个工程师, 需要的是不断地挑战难题, 不断地去尝试的精神, 这样才能创造更多的可能性.

VRDC2017: Eagle Flight Technical Postmortem相关推荐

  1. Oculus不准备出席E3了!这是要搞事情?

    上周我们断言,Oculus并不准备出席E3,至少不是官方出席,这还是首次.一开始,这很令人担忧,因为Oculus为各种展会而开设的多层展台通常是洛杉矶会议中心的热点之一.可以说,在其他各种摊位和行中显 ...

  2. 为什么VR依然没有出现烧钱向的3A级游戏?

    Oculus游戏部门负责人Jason Rubin在采访中解释了为什么时至今日VR依然极度缺乏3A游戏:所有开发者都等着其他人的作品,开发者之间相互学习并探索什么能做什么不能做.由于VR游戏领域几乎是零 ...

  3. 一张图让你看遍10个VR细分领域!

    [流媒体网]摘要:VR其实也有很多垂直领域,从游戏.影视.医学.教育.模拟驾驶.动作捕捉.全息投影.全景相机,到光学.裸眼3D.脑电波.神经肌肉电等,各种领域似乎都可以与VR技术完美融合. 历经三轮融 ...

  4. Unity3d 周分享(18期 2019.6.1 )

    选自过去1~2周 自己所看到外文内容:https://twitter.com/unity3d 和各种其他博客来源吧 1. 1)Unity x Android Studio混用經驗分享---Laird ...

  5. Oculus VR设计指南

     Oculus VR 设计指南 本指南由字节跳动的四位同学共同翻译,西瓜视频的设计师们共同校对. 如果你对 XR 设计工作感兴趣,vivo 正在招聘 XR 方向的人机交互设计师,当然如果你有其他的任何 ...

  6. 飞行类手册国际标准简介

    在业界有这个说法:三流的企业卖产品,二流的企业卖技术,一流的企业卖标准.一流企业是行业的标杆,行业的制定者.现在标准已经成为最重要的行业发展因素,谁的产品标准一旦为世界所认同,谁就会引领整个产业的发展 ...

  7. Technical Art KPIs

    原文:https://github.com/techartorg Technical Artist           TASKS REQUIRED FOR PARTICULAR LEVEL Jnr ...

  8. 拖拽批量上传图片如何保证 顺序_使用 Eagle 探索图片管理新边界

    现状在现实生活中,我们付出劳动或金钱来获取物品,随着时间喜欢的东西会越来越多,渐渐的会囤积物品,即使有些物品买回来可能用的次数屈指可数,也没有打算丢弃掉,总是想着将来会有派上用场的一天.抱着这样的心态 ...

  9. Kafka 消息监控 - Kafka Eagle

    1.概述 在开发工作当中,消费 Kafka 集群中的消息时,数据的变动是我们所关心的,当业务并不复杂的前提下,我们可以使用 Kafka 提供的命令工具,配合 Zookeeper 客户端工具,可以很方便 ...

最新文章

  1. 01-HTML基础与进阶-day6-录像281
  2. 人工智能终于能像人类一样学习,并通过了图灵测试
  3. window.onload与document.ready的区别
  4. Python:如何安装whl文件
  5. 在 Mac 上如何使用鼠标键来控制指针?
  6. 使用pano2vr生成html5全景页面
  7. html一键删除空白格,如何一次性删除空白行 word里的空白行怎么批量删除
  8. 保姆式手把手教你接入易班开放平台接入个人外部网站
  9. app兼容性测试方案
  10. HEXO+ICARUS主题配置安装经验分享
  11. CCF201509-1数列分段(C语言)
  12. 开学啦!来淘宝教育体验开学第一课
  13. 【详细】小程序发微博功能实现
  14. Kafka能作为数据库使用吗
  15. SolidWorks2020绘制XT60PW-M模型
  16. 计算机主机需要ccc,计算机3C认证怎么办理,要什么资料
  17. 如何使用omnipeek工具抓取WiFi设备的action帧
  18. 两台云服务器怎么共享文件夹,云服务器怎么共享文件夹
  19. 模仿 Android支付宝咻一咻功能实现
  20. (附源码)springboot动力电池数据管理系统 毕业设计 301559

热门文章

  1. vue-video-player 使用总结
  2. python数据分析之描述性统计分析
  3. Linux常用的工具
  4. 负载均衡的多种解决方案
  5. 龙迅LT2611UX—LVDS至HDMI2.0转换器概述资料分享
  6. 《重大通知!!!本博客声明,特此声明》
  7. 王者服务器维护时间表2020,王者荣耀神秘商店2020开启时间 王者荣耀神秘商店持续时间...
  8. kettle连接Oracle数据库详细步骤
  9. 四非计算机类本科保研上岸985复盘
  10. Few-shot learning(少样本学习)和 Meta-learning(元学习)概述