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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

CSS弹性盒模型(学习笔记)

一、厂商前缀 1.1 作用 解决浏览器对C3新特性的兼容,不同的浏览器厂商,定义了自己的厂商前缀 1.2 语法 浏览器 厂商前缀内核(渲染引擎):解析htmlcssjs谷歌 -webkit-blink苹果-webkit-webkit欧朋-o-blink火狐 -moz-geckoIE-ms- trid…

OpenCV4.9.0开源计算机视觉库安装教程

返回:OpenCV系列文章目录(持续更新中......) 引言:OpenCV系列文章中的安装部分今天全部完成了,为了读者更方便阅读,大家可以按下列索引前往,成文较为仓促有错漏在所难免,欢迎大家指正…

服务器运行一段时间后

自己记录一下。 一、查看目录占用情况 df -h 命令查看磁盘空间 du -ah --max-depth=1 / 查看根目录下各个文件占用情况 二、mysql日志清空 这个日志是可以清空的 echo > /usr/local/mysql/data/syzl-db2.log #将文件清空 说明: 这个文件这么大是因为,开启 …

将OpenCV与gdb驱动的IDE结合使用

返回:OpenCV系列文章目录(持续更新中......) 上一篇:OpenCV4.9.0开源计算机视觉库在 Linux 中安装 下一篇:将OpenCV与gcc和CMake结合使用 ​ 能力 这个漂亮的打印机可以显示元素类型、、标志is_continuous和is_subm…

微信小程序分销返佣模式--小程序1-3级分销插件--小程序分销--

团购小程序是一种基于社区团购模式的电商平台,主要面向社区居民用户。 如果你想要开发一款分销团购小程序可以参考以下功能需求进行开发制作。 1、用户注册和登录 提供用户注册和登录功能,使用户能够创建和管理他们的账户。 2、会员管理 包括会员注…

springboot网站开发-诡异的static/images读取故障

springboot网站开发-诡异的static/images读取故障!我在本地环境测试代码,一切正常。可以读取到该路径下的图片模板,正常生成图片存储在本地D盘下面的文件夹。但是改成服务器linux环境后就不行了。打包发布后,死活读取不到图片模板。 这个故障…

HTML(一)

一、网页 1.1 什么是网页 网站是指在因特网上根据一定的规则,使用 HTML 等制作的用于展示特定内容相关的网页集合。 网页是网站中的一“页”,通常是 HTML 格式的文件,它要通过浏览器来阅读。 网页是构成网站的基本元素,它通常由…

基于python+vue智慧农业小程序flask-django-php-nodejs

传统智慧农业采取了人工的管理方法,但这种管理方法存在着许多弊端,比如效率低下、安全性低以及信息传输的不准确等,同时由于智慧农业中会形成众多的个人文档和信息系统数据,通过人工方法对知识科普、土壤信息、水质信息、购物商城…

FreeRTOS任务相关API函数

1. FreeRTOS任务相关API函数介绍 函数描述uxTaskPriorityGet()获取任务优先级vTaskPrioritySet()设置任务优先级uxTaskGetNumberOfTasks()获取系统中任务的数量uxTaskGetSystemState()获取所有任务状态信息vTaskGetInfo()获取指定单个的任务信息xTaskGetCurrentTaskHandle()获…

解决1130-Host‘ ‘is not allowed to connect to this MySQL server,实现远程连接本地数据库

参考:https://blog.csdn.net/CoCo629vanilla/article/details/129008644 在使用Navicat远程连接本地数据库时,遇到了这样一个问题, 我使用 本地主机的地址,连接本地的数据库,报错host ‘’ is not allowed to connect to this my…

转座子插入序列分析2-自制分析流程

我们先观察一下测序的结果,是否有一些什么规律,因为使用的靶向富集法的测序,我们使用了特殊序列将插入了转座子的部分钓了出来,然后进行的测序,所以理论上富集到的所有序列都应该存在一段与我们钓鱼序列互补的“靶点序…

Redis实战:缓存穿透及其解决思路 实战演示

🎉🎉欢迎光临,终于等到你啦🎉🎉 🏅我是苏泽,一位对技术充满热情的探索者和分享者。🚀🚀 🌟持续更新的专栏Redis实战与进阶 本专栏讲解Redis从原理到实践 …

YOLOv5改进 | 图像去雾 | 利用图像去雾网络AOD-PONO-Net网络增改进图像物体检测(全网独家首发)

一、本文介绍 本文给大家带来的改进机制是利用AODNet图像去雾网络结合PONO机制实现二次增强,我将该网络结合YOLOv5针对图像进行去雾检测(也适用于一些模糊场景,图片不清晰的检测),同时本文的内容不影响其它的模块改进…

【嵌入式硬件】步进电机

1.步进电机简介 1.1步进电机基本原理 步进电机的英文是stepping motor。step的中文意思是行走、迈步。所以仅从字面上我们就可以得知,步进电机就是一步一步移动的电动机。说的官方一点儿,步进电机是一种将电脉冲信号转换成相应角位移或者线位移的电动机(直线电机)。下图为…

交通事故档案管理系统|基于JSP技术+ Mysql+Java+Tomcat的交通事故档案管理系统设计与实现(可运行源码+数据库+设计文档)

推荐阅读100套最新项目 最新ssmjava项目文档视频演示可运行源码分享 最新jspjava项目文档视频演示可运行源码分享 最新Spring Boot项目文档视频演示可运行源码分享 2024年56套包含java,ssm,springboot的平台设计与实现项目系统开发资源(可…

AI程序员的崛起还是人类程序员的消亡?

最近有个对互联网行业影响极大的爆炸新闻: 我们这个圈子里有了个新玩家——AI程序员。 没错,就是那种用人工智能技术驱动的编程助手。你可能听说过Devin,这家伙不是一般的程序员,它能迅速学习新技术,还能在编码、找bug…

【.net/.net core】后台生成echarts图片解决方案及.net core html转word方法

工具环境下载: EChartsConvert:https://gitee.com/saintlee/echartsconvert EChartsConvert为生成echarts图片的服务端,用于接收参数和生成echarts图表图片BASE64编码 PhantomJS:Download PhantomJS PhantomJS用来发布EChartsConvert服务…

媒资管理模块之文件预览

文件预览 图片和视频上传成功后,可以通过预览按钮查看文件内容(如图片和MP4格式视频),对于浏览器不支持查看的文件提示错误信息(如avi格式视频) 接口定义 根据上传文件的ID获取文件对应的可访问URL,对于图片或MP4格式的视频可通过浏览器直接预览,对于其他文件如.a…

WEB 表单练习题

任务如图&#xff1a; <html><head><meta charest"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>Document</title> </head><body><table width"…

Flink GateWay、HiveServer2 和 hive on spark

Flink SQL Gateway简介 从官网的资料可以知道Flink SQL Gateway是一个服务&#xff0c;这个服务支持多个客户端并发的从远程提交任务。Flink SQL Gateway使任务的提交、元数据的查询、在线数据分析变得更简单。 Flink SQL Gateway的架构如下图&#xff0c;它由插件化的Endpoi…