5分钟搞懂VR APK的双目渲染原理(上)

举报
平平哥 发表于 2020/02/29 11:24:33 2020/02/29
【摘要】 VR APK的双目渲染是VR终端呈现的基础能力,在通常情况下双目渲染由VR设备厂商的VR SDK中均实现了相关的基础能力。 但在某些特殊的情况下,VR APK确不得不深入了解其中的细节,比如一个典型的场景就是3D影片的播放。 本文从基础入手,力求让开发者搞明白双目渲染的基本原理,以及在应用中可以涉及到的技术细节。

VR APK的双目渲染是VR终端呈现的基础能力,在通常情况下双目渲染由VR设备厂商的VR SDK中均实现了相关的基础能力。

但在某些特殊的情况下,VR APK确不得不深入了解其中的细节,比如一个典型的场景就是3D影片的播放。

本文从基础入手,力求让开发者搞明白双目渲染的基本原理,以及在应用中可以涉及到的技术细节。

 

什么是VR双目渲染

在了解相关知识之前,不妨先做一个有趣的实验:

1、  拿一个比较小的物件(比如一支笔)放在眼前正前方约半米的位置。

2、  闭上一只眼睛。

3、用你的一只手指慢慢向物件靠近,直接触碰到物体。

 

大多数人(某些具备超能力的人除外)会发现在这个实验中,我们没有办法准备的预知到手指何时会触碰到物体。

思考一下为什么?

 

我们知道人眼之所以能看物体,是因为物体上发出的光线,经过了眼睛晶状体的折射后,在视网模上成像后被大脑所接受。

如下图所示:

由于人的两眼之间有一定的距离(我们称之为瞳距),从物体上每一点发出的光线分别到达左右眼,两条光线之间存在一定的夹角。导致同一个物体分别在左右眼视网膜上的成像存在一定细微的差异。人的大脑是个神奇的超级计算机,可以将左右眼的图像自动合成3D的图像。

1582946572651595.png

这就是人眼成像的基本原理。

 

而在VR SDK中双目渲染,就是通过图像计算,直接将左右视网膜上的图像分别生成好,通过显示屏幕分别输出,再通过凸透镜(在VR眼镜中为了降低凸透镜厚度,会采用菲涅尔透镜)直接到达双眼。

1582946582164352.png

要达到模拟过程,所以在VR SDK中,涉及到双目渲染图像合成计算的光学参数有如下几个:

1  瞳距(offset):模拟人眼左右眼之间的瞳距,主要体现为左右显示屏与中间区域的偏移量(毫米)。如,+/- 50毫米


2  可视角(FOV field of view):模拟人眼可以看到的最大角度,参数具体形态为上下左右四个可视角。市面上的VR设备的FOV是指水平方向的最大可视角,比如PICO一体机的设备为102度。


3  渲染画面宽高(renderWidth/renderHeight):输出画面的象素宽高度,具体呈现为设备显示屏幕的像素,比如PICO Neo一体机左右两个屏都是2K屏,该值即为:2048/2048。

 

4  视椎体的极大值/极小值( depthFar/depthNear):定义视椎体远近可视范围,只有视椎体内的体物才会被渲染输出。

 

5  透镜焦距(Convergence):定义VR眼镜中的透镜的成像焦距。

 

6  反畸变系数(Anti-distortion):定义VR眼镜中的透镜的畸变系数,用于成像的反畸变计算。

 

 


【版权声明】本文为华为云社区用户原创内容,未经允许不得转载,如需转载请自行联系原作者进行授权。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。