Oculus SDK
HMD-ALOG
Architecture
Terms and definitions
VrLib/VrApi目录
Important struct/class
ATW线程
HMD-ALOG
反畸变算法(Distortion)
多采样着色(Multi-Resolution Shading)
反色散(Chromatic Aberration correction,CA)
Stereo Rendering
时间扭曲(Timewarp,ATW)
位置扭曲(Positional Timewarp)
Yaw Correction
Sensor Algo(暂时忽略)
反畸变/Distortion
VR眼睛看正常2D图像:
上图圆圈所覆盖的位置是一样的。从左到右,是一个从边缘往中间内缩的过程。而内缩的幅度,与圆圈的半径,也就是像素点到图像中间的距离成比正比。
所以为了从VR的凸透镜看到正常的图形,所以我们需要将原始2D图像经过一些反畸变,再通过眼睛的突变之后恢复成正常图像。
经过VR渲染畸变图像:
多采样着色(Multi-Resolution Shading)
Why? 通过上一页我们知道,我们需要做Distortion。但是如果我们按照上张图来实现,就会引入一个问题,我们对每个2D图像每个像素点都进行渲染的话,不但边角毫无意义,主要会造成极大的硬件和软件的资源浪费。
How?
在中央视区仍保留完整分辨率的情况下,外围视区则用类似于传统后处理阶段的扭曲方式进行渲染。当这一切完成后,同样用户感知效果的图像相比原来的像素数量可减少25%到50%,。
反色散/CA Correction
色差(Chromatic aberration;chromatic aberration):色差又称色像差,是透镜成像的一个严重
缺陷,色差简单来说就是颜色的差别,发生在以多色光为光源的情况下,单色光不产生色差。
现象:VR头盔在使用时候都会在边缘区域(边缘位置)出现红绿蓝的色边
反色散方法:
使用低色散的透镜,无法根本解决问题,并且成本还不知道贵不贵
软件补偿
Stereo Rendering
对同一图像需要渲染两次。简单的说,人的双眼看同一物体时,由于左右眼视线方位不同,视网膜上的图像会略有差别,即双眼视差,VR利用双眼视差原理在左右眼屏幕上分别显示两幅具有微小差别的图像,用户将两幅图像融合后得到一幅具有立体效果的图像。
时间扭曲/Timewarp
时间扭曲:是一种图像帧修正的技术,在使用虚拟现实眼睛设备时,由于头部运动过快,而造场景渲染的延迟,即头已经转过去了,但是图像还没有渲染出来,或者渲染的是上一帧的图像, 时间扭曲它通过扭曲一副被送往显示器之前图像,来解决这个延迟问题。最基础的时间扭曲是基于方向的扭曲,这种只纠正了头部的转动变化姿势,这种扭曲对于2D图像是有优势的,它合并一副变形图像不需要花费太多系统资源。对于复杂的场景,它可以用较少的计算生成一个新的图像帧。
异步时间扭曲:(Asynchronous Timewarp简称ATW)是一种生成中间帧的技术,当游戏不能保持足够帧率的时候,ATW能产生中间帧,从而有效减少游戏画面的抖动,但是,ATW不是灵丹妙药,有一定局限性(局限性在后面介绍),开发人员也应该意识到。指在一个线程(称为ATW线程)中进行处理,这个线程和渲染线程平行运行(异步),在每次同步之前,ATW线程根据渲染线程的最后一帧生成一个新的帧
时间扭曲/Timewarp
位置扭曲,Positional Timewarp
(WHY?)位置抖动(Positional Judder):位置抖动是最明显的用基于方向的时间扭曲带来瑕疵之一, 在使用虚拟现实设备时,当头部移动了, 如果在ATW产生图像帧时只考虑了旋转分量,那么任何头部平移分量都将被忽略了。这就意味着当你的头部从一边移动到另一边时,甚至是旋转你的头并且你的转动眼睛,你讲看见离你很近的物体会有多个图像的抖动,这种效果是非常明显的。
(HOW?)位置扭曲(Positional Timewarp):解决位置颤抖的一个可能的方法是实现全位置扭曲,它应用平移和旋转两个分量来修正原始帧,位置扭曲,位置扭曲需要考虑原始帧的深度信息,由不同的量替代图像的一部分。然而,这样产生的中间帧会使物体边缘不闭合,由于没有原始帧中的数据,会导致中间帧某些区域不能被覆盖。
Yaw Correction(脑补翻译)
随着时间的改变,可能会方向会产生偏移,但是现实中人的方向还是正前方的。如下图:
OCULUS-VR-ppt 来自淘豆网m.daumloan.com转载请标明出处.