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

  • 为何使用CardBoard
    • 价格低廉
    • 兼容性
  • 前期准备
  • 开始工程
    • 一、简单的环境布置
    • 二、导入SDK
    • 三、SDK基础组件说明
    • 四、将之前的场景布置为VR场景
    • 五、在unity中测试
    • 六、打包为apk传到手机
  • 一些问题与解决
    • 打包时遇到的问题

为何使用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对低版本的平台支持不够好造成的。

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

  1. 在Unity中实现简单的动画转场

    在Unity中实现简单的动画转场 1 思路 1.1 原教程的思路 1.2 我的思路 2 制作转场动画 3 代码 3.1 Transition 3.2 SceneLoader 3.3 测试 4 成品 看 ...

  2. 【Unity-学习-013】EasyAR4.0稀疏空间地图 在Unity中编辑扫描的场景

    之前遇到一个实验性的项目,用空间地图做场景识别,然后和游客互动拍照的需求.第一感觉就想到了 EasyAR4.0主推的空间地图功能.对于EasyAR的详细信息,请直接移步官网.那里有详细的介绍和简单的入 ...

  3. Protobuf(Protocol Buffer)在Unity中的简单应用

    一.Protobuf的概念 高效轻便的数据存储格式(序列化和反序列化). 与平台和语言无关. 在网络通信和数据存储上应用广泛. 二.Protobuf的工作流 环境安装 使用Visual Studio2 ...

  4. Unity中的AI算法和实现2-有限状态机FSM(上)

    本文分享Unity中的AI算法和实现2-有限状态机FSM(上) 在上一篇文章中, 我们基于Waypoint构建了一个最简单的AI怪物, 这个怪物可以在几个点之间巡逻. 本篇文章会在此基础之上, 添加怪 ...

  5. Photon在unity中的使用

    ps:期末老师要求的一篇3000字的玩具级别论文,基本是官网和api手册原本就有的.基本我就是个搬运工,不知道有什么用,就先扔上来了.用的是writage,让word转为markdown,可能会出现一 ...

  6. unity做一个小游戏(适合零基础或者巩固加深unity中的工具类的用法)

    今天跟着官方unity做了一个小游戏.巩固一下之前学习的unity的知识.注意unity的版本要在2018.3以上 大概游戏是这样子的如图:人物只能控制左右移动,空格发射饼干,动物从屏幕上方随机出现在 ...

  7. Unity中Skinned Mesh Renderer Blend Shapes小试

    第一个应用:如何使用网格渲染器Blend Shapes Unity制作木棍剥皮 1. Intro 2.Modeling (Blender) 打开Blender 软件 调整视角 然后快捷键: Shift ...

  8. 一种城市道路网络的随机生成方式(Unity中可视化)

    一种城市道路网络的随机生成方式(Unity中可视化) 1. 说在开头 2. 有限元网格划分 2.1. 什么是有限元 2.2. 前沿推进法/波前推进法(Advancing Front Technique ...

  9. 【VR开发】Unity中VR开发的基本设置-如何设置Player视角

    [背景] 上一篇博文,我们通过导入需要的插件完成了Unity中VR开发的环境准备,接下来就需要在项目中真正着手布局VR,首先就是作为玩家的视角如何导入. [设置方法] 在Hierarchy中新建一个空 ...

最新文章

  1. cxgrid动态创建列
  2. 关于ElasticSearch性能调优几件必须知道的事
  3. 不同服务器数据库表连接查询修改,如何连接多个数据库,mysql中的服务器和查询两个表中的对方?...
  4. IIS7开启gZip动态压缩
  5. 基于LVS对LAMP做负载均衡集群
  6. com.alibaba.easyexcel导出指定的列_使用Python导入导出Excel表格
  7. 默认网关出现乱码_SpringCloudZuul服务网关
  8. static、const、static const分析
  9. 2018年美赛E题M奖论文心得分享
  10. KMO检验和Bartlett球形检验
  11. javascript键盘事件
  12. IBM副总裁胡世忠:数据是新的自然资源
  13. php ci框架后台管理,ci: 羽翼后台管理平台是一个简单的博客系统,后端基于CodeIgniter,前端基于Semantic UI 2.2.10...
  14. Android RemoteViews----RemoteViews应用
  15. 面试之路(6)-BAT面试之操作系统内存详解
  16. 百度2023届暑期实习生面经-产品运营岗
  17. 【LeetCode 5-中等】最长回文子串(高清截图)
  18. 企业职工工资在线管理信息系统【生产实习课设报告】
  19. 数仓中应该出现的所有表格
  20. linux tty终端 录屏,在Linux上录制终端的操作

热门文章

  1. 天天生鲜项目 python邮箱_python3 之 天天生鲜 项目(初学者)1
  2. 酒旅板块复苏,亚朵继续上市梦,距离“新住宿经济第一股“还有多远?
  3. 2018最新云知梦Laravel5.4电商实战项目VIP实战
  4. 斯坦福sr860锁相放大器原理介绍
  5. 这是一个通过c语言来把NX10.0画的直线等关键数据提取出来,可以通过电脑端显示,并可以通过CIMCO Edit8来验证;
  6. 计算机培训微课设计与实现,微课设计与制作
  7. Cassandra入门调研
  8. 小程序获取openid和unionid服务号获取unionid服务号消息推送
  9. 通过Zadig给蓝牙适配器安装驱动后,无法恢复的解决办法
  10. 2021年全球与中国滚齿机行业市场规模及发展前景分析