XR“黑话”

MTP(Motion-To-Photon Latency):实际人体发生运动到图像显示到屏幕上的时间延迟。早期一些vr产生晕动症的主要原因。

ATW(Asynchronous Timewarp):主要解决两个问题,一是延迟,二是补帧。其原理是,应用程序输出图像以后,交给另一个渲染管线,后者在上屏的时候拿新的姿态数据做重投影计算。这样新的姿态更接近显示时的真实数据,弥补了MTP。同时应用掉帧的时候,ATW拿前一帧的图像重投影,一定程度上也可以弥补了。

OTW(Orientation Timewarp):可以认为是ATW重投影计算的3DOF版本,把图像视为无限远处的画面,仅引入HMD旋转带来的变量。早期VR设备都是3DOF的,这种计算非常有效。

PTW(Positional Timewarp):6DOF版的ATW,重投影中同时包括旋转和位移。必须要深度图,通过深度信息还原每个点的距离。理论上说每个像素都参与计算是最准确的,但是计算量太大,需要用其他办法来平衡。据oculus的说法:

“多年来,我们尝试了许多不同的 PTW 技术来评估各种权衡。一些技术(例如视差遮挡贴图)更加准确,但会消耗更多 GPU 时间。我们选择的技术类似于稀疏视差映射技术,因为它可以帮助我们认识上述所有要点。与 OTW 相比,使用我们的 PTW 方法的开销极低,同时也足以帮助解决 OTW 中由于 HMD 位移而出现的抖动伪像。”

这里边说的“类似于稀疏视差映射技术”到底如何实现,还不清楚。

ASW(Asynchronous Spacewarp):是用来补帧的,和ATW叠加使用,才能纵享丝滑。前面说的ATW的补帧,弥补的是场景里相机的运动,这里弥补的场景里物体运动带来的变化。oculus已经迭代了两版,下面是官方文章说的:

为了更好地理解ASW如何与PTW配合使用,我们首先需要了解ASW的流程。以下是 Oculus 运行时利用 ASW 的步骤的详细分解:

  1. ASW捕获由焦点 VR 应用程序提交的先前和当前 ovrLayerEyeFov 帧的纹理。
  2. ASW通过对前一帧进行时间扭曲来生成“预扭曲帧”以使用当前帧的姿势。
  3. ASW将当前和预变形帧纹理转换为 GPU 视频编码器友好的资源。
  4. ASW将两个帧纹理发送到 GPU 视频编码器进行对应分析。
  5. ASW从 GPU 视频编码器输出中收集“运动向量”。
  6. ASW对运动矢量进行后处理和转换以进行帧外推。
  7. ASW打包内容并注入合成器层,就像来自 VR 应用程序一样。
  8. 合成器像往常一样使用 ASW 注入的 ovrLayerEyeFov 图层内容进行时间扭曲和扭曲。

正如您在步骤 #2 和 #8 中看到的,我们依赖 Timewarp (TW)。在我们最初的 ASW 实现中,由于我们没有可用于 PTW 的深度缓冲区,因此在这些情况下使用的 TW 重投影技术是方向时间扭曲 (OTW)。然而,随着越来越多的 VR 应用程序开始提供深度缓冲区,我们可以利用 PTW 的数据。诀窍是确保上述两个步骤中使用的 TW 重投影技术(无论是 OTW 还是 PTW)属于同一类型。这可确保在 ASW 或 TW 中校正 HMD 运动重投影,但不能同时在两个位置校正,因为这会导致视觉伪影。当深度不可用时(即 VR 应用程序提交 ovrLayerEyeFov 而不是 ovrLayerEyeFovDepth),Oculus 运行时会自动恢复为该 VR 应用程序的 ASW 1.0 方法。

 个人理解最大的区别就是利用了PTW,能把场景中没有发生运动的点都剔除出来。

Motion Vector:运动矢量,ASW里的关键信息,直观理解就是上面图片中的小箭头。高通GPU提供了该能力,在OpenGL里提供了QCOM_motion_estimation extension扩展接口。

  void TexEstimateMotionQCOM(uint ref,uint target,uint output) ;void TexEstimateMotionRegionsQCOM(uint ref,uint target,uint output,uint mask) ;

参考链接:

https://developer.oculus.com/blog/developer-guide-to-asw-20/

Improving VR Performance Using Motion Estimation OpenGL Extensions

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/765191.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【记录 | 最小生成树】繁忙的都市(Kruskal算法)

[SCOI2005] 繁忙的都市 题目描述 城市 C 是一个非常繁忙的大都市,城市中的道路十分的拥挤,于是市长决定对其中的道路进行改造。城市 C 的道路是这样分布的:城市中有 n n n 个交叉路口,有些交叉路口之间有道路相连,两个交叉路口之间最多有一条道路相连接。这些道路是双向…

双雷达(velodyne)的启动与集成

1 引入 自动导航需要多个雷达来避免盲区和提高定位精度。本文项目使用前后两个velodyne VLD16的雷达。 2 启动两个雷达的驱动 2.1 方案选择 查了网上,看到似乎有两种方案: 一种是采用的.launch文件中不同的namespace,去配置不同的参数,参阅:https://zhuanlan.zhihu.co…

AI大模型学习在当前技术环境下的重要性与发展前景

目录 前言1 学科基础与技能要求1.1 数学基础的深厚性1.2 编程能力的必要性1.3 对特定领域业务场景的了解 2 模型结构与算法的优化2.1 模型结构的不断演进2.2 算法优化的重要性2.3 准确性与效率的提升 3 AI大模型学习的应用场景3.1 自然语言处理3.2 计算机视觉3.3 推荐系统 结语…

YOLO算法改进Backbone系列之:Dfformer

摘要:配备多头自注意(MHSA)的模型在计算机性能方面取得了显著的性能。它们的计算复杂性与输入特征图中的像素平方成正比,导致处理缓慢,特别是在处理高分辨率图像时。新型的token Mixer 被提出作为MHSA的替代品&#xf…

抖音,剪映,TikTok,竖屏短视频转场pr模板视频素材

120个叠加效果视频转场过渡素材,抖音,剪映,TikTok,短视频转场pr模板项目工程文件。 效果:VHS、光效、胶片、霓虹灯闪光、X射线、信号、老电影等。 适用软件:Adobe Premiere Pro 2018 12.0或更高版本。 视频素材与大多数应用程序兼容&#xff…

学习几个地图组件(基于react)

去年开发时用的公司封装的地图组件,挺方便的,但是拓展性不强,所以看看有哪些优秀的开源地图组件吧 1、React Leaflet 介绍:开源的JavaScript库,用于在web上制作交互式地图,允许你使用React组件的方式在应…

基于Spring Boot技术的幼儿园管理系统

摘 要 随着信息时代的来临,过去的传统管理方式缺点逐渐暴露,对过去的传统管理方式的缺点进行分析,采取计算机方式构建幼儿园管理系统。本文通过课题背景、课题目的及意义相关技术,提出了一种活动信息、课程信息、菜谱信息、通知公…

【Linux】线程的概念{虚拟地址堆区细分/缺页中断/页/初识线程/创建线程/优缺点}

文章目录 1.前导知识1.1 虚拟地址空间的堆区1.2 缺页中断1.3ELF文件格式1.4页/页框/页帧/页表/MMU1.5虚拟地址到物理地址 2.初识Linux线程2.1之前所学的进程2.2线程的引入2.3如何理解线程2.4如何理解轻量级进程 3.创建线程3.1pthread_create()函数3.2程序测试3.3Makefile怎么写…

时序预测 | Matlab实现BiTCN-GRU双向时间卷积神经网络结合门控循环单元时间序列预测

时序预测 | Matlab实现BiTCN-GRU双向时间卷积神经网络结合门控循环单元时间序列预测 目录 时序预测 | Matlab实现BiTCN-GRU双向时间卷积神经网络结合门控循环单元时间序列预测预测效果基本介绍程序设计参考资料 预测效果 基本介绍 1.Matlab实现BiTCN-GRU双向时间卷积神经网络结…

Python中装饰器函数的用法介绍

在Python中,装饰器(Decorator)是一种特殊的函数,它可以用来修改或增强其他函数或方法的行为。装饰器允许您在不修改原始函数代码的情况下,向函数添加新的功能或行为。它们通常用于添加日志记录、性能分析、验证或修改函…

计算机专业保研辅导

接计算机专业保研辅导

C语言:自定义类型(结构体)

目录 一、结构的特殊声明二、结构的自引用三、结构体内存对齐1.对齐规则2.为什么存在内存对齐(1)平台原因 (移植原因):(2)性能原因: 3.修改默认对齐数 四、结构体传参五、结构体实现位段1.什么是位段2.位段的内存分配3.位段的跨平台问题4.位段使用的注意…

Java字符串常量池

引言: 在Java编程中,字符串常量池一直是一个备受关注的话题。本文将从创建对象的思考、字符串常量池、再谈String对象创建等方面深入探讨Java字符串常量池。 一、创建对象的思考 在Java中,我们可以使用new关键字来创建对象,比如&a…

简单函数_素数对

任务描述 两个相差为2的素数称为素数对&#xff0c;如5和7&#xff0c;17和19等&#xff0c;本题目要求找出所有两个数均不大于n的素数对。输入格式: 一个正整数n。1 < n < 10000。输出格式: 所有小于等于n的素数对。每对素数对输出一行&#xff0c;中间用单个空格隔开…

设计模式 模板方法模式

01.如果接到一个任务&#xff0c;要求设计不同型号的悍马车 02.设计一个悍马车的抽象类&#xff08;模具&#xff0c;车模&#xff09; public abstract class HummerModel {/** 首先&#xff0c;这个模型要能够被发动起来&#xff0c;别管是手摇发动&#xff0c;还是电力发动…

39 openlayers 对接地图图层 绘制点线面圆

前言 这里主要是展示一下 openlayers 的一个基础的使用 主要是设计 接入地图服务器的 卫星地图, 普通的二维地图, 增加地区标记 增加 省市区县 的边界标记 基础绘制 点线面园 等等 测试用例 <template><div style"width: 1920px; height:1080px;" &g…

Rancher(v2.6.3)——Rancher部署Mysql(单机版)

[详细说明请查看Rancher部署Mysql说明文档]&#xff1a;https://gitee.com/WilliamWangmy/snail-knowledge/blob/master/Rancher/Rancher%E4%BD%BF%E7%94%A8%E6%96%87%E6%A1%A3.md#2rancher%E9%83%A8%E7%BD%B2mysql ps&#xff1a;如果觉得作者写的还行&#xff0c;能够满足您的…

nginx有哪些安装方法

Nginx 有多种安装方法&#xff0c;适用于不同的操作系统和使用场景。以下是几种常见的安装方式&#xff1a; 通过官方源码编译安装&#xff1a; 从Nginx官网下载源代码包。解压缩并进入源码目录。安装编译所需的依赖包&#xff0c;如pcre、zlib、openssl等。运行./configure配置…

前端canvas项目实战——简历制作网站(六):加粗、斜体、下划线、删除线(上)

目录 前言一、效果展示二、实现步骤1. 视图部分&#xff1a;实现用于切换字体属性的按钮2. 逻辑部分&#xff1a;点击按钮之后要做什么&#xff1f;3. 根据Textbox的属性实时更新按钮的状态 三、Show u the code后记 前言 上一篇博文中&#xff0c;我们实现了对文字的字体、字…

【系统设计】面试问题:设计 Spotify

目录 初始阶段:基础版本估计:数据计算高层设计**数据存储**SQL数据库结构把它们放在一起规模化阶段:5000 万用户、2 亿首歌曲引入 CDN扩展数据库:领导者-跟随者技术推荐超级课程: Docker快速入门到精通Kubernetes入门到大师通关课AWS云服务快速入门实战这是一道系统设计面…