初探CardBoard:(1)在Unity中实现简单VR场景

为何使用CardBoard

现在的VR越来越流行,各种设备也是百花齐放。然而,对于研究VR刚刚起步的小白来说,昂贵的设备(例如HTC)并不一定是最佳选择。那么Google 的CardBoard就映入了我眼前。

价格低廉

使用它仅仅需要以下设备:

  1. 一个光学盒子 ,淘宝上只需要不到200块钱,只是注意大小要能够放下你的手机;
  2. 一个Android手机,这是唯一的花费点,一个好的手机总可以使你的体验更加良好,最次也得Android5.0以上的手机;

兼容性

Google 的SDK可以完美导入到unity中。

前期准备

  1. 最新版的CardBoardSDK,可以从https://developers.google.com/vr下载,由于谷歌被禁用,也可以从以下地址下载:https://download.csdn.net/download/qq_21854397/10806697
  2. Unity5.1以上,unity从这个版本开始支持VR开发。并且,请配置好Unity Android的开发环境,网上很多教材,就不再赘述。

开始工程

一、简单的环境布置

为了测试方便,我们为场景添加几个简单的物体。

  1. 添加地板:添加一个cube,位置归零,大小如图设置:
    在这里插入图片描述
    为其创建一个蓝色的Material,可以使地板呈现黄色
  2. 在地板上放置物体:我在这里加了一个cube,一样给他一个别的颜色的Materal
  3. 建立游戏角色:在Hierarchy面板右键–>CreatEmpty,改名为Player,将其高度(Y)设置为成人高度(1.6-2)。将MainCamera放置为Player的子物体。ManCamera的位置归零。
    在这里插入图片描述
  4. 场景调整:调整Player的X、Z位置,使相机可以看到cube,最终在Game视图中与此图类似
    在这里插入图片描述
  5. 切换平台:切换到Android平台(新版Cardboard SDK 必须在Android 或者 Ios 平台开发测试)。并在Player Settings中–>XRSetting–>在这里插入图片描述
    勾选VR支持并且选择Cardboard开发。

至此,我们前期的场景已经布置完毕。

二、导入SDK

将下载的最新的CardBoard SDK 包导入unity。

三、SDK基础组件说明

  1. GvrEditorEmulator 预制体:位于GoogleVR–>Prefab下。功能是可以在unity测试中控制相机转动,然而,打包后手机陀螺仪并不受它控制,所以打包apk有没有它无所谓,测试有他比较方便。
  2. GvrEventSystem 预制体:位于GoogleVR–>Prefab–>EventSystem下,功能是处理VR中的交互事件,类似于做UI时会增加EventSystem.
  3. GvrReticlePointer 预制体:位于GoogleVR–>Prefab–>CardBoard下,功能是为相机添加一个瞄准星。
  4. GvrPointerPhysicsRaycaster.cs 脚本 :位于GoogleVR–>Scripts–>EventSystem下,功能是可以为相机发射一条射线,配合GvrReticlePointer,可以与瞄准的物体触发事件。

一个基本功能的VR场景暂时只会用到SDK中的这几个预制体与脚本。

四、将之前的场景布置为VR场景

  1. 为MainCamera添加射线:将*GvrPointerPhysicsRaycaster.cs 脚本拖到MainCamera上。
    在这里插入图片描述
  2. 为MainCamera添加瞄准器:将GvrReticlePointer 预制体添加到camara下。
    在这里插入图片描述
    为了观察方便,我将瞄准器材质(Material)换为红色:
    左键
    在这里插入图片描述
  3. 为Cube物体添加Event Trigger:这样,cube可以检测到相机射线(预制体发出的)与cube的碰撞,从而做出反应。
    在这里插入图片描述
  4. 将GvrEventSystem 预制体添加到Hierarchy面板:用于检测与响应碰撞。
    在这里插入图片描述
  5. 将GvrEditorEmulator 预制体添加到Hierarchy面板:用来在测试中使鼠标可以控制角度。
    在这里插入图片描述

五、在unity中测试

运行项目,使用Alt+左键 或者Ctrl+左键可以控制角度。注意观察准星的变化。

  1. 准星不在cube上
    在这里插入图片描述
  2. 将准星瞄准cube
    在这里插入图片描述

注意:在测试中发现,场景不是左右画面。这是因为Google在新出的SDK中取消了GvrViewerMain这个预制体,在老的版本,GvrViewerMain预制体用来体现左右VR模式。在新的SDK中,不再支持左右分画面,只有打包成为apk在手机上才能看到左右VR模式的画面。

六、打包为apk传到手机

记得选择Android API版本,一定要大于5.1才可以支持VR模式。
在这里插入图片描述

一些问题与解决

打包时遇到的问题

当你打包时遇到一些奇奇怪怪的问题时,可以尝试提高Android API Level,这有可能是由于Google的SDK对低版本的平台支持不够好造成的。

猜你喜欢

转载自blog.csdn.net/qq_21854397/article/details/84484646