一、环境搭建
Daydream集成说明,方法可以通过谷歌的vr开发网址查看:https://developers.google.com/vr/daydream/overview
支持:开发平台AndroidStudio、Unity、Unreal
以Unity为例子:
官方下载说明:https://developers.google.com/vr/unity/download
需要下载:
1、Untiy3d 5.2.1版本或以上:https://unity3d.com/cn/get-unity/download/
2、下载Daydream SDK for unity:
git clone https://github.com/googlevr/gvr-unity-sdk.git 。
二、开发集成:
1、安装好unity3d后可以,打开新建一个项目Project。
2、导入Daydream sdk,在Unity的Assets视窗右键->Import Package->Custom Package..,将下载好的sdk导入。
3、可以看到Project视图中多出了两个文件夹,可以找到sdk里的demo对sdk进行了解学习。
4、Demo运行ControllerDemo,这个是一个可以用控制器来控制运行的Demo,控制器因为还没有,可以用手机来代替,手机安装controller_emulator.apk(这个apk在unity的sdk中没有找到,但是在android的sdk中apks文件夹里找到了),用usb接口连接电脑就可以模拟Daydream的控制器了。
谷歌控制器原理:
Daydream手柄是不是动捕呢?实际上,你可以称其为“动捕手柄”,但又要明白它和其它产品是有区别的。下面就来看看动捕到底应该如何理解。
6自由度(DOF)
由度指的就是物体在空间里面的基本运动方式,总共有6种。任何运动都可以拆分成这6种基本运动方式。这6种基本运动方式又可以分为两类:位移和旋转。
位移包括:前后、左右、上下三种。
旋转包括:前后翻转(ROLL)、左右摇摆(PITCH)以及水平转动(YAW)三种。
这个时候再来解释Daydream手柄就容易多了,首先它是动捕,但它只能追踪前后翻转、左右摇摆以及水平转动三个旋转的自由度,无法知道手柄在空间里的位移情况。所以,如果要准确描述Daydream手柄,就应该称其为3自由度或3DOF动捕手柄。
对比之下,HTC Vive的追踪系统让手柄拥有6个自由度,包括位移的3个自由度。其结果就是,你没法用Daydream的手柄做伸手拣地上物品这样的动作,但Vive的手柄可以。
IMU和惯性动捕
IMU是Inertial Measurement Unit的缩写,也就是惯性测量单元。它通常包含加速度计、陀螺仪和磁力仪三种传感器。以前主要用在飞机上,现在大部分智能手机都有了,成本比较低。使用IMU可以测量速度、方向和重力,这种动捕技术也就是我们常说的惯性动捕。
通过IMU可以很好地追踪物体3个旋转自由度的运动,Daydream手柄基本可以肯定用的就是IMU传感器了。而这也是为什么Google可以让开发者用一款Android手机来替代Daydream手柄进行开发,因为手机上也有IMU。
惯性动捕的问题是很难判断物体在空间里的绝对位置,因而位移运动的3个自由度无法被追踪。
光学动捕
除了惯性动捕,另一个常被提到的技术是光学动捕,或者是光学空间定位,通过精确的空间位置可以判断物体的位移及旋转。
光学动捕通过一个或多个摄像头持续不断过地追踪物体上的Mark点,这些点以特定的模式排列,然后通过一系列的算法来判断出物体的位置。算法通过将已知Mark点的位置与物体上Mark点位置进行比对,判断出物体的绝对位置和旋转方向。
Mark点的数量、位置和排列是有科学依据的。例如,如果只用4个构成正方形的Mark点,就无法判断物体是不是倒过来了,或是旋转了90度。除此之外如果Mark点被挡住了或是受环境光影响而追踪不了,也会影响位置的判定。
此时通常要投入更多的摄像头和计算性能来进行持续和精确地追踪,导致成本大增。所以很多动捕技术方面提供商,比如诺亦腾,会采用光学和惯性动捕相结合的方式来实现6自由度的精确追踪,从而降低摄像头使用数量及对计算性能的需求,控制成本。
创建自己的Daydream项目
1、在Assets中新建一个Scene,打开可以看到Hierarchy视图
2、将GoogleVR里的控件加入到新建的scene中:GoogleVR->Prefabs->GvrViewerMain,GoogleVR->Prefabs->Controller->GvrControllerMain。
运行后就可以看到自己项目的vr效果了
在项目中使用控制器
1、需要一台4.4以上android手机,安装控制器应用,usb与电脑连接。
2、在Main Camera下创建一个Sphere,再在Sphere下创建一个Sphere,改名位dot,dot的position的z设为20
3、创建一个脚本用来接受控制器的信息来操作dot。
脚本如下:
将写好的脚本托到Sphere上,运行后,转动控制器就可以发现dot在跟着控制器的方向转动了。
因为本人也是第一次使用untiy3d,所有还要很多地方需要学习。而控制器的一些基本使用方法在googleVr的demo中都有,大家可以通过demo来加深对Daydream控制器的学习。