天天看点

Google VR技术大揭秘VRGoogle VR for AndroidDemo

虚拟现实(virtual reality)技术是一种可以创建和体验虚拟世界的计算机仿真系统,它利用计算机生成一种模拟环境,是一种多源信息融合的、交互式的三维动态视景和实体行为的系统仿真, 使用户沉浸到该环境中。

<a href="https://vr.google.com/">google vr</a>

<a href="https://www.oculus.com/">oculus</a>

<a href="https://www.vive.com/cn/">htc vivi</a>

google vr sdk同时支持daydream和cardboard。 包含了一些用于创建app的简单api和支持daydream手机、daydream控制器的复杂api。同时涵盖了android、ios、unity三大平台。

sdk地址:

在使用之前,我们先运行下官网的项目。导入gvr-android-sdk到android studio, 同步的过程中需要下载很多库所以会比较耗时,另外可能出现build失败的情况,这时可以尝试使用本地的gradle来编译。

gradle版本最好为最新版本。

Google VR技术大揭秘VRGoogle VR for AndroidDemo

项目展示了印加文明遗迹马丘比丘的全景图(panorama):

Google VR技术大揭秘VRGoogle VR for AndroidDemo

在真机上运行时,会有一个cardboard选项。点击上图红色框中的按钮即可进入cardboard模式。

Google VR技术大揭秘VRGoogle VR for AndroidDemo

demo代码的主要逻辑就是加载一张全景图放入vrpanoramaview中。

全景图片andes是由两张图片组成,上面一张是给左眼看,下面一张是给右眼看。

Google VR技术大揭秘VRGoogle VR for AndroidDemo

demo的声音的实现是加载assets目录下的congo.mp4视频到vrvideoview中。

congo.mp4的视频内容也是分为上下部分,上面给左眼看,下面给右眼看。

treasurehunt展示了一个简单到离谱的寻宝游戏,当vr世界中矩形变成金黄色时,点击手机屏幕或者使用daydream的控制器,即可完成寻宝。游戏还伴有音效。

Google VR技术大揭秘VRGoogle VR for AndroidDemo

接收daydream控制器输入示例

使用asynchronous reprojection播放视频示例

由于全景图占内存较大,当加载多张全景图时可能存在内存溢出的情况,所以这里开启largeheap。

Google VR技术大揭秘VRGoogle VR for AndroidDemo

本demo实现一个全景图控制显示的效果。这里主要演示下vrpanoramaview控件的使用。

vr view允许开发者在网站或app中嵌入360度全景多媒体文件(图片和视频)。这个技术主要是提供给传统的开发者,可以通过在app中添加动态内容来提升用户体验。比如旅行或房地产类型的app,可以让用户足不出户就体验到虚拟场景。vr view同时支持web和native app。

vr view同时支持单声道和立体声的图片和视频,但是图片和视频的存储格式必须为equirectangular-panoramic格式,这是一种常见的摄像头尺寸支持的格式。

vr view是客户端的显示技术,那么我们怎么去拍摄符合vr view要求的内容呢?

1,cg 拍摄

vr view的图片不仅仅限制在真实世界中拍摄。cgi(计算机合成图像)可以为所有的东西生成360度全景照片和视频,最流行拍摄解决方案如下:

<a href="http://www.andrewhazelden.com/blog/2012/04/domemaster3d-stereoscopic-shader-for-autodesk-maya/">domemaster3d for maya</a>

<a href="https://developers.google.com/cardboard/jump/rendering-ods-content.pdf">rendering omnidirectional stereo content</a>

下面用伪代码展示如何用vrpanoramaview和vrvideoview展示360度图片和视频。