目标

  • 解决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. Sql 某一字段统计
  2. 怎么将多个html组合_技巧分享之在HTML元素中添加逼真阴影的教程
  3. openssl pem 生成公钥和私钥及文件
  4. POJ 2976 Dropping Tests
  5. Android平台RTSP轻量级服务|RTMP推送摄像头或屏幕之音频接口设计
  6. Odd Sum Segments(CF-1196B)
  7. 解决ERROR 1396 (HY000): Operation ALTER USER failed for root@localhost
  8. php include的路径问题,php7中include有相对路径无法打开
  9. EA 反向工程 导入oracle中表结构
  10. 漫画:什么是单例模式?(转载)
  11. redis通用key操作
  12. 9种常用的数据分析方法
  13. 石油化工设备维护检修规程_超级石化好文推荐:提升石化设备管理水平 最新修订版维护检修规程!...
  14. 定量变量和定性变量的转换(Transform of Quantitative Qualitative Variables)
  15. 计算机教室不安风扇,多媒体教室设备常见故障及解决办法
  16. 如何保持session一致性?
  17. 移动硬盘加密后在linux中如何使用方法,移动硬盘上的文件加密方法
  18. 实时即未来,大数据项目车联网之原始数据实时ETL任务HBase调优【九】
  19. Bing Test -必应每日壁纸自动换
  20. Ansible 下载模块get_url、解压缩模块unarchive(学习笔记十五)

热门文章

  1. json文件格式标准
  2. hx711基准电压_一文看懂hx711模块原理图及驱动程序
  3. 9月19日云栖精选夜读:阿里云MVP Meetup极客开跑_与MVP一起玩转云计算
  4. linux下mnt目录作用
  5. SAP 发布2022年第二季度财报
  6. 国内云服务器厂商众多,如何选择
  7. 如何在约一分钟的时间内使照片看起来像铅笔素描
  8. 语言文件.po .pot和.mo简介及汉化
  9. Python深度学习-Data Augmentation:使用Augly库进行图片数据增强
  10. 嵌入式Linux下CAN接口调试