目标

  • 解决Unity VR场景中的锯齿和阴影抖动问题

工具

  • Unity2019.4.9
  • SteamVR Unity Plugin 2.7.3
  • Post Processing 2.3.0

操作步骤

  1. 新建Unity工程导入SteamVR Unity Plugin,按照向导进行配置,我选择Accept All,当弹出对话框询问是否使用XR时,选择Legacy VR。

  2. 打开Package Manager安装Post Processing

  3. 新建一个层,命名为Post Processing

  4. 打开Project Settings/Quality面板,设置Anti Aliasing 为2x Multi Sampling,注意这个值在较低的SteamVR Unity Plugin版本中可以设置为Disabled,建议不要设置为4x或8x

  5. 继续在Project Settings/Quality面板上,找到Shadows Projection 选项,设置为Stable Fit,Shadowmask Mode选择Distance Shadowmask

  6. 打开Project Settings/Player面板,在XR Settings中设置Stereo Rendering Mode 为Multi Pass,注意这一步非常重要

  7. 在VR场景中找到主相机(在我的项目中采用了SteamVR Unity Plugin的Player预设体,主相机为VRCamera),添加Post-process layer 组件,并做如下设置

  8. 现在可以运行了,可以通过激活Post-process layer组件和关闭该组件进行效果对比


要点

  1. 在Quality设置面板中,Anti Aliasing是指硬件的抗锯齿,即使设置到8x仍然很难满足VR项目的需要,尤其当场景中有栏杆、网等由很多线条构成的几何体时会出现大量的闪烁边缘(Flickering edges),因此没有必要设置很高,我采用的是后处理抗锯齿。在早期的SteamVR Unity Plugin 版本中这个选项要求设置为Disabled,因为Valve本身的输出会进行抗锯齿处理。新版本的要求设置成2x以上,否则会提示报错。
  2. 在Quality设置面板中,Shadows Projection选项设置了阴影的投影方式,一般来讲Close Fit可以使阴影与模型间贴合的更加紧密显得更加真实,但是在VR场景中,Close Fit投影的阴影会出现抖动闪烁的问题,因此要设置为Stable Fit。
  3. 在XR Settings中,Stereo Rendering Mode必须设置为Multi Pass,这是因为该模式支持后处理抗锯齿,其他模式下采用后处理抗锯齿会出现显示错误:比如重影、锯齿闪等。
  4. 后处理抗锯齿的三种方式中,我采用了TAA方式,这种方式对于动态过程的抗锯齿有很好的效果。三种抗锯齿方式的详细对比可以查阅相关的文档。

SteamVR开发笔记-01怎样消去VR中的锯齿(Dismiss flickering edges in your vr scene)相关推荐

  1. 微信公众号Java开发-笔记01【微信公众号介绍、开发环境搭建】

    学习网址:哔哩哔哩网站 微信公众号开发-Java版 微信公众号Java开发-笔记01[微信公众号介绍.开发环境搭建] 微信公众号Java开发-笔记02[] 微信公众号Java开发-笔记03[] 微信公 ...

  2. Bootstrap响应式Web开发笔记01——基础入门

    Bootstrap响应式Web开发笔记01--基础入门 Bootstrap响应式Web开发笔记02--移动端页面布局 Bootstrap响应式Web开发笔记03--Bootstrap栅格系统 Boot ...

  3. 【unity 保卫星城】--- 开发笔记01(飞机移动)

    [unity 保卫星城]--- 开发笔记 一.在UnityHub中创建2D项目,取名Defend_Star_City 二.导入MangerOfManger框架 三.在打包中,切换安卓开发模式 四.创建 ...

  4. Unity+C#开发笔记(六)| unity中单例模式的使用 | ╭(●`∀´●)╯╰(●’◡’●)╮

    首先单例模式是做什么用的呢?对于我一个萌新来说,目前我用到的就是方便别的类调用!,所以在不继承MonoBehavior的类,我都喜欢加个单例模式方便调用(我知道好像正确原因不是这个0.0但主要是妹看懂 ...

  5. Unity+C#开发笔记(七)| unity中继承MonoBehaviour类的脚本里的函数怎么调用 | ╭(●`∀´●)╯╰(●’◡’●)╮

    继上文,有个蠢货单例模式只是用来引用,突然遇到了一个继承了MonoBehaviour的类,然后unity跟你讲:不!你不可以在我这里这么用! 啊这--吓得我当场百度... ************** ...

  6. 【转】C#开发笔记之05-迭代器中的状态机(State Machine)到底是什么?

    C#开发笔记概述 该文章的最新版本已迁移至个人博客[比特飞],单击链接 https://www.byteflying.com/archives/961 访问. 状态机可以理解为实现了备忘录模式(仅作为 ...

  7. C#开发笔记之05-迭代器中的状态机(State Machine)到底是什么?

    C#开发笔记概述 该文章的最新版本已迁移至个人博客[比特飞],单击链接 https://www.byteflying.com/archives/961 访问. 状态机可以理解为实现了备忘录模式(仅作为 ...

  8. 【汇编实战开发笔记】从汇编代码中找出一段普通的for循环变成“死循环”的根本原因(RT-Thread技术论坛优秀文章)

    文章目录 1 前言 2 问题描述 3 简单分析 4 场景再现 5 柳暗花明 6 找到证据 6.1 究竟是不是警告 6.2 盘根问底 6.3 解除风险 7 扩展延伸 7.1 RISC-V架构 7.2 8 ...

  9. ESP32-IDF开发笔记 | 01 - ESP-IDF开发环境搭建(2023.04.08更新)

    更新内容 更新时间 2021.05.01 基于ESP32+IDF 4.4完成初稿 2023.03.12 基于IDF 5.0.1添加VScode IDF扩展安装.配置.使用方法 2023.04.07 增 ...

最新文章

  1. 实验6 触发器的使用
  2. 【ICML2021】计算机视觉中的自注意力机制教程,谷歌伯克利出品
  3. python3.x中如何实现print不换行
  4. SVM分类器原理详解
  5. 网易游戏2011.10.15校园招聘会笔试题
  6. 计算机组成原理笔记——存储器分类、层次结构、技术指标、存储单元地址分配
  7. helm安装postgres_Helm 入门介绍 Kubernetes 上的包管理软件
  8. jupyter notebook和python有什么区别_如何在Jupyter Notebook中使用Python虚拟环境?
  9. 熬夜整理了10个行业的40份可视化大屏模板,可直接拿走套用
  10. Android模拟器——Windows上比较适合王者荣耀的是腾讯手游助手
  11. python-视频抽帧、数据集命名
  12. MVC+angularjs
  13. html平面图绘制,如何利用Word绘制校园平面图?
  14. Fate Decision剧本
  15. 树莓派 摄像头mjpg-streamer视频推流+开机自启动
  16. hackbar小插件
  17. Oracle Flashback之flashback table
  18. 打开anaconda prompt 出错 import ctypes
  19. 冠铭机器人_创新时代 智造引领|众为兴总冠名支持 2019富友会年会圆满落幕
  20. 求正整数n所有可能的和式的组合「百度凤巢」

热门文章

  1. Python 最好大学网大学排名爬取(2020年)
  2. 研究c语言必须的软件,为什么必须学习C语言
  3. 泰勒一维阵列天线matlab
  4. matlab 读二值图片,二值图像
  5. 第五人格服务器维修到几点,第五人格1月10日更新几点结束 第五人格1月10日更新维护公告...
  6. linux下centos生成火车动画sl命令
  7. 奥拉星手游怎么用电脑玩 奥拉星手游模拟器教程
  8. 数据工程思想与R语言认知
  9. MnistData的读取
  10. navicat 阿里云 服务器 mysql_阿里云服务器优惠券领取 可以便宜购买阿里云服务器...