美文网首页Android开发Daydream
基于Unity3d的Daydream集成开发

基于Unity3d的Daydream集成开发

作者: Galidon | 来源:发表于2016-10-31 17:16 被阅读0次

    一、环境搭建

    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进行了解学习。

    dome位置

    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控制器的学习。

    相关文章

      网友评论

        本文标题:基于Unity3d的Daydream集成开发

        本文链接:https://www.haomeiwen.com/subject/jqeputtx.html