Hello,Cardboard!!-如何开发一个最简单的Cardboard虚拟现实应用(一)

[原创文章,转载请注明出处,谢谢 !]

温馨提醒,本篇第一节主要介绍cardboard虚拟现实系统的组成,如果只想看如何开发的具体步骤请直接跳到第二节^_^

前述:恕我啰嗦一下,主要照顾对cardboard不太了解的朋在,Cardboard是由Google公司的两位巴黎办公室的员工利用业余时间创作出来的作品,它最大的特点就是将原来人们以为高大上的虚拟现实技术以廉价的方式带进了公众的视野,到目前为止,google已推出了改良版的cardboard 2代盒子,相比1代,2代改善了成像,增加了视野范围等。软件方面,google推出了两套SDK代开发者使用,一套是cardboard sdk for unity,这是专为unity游戏开发引擎开发的开发工具包,另一套就cardboard sdk for android,这是专为android系统开发的工具包。其它的知识,随着朋友们逐步参于到社区活动当中,会有不断深入了解。

本帖记录了我如何作为一个小白开发出一个cardboard虚拟现实系统的整个过程,希望能帮助同样是小白,而又对虚拟现实非常感兴趣的朋友开始进入这一充满想像力的技术领域。


 

一、我们来看一下整个系统的组成:

解释一下上面图中的含义,

1、一个cardboard虚拟现实系统包含了硬件和软件;

2、硬件包含了一个Cardboard盒子,Cardboard盒子相当于整个系统的支架,它长成这样:

其采用分屏式3D成像原理,使每只眼睛只能看到手机屏幕的一半,然后通过软件在屏幕上生成左右两个画面,同时这两张画面按照人的左右眼视距对同一场景进行显示,这样,最终在人的大脑中加工成3D立体画面感。

像这样:

3、Cardboard除了需要实时生成像上面这样的3D画面,为了实现沉浸式虚拟现实的效果,它还要做一件重要的事-追踪玩家头部转动,并根据转动角度实时地调整生成的3D画面,这一系列的活动,都是在智能手机上完成的,这里提一下,cardboard采用手机来作为系统的一部份,使得大多数人都能轻易地体验虚拟现实,但其不足之处亦非常明显,即性能受限,对于大型动作游戏场景无法获得较高的帧率,影响了玩家的体验。关于cardboard如何发挥出它的最大优势,找到性能和效果的平衡,带给用户最好的体验,也正是要探究的一个重要问题。

4、硬件部份还有一个重要角色,即外围交互设备;

在虚拟的世界中,玩家有一个最本能的需求,即与其中的角色进行交互,玩家看到的、听到的都是由手机中的软件实时生成的,从技术层面上说,这种交互就是与手机中软件应用的交互,因此必然需要借助一些穿戴的硬件设备来将玩家的身体信息采集后传入手机中。

当前还没有一套完整的标准去规定外围设备应该做成什么样的?采用什么协议与主机交互?因此,外围设备的开发现阶段也是针对性的,不同的开发平台,外设之间不能直接通用,比如为oculus开发的设备也许就不能直接运用于htc的vive;

在虚拟世界中,玩家可以以全身参于与其中角色的交互,交互方式丰富多样,也许不会有一款外设将所有交互方式都统一。因此,怎样设计和制作cardboard虚拟现实系统的外围交互设备,使其给玩家在不同的场景下带来最大的方便和乐趣,也是要探究的一个重要问题。

 

从整体虚拟现实体验上看,硬件性能和舒适度的提升,会对体验的提升产生立杆见影的效果,而且在影响玩家体验的几大因素之中,许多也只能依靠硬件方案来解决。

到此为止,Cardboard的硬件部份就简单浏览了下,接下来看看Cardboard的软件部份。

5、软件部份包含了Cardboard的一个个应用,以及应用运行的平台。到目前为止Cardboard官方提供SDK已经同时支持android平台和ios平台。同时Cardboard也采用非常流行的unity3d游戏引擎来开发应用。

系统图中所说的unity3dappforcardboard就是使用unity3d+cardboardSDKforUnity插件开发出来的APP。使用unity3d你可以直接生成运行于android或是ios的unity3d应用。

因此,在开发cardboard之前,需要先学习unity3d游戏开发的基础知识。了解android和ios开发的基本过程。

unity3d开发方面的基础知识,可以通过英宝通unity教学视频来学习。

android和ios开发的基本过程,请百度之。

二、Cardboard硬件的组装:

组装即是把上面第一节所说的硬件各部份组合到一起。即:外设+Cardboard盒子+手机,当前我们要使用的外设是蓝牙手柄,手机选用samsun note3,盒子使用google在今年推出的cardboard 2代,所以硬件的实例即是:蓝牙手柄+Cardboard2015+samsun note3。

组装过程如下:

1、打开cardboard2015包装,从中抽取出cardboard,如下图所示:

2、仔细翻看,你会找到盒子上打印的组装过程图示,按图示进行操作:

3、简单三步,同时将你的手机插入镜片前面的纸板中,你就可以得到如下的成品:

4、蓝牙手柄无需做结构上的组装,是与手机通过蓝牙协议进行通信,在后面软件开发时会讲到。

到此,整个cardboard系统的硬件部份就完成了,是不是很简单?你也可以按照盒子的google的官方设计图纸进行制作,见本站另一篇帖子:

其实说简单也不简单,cardboard虽然由非常容易获取的材料经过简单工序加工而成,但其中各种结构参数将直接影响到玩家眼中的成像,以及佩戴舒适度,如何提升虚拟现实眼镜的成像质量?如何提升玩家佩戴舒适度?这也直接决定了一款虚拟现实产品的市场竟争力,因此,这一方面也是VR研究的重要内容。

三、软件开发

对于大多数浏览本帖的朋友,也许更关心的是如何开发出具有高度体验值的软件应用。软件开发涉及需求研究、架构、实现等多个方面,好的VR软件应用,应该是有吸引玩家的内容和高质量的体验效果,所以必须从玩家当中去寻找需求,不断优化性能以提升用户体验。

如何为cardboard系统开发虚拟现实软件应用呢?第一节中说到,cardboadr应用其实就是运行于android或者ios平台上的应用程序,那么也就是说开发cardboard应用其实就是开发android APP或者ios APP。但不用担心,我们有unity这一开发平台,unity提供了完整的游戏引擎以及可见即可得的开发环境,同时unity还可以将你开发的同一应用直接生成android app或者ios app,你所要做的就是在它开始编译前选择相应的平台即可,如下图:

所以,cardboard软件开发者主要做的事情即是使用unity开发平台来开发基于unity3d游戏引擎的应用。

然而,cardboard应用又不同于一般的unity3d应用,cardboard应用要实现以下几个基本的需求:

1、需要模拟人的头部和两只眼睛;

2、需要获取手机中的重力传感器、陀螺仪等传感器的数据,对其处理后生成稳定的姿态数据,用来控制头部模型的姿态;

3、需要在两只眼睛上各放置一个摄像头,并将两个摄像头的视面分别显示在手机屏幕的左右两边;

4、需要对显示在手机屏幕左右两边的图像进行失真较正,使玩家通过透镜中看到的画面没有形变;

这些基础性的需求,都由google推出的cardboard SDK for unity实现了,开发者所要做的就是将这个SDK导入unity项目中,并根据自己的需要,去调用SDK提供的接口即可;

根据以上的讨论,最后,我们来开发一个简单的cardboard APP for Android。


 

(以下开发采用的cardboard SDK为0.5.2,Unity版本为:5.5.2f1)

一、搭建开发环境:

1、在unity官网下载unity开发工具:http://unity3d.com/cn/get-unity,并安装;

你可以下载一个免费的个人开发版,这是真正的免费,免费版除了一些功能不具备以外,其它都与专业版没有差距,对于初入的开发者而言完全足够:

2、下载android SDK(由于cardboard SDK是一个unity的android插件,所以在开发过程中可能碰到由于android SDK的版本与cardboard SDK不匹配的情况,这时,请将android SDK进行在线更新即可,如果被墙了,可以通过设置代理来更新,具体参考http://www.linuxidc.com/Linux/2015-01/111958.htm)

3、在github上下载cardboard SDK for Unity:https://github.com/googlesamples/cardboard-unity (建议watch这个项目,这样你可以即时获取到该项目的最新信息和发布情况)

二、打开unity,创建一个项目:

创建后:

三、导入cardboard SDK:

1、首先删除默认创建的Main Camera;

2、导入SDK:

在打开的文件选择器中,找到你下载的cardboard sdk for unity package,并选中:

在打开的包对话框中选择ALL,并点击导入:

导入后可以在项目视窗口看到cardboard目录和plugis目录:

3、按上面同样的步骤导入cardboard官方提供的一个demo包:

4、双击DemoScene目录下的DemoScene场景文件,即可打开一个演示场景:

四、生成android apk安装文件:

1、选择菜单栏的file菜单,在下拉菜单中选择build setting菜单:

在打开的对话框中先择择player setting:

在属性视窗中,有几处需要修改:

公司名称和产品名称要与包中径中的两个名称保持一致:

然后ctrl + s进行保存设置。

回到build setting对话框,选择build按钮,并在打开的文件存放对话框中选择你想要存放生成文件的路径,然后等待unity自动生成android apk安装文件。

到此,将生成的APK安装到你的手机上,然后点击运行,然后将手机插入cardboard盒子,你就可以体验到沉浸式的虚拟现实场景了^-^

需要补充unity和android开发的知识的同学可以去补习一下了。后面我们将逐步开发虚拟现实第一人称控制器,以及将蓝牙手柄接入游戏中。

 

posted @ 2015-11-25 02:09  兵形东华  阅读(9850)  评论(2编辑  收藏  举报