Google Cardboard 虚拟现实眼镜开发日记(一)




虚拟现实技术简介


不得不说这几年虚拟现实技术逐渐火热,伴随着虚拟现实设备的价格迅速平民化,越来越多的虚拟现实设备来到了我们眼前,也因此虚拟现实方面的开发离我们也越来越近。


这几年迅速崛起的 Oculus,其成功就在于拉近了虚拟现实与群众的距离,把原本价格高不可攀的虚拟现实设备放到了我们可以触手可及的位置,Oculus 的技术开辟了全新的体验和可能性,不仅仅在游戏领域,还在生活、教育、医疗等诸多领域拥有广阔的想象空间,Facebook 在 2014 年 7 月宣布以 20 亿美元的价格收购 Oculus。


据说 Oculus 的逼真程度是非常之高的,和国内目前比较容易接触到的魔镜一类效果差距是很大的,Oculus 官方宣称他具有 110 度的视角,并且带有头部姿态传感器,Oculus 通过不断地优化大大降低了头痛、恶心感,并且利用全位置跟踪功能和高分辨率的显示屏,提供了更加逼真的感受。


Oculus Rift 一些早期版本导致使用者出现恶心或神志不清的状况,但最新的“Crescent Bay”推出之后,这种情况很少出现了。


造成头痛、恶心感的主要原因是延迟。Oculus 团队内部有一个词叫 Motion-to-photons latency,意思是指从玩家运动头部到在屏幕上看到新图像为止的一个周期里所产生的延迟时长总和,Oculus 的任务就是尽可能地削减整个流程产生的延迟时长,来消除恶心感。


最近 PewDiePie 首次将 Oculus Rift 头戴式显示器和能够在 3D 空间内感知手势动作的 Leap Motion 体感控制器组合在一起,实现了当用户移动头部并完全沉浸在 3D 虚拟环境中时能够看见自己的双手。







所以不得不说 Oculus 是一款很酷的产品。


除了 Oculus 外,其他很多虚拟现实设备也在发展当中,如:HTC的 Vive VR,三星的Gear VR,Gear VR 的硬件制造者是三星,但其虚拟技术的提供者是 Oculus。 Gear VR 能够提供完全虚拟现实的体验。但它使用三星智能手机代替计算机来驱动显示器。


还有增强现实领域的微软的 HoloLens,整体表现令人惊艳。




最后介绍 Google Cardboard,我们的虚拟现实眼镜开发入门教程便是基于 Cardboard SDK for Unity。


于北京时间 2015 年 5 月 29 日凌晨 0:30 在美国旧金山举办的 2015 谷歌 I/O 开发者大会上,素来以慷慨著称的谷歌并没有像以往那样大派礼物,除了三星或者 LG 智能手表的二选一外,开发者还可以领到一个小小的黄色纸板盒 Cardboard。不过,这个看起来非常寒碜的再生纸板盒却是 I/O 大会上最令人惊喜的产品,这就是谷歌推出的廉价 3D 眼镜。






Cardboard 简介


Cardboard 最初是谷歌法国巴黎部门的两位工程师大卫·科兹(David Coz)和达米安·亨利(Damien Henry)的创意。他们利用谷歌“20%时间”规定,花了 6 个月的时间,打造出来这个实验项目,意在将智能手机变成一个虚拟现实的原型设备。


Cardboard 纸盒内包括了纸板、双凸透镜、磁石、魔力贴、橡皮筋以及 NFC 贴等部件。按照纸盒上面的说明,几分钟内就组装出一个看起来非常简陋的玩具眼镜。凸透镜的前部留了一个放手机的空间,而半圆形的凹槽正好可以把脸和鼻子埋进去。


Cardboard 只是一副简单的 3D 眼镜,但这个眼镜加上智能手机就可以组成一个虚拟现实(VR)设备。


要使用 Cardboard,用户还需要在 Google Play 官网上搜索 Cardboard 应用。它可以将手机里的内容进行分屏显示,两只眼睛看到的内容有视差,从而产生立体效果。通过使用手机摄像头和内置的螺旋仪,在移动头部时能让眼前显示的内容也会产生相应变化。应用程序可以让用户在虚拟现实的情景下观看 YouTube、谷歌街景或谷歌地球。


Cardboard 原理


CardBoard 的虚拟现实效果是由一款 CardBoard 与一部安卓手机结合而成,眼镜镜体通过透镜加屏幕的原理,将虚像呈现在人的明视距离处实现了沉浸式的虚拟现实感,目前国内虚拟现实眼镜(如暴风魔镜等)大都是这个原理,只不过做了细致的包装,使得佩戴更加舒适,下面为其原理图:




而屏幕即为一部安卓系统的手机,手机的分辨率与像素密度越大显示效果越好,由于采用了透镜放大与分屏显示的原理,如果分辨率较低,颗粒感会比较严重。


手机屏幕上需要分屏显示虚拟环境,开发者还需要调用手机内部陀螺仪等传感器进行视角转变。这一部分的开发无疑有很多选择,使用纯 Android 的 SurfaceView 与 openGL ES 开发可扩展性很强,但是相应的复杂度比较高,导入 3D 模型等都需要手写代码。亦或者使用 3D 引擎如 Unity3D 等进行开发,适合开发游戏,复杂性较低,模拟左右双眼只需要两个摄像机就可以搞定,但是开发复杂应用又会力不从心。总之在开发前要根据项目进行选择开发的方式。


由于 Unity 引擎功能强大,基本上能适应大部分需求,而且开发便利,资料很全,最关键的是 Google 提供了一个 Cardboard SDK for Unity,可以很方便的进入虚拟现实的世界,所以我们毫无疑问要站在巨人的肩膀上开始旅行了。


本篇作为系列的开篇,主要是讲了一些虚拟现实的技术和原理,下一篇就会带领大家去看一看谷歌的 Cardboard SDK for Unity,之后还会教大家非常简单的做出自己的第一个 CardBoard 应用,大家从淘宝上花不到 10 块钱买一个 Cardboard 或者买个暴风魔镜就可以测试自己的虚拟现实应用了,敬请期待~


VIA  csdn

// share