Gvr SDK概述

通过谷歌VR SDK for unity 为Android和iOS 构建虚拟现实应用程序

unity SDK在Android上支持构建应用程序for daydream 和 cardboard。对于iOS你只能为cardboard构建应用程序。

google VR SDK要求unity5.2.1或更高版本。

本文更新于:2016-06-20

Gvr 核心功能

  • 头部追踪
  • 并排立体呈现(模拟人的左右眼)
  • 空间音频rendering
  • 检测用户与系统的交互(通过触发或控制器)
  • 自动化配置 vr 设备参数,或提供特殊配置
  • 立体图像失真校正
  • 当你的手机插入到VR 设备时,准星自动聚焦在帮助中心
  • 自动陀螺漂移校正

英文原版:https://developers.google.com/vr/unity/#features

Gvr 附加功能

  • 在Unity编辑器中模拟头部运动,按Alt或Ctrl 进行运动
  • 对不同的VR设备,提供相似的视野(Control the approximate field of view regardless of differences in VR viewer configurations)
  • 遵守相机变焦效果VR-safe的方式,即兼容头跟踪
  • 恰当地支持画中画窗口,所以在调整屏幕的位置,失真校正后仍可见
  • 动态调整 stereo level(立体水平) 以减少眼疲劳
  • 很容易地确定用户注视的方向,例如,射线检测
  • 与Canvas UI 元素交互,可以通过目光和触发器
  • 使用同一个代码函数,处理触发和界面点击检测
  • 支持Image Effects(图像效果)和 Deferred Rendering(延迟渲染),或绕过这以增加支持FPS。

英文原版:https://developers.google.com/vr/unity/#features

准备工作

GVR SDK for Unity 下载: https://github.com/googlevr/gvr-unity-sdk

GVR 在线文档: https://developers.google.com/vr/unity/#features

Google APIs for Unity: https://developers.google.com/unity/

本文环境:Unity 5.3.1 x64 + gvr 0.8

搭建环境

1、如果你只需要SDK文件(GoogleVRForUnity.unitypackage) 可以参考:Github 下载单个文件 。当然你也可以clone整个项目

2、创建新工程,导入gvr package

Demo分析

sdk中有两个Demo,在GoogleVR\DemoScenes\HeadsetDemo ,GoogleVR\DemoScenes\ControllerDemo

HeadDemo

这个demo是gvr模拟的头部运动的Demo,操作方法:在PC上 按住Alt+移动鼠标 模拟头部转动,按住 Ctrl+移动鼠标 模拟头部倾斜

上述两种运动都是 GvrMain\Head 的transform属性在发生改变

当准星选中某个GameObject时,会有一个准星放大缩小的动画,实现代码请看 HeadDemo\Teleport.cs

ControllerDemo

此demo大概是通过连接手机来控制,实现代码请看ControllerDemo\ControllerDemoManager.cs

答疑

条件:我是直接使用GvrMain.prefab,文中的Main Camera是指:GrvMain\Head\Main Camera

场景中没有准星?

答:把GoogleVr\Prefabs\UI\GvrReticle.prefab 拖动到 GrvMain\Head\Main Camera

场景中的GameObject不能被选中?

答:1. 给Main Camera添加 Physics Raycaster

2. 在Physics RaycasterEvent Mask 选择要接收事件的 Layer

如何让某个GameObject可以被选中?

答:1. 给该GameObject添加 Collider (可以是BoxCollider,SpereCollider等等)

2. 再给该GameObject添加 Event Trigger (事件触发器)

3. 给该GameObject 绑定事件处理脚本,该脚本中包含以下函数 Enter ,Trigger ,Exit ,具体请实现

如何让UI元素显示在3D场景中?

答:1. 以UGUI为例,创建一个简单的UI

2. 修改Cavas 的Render ModeWord Space,这样它就可以渲染在世界空间中,而不是渲染在最顶层的屏幕上

3. 调整UI的位置到 Main Camera 视野内

如何接收场景中UI按钮的点击事件?

答:1. 创建好UI之后,在Hierarchy视图中找到 EventSystem

2. 给 EventSystem 添加 GazeInputModule

3. 把EventSystem 上的 Standalone Input Module 禁用或 把顺序调整到 GazeInputModule下,或者 Remove它

4. 给UI按钮 绑定事件处理脚本,该脚本中包含以下函数 Enter ,Trigger ,Exit ,具体请实现

如何取消左右两屏显示成普通的显示

答: 在GrvMainGvrViewer 组件中,不勾选 VR Mode Enable

参考资料

How to Make a VR Game With Unity and Google Cardboard

英文原版:https://www.raywenderlich.com/116805/make-vr-game-unity-google-cardboard

中文翻译:http://www.tairan.com/archives/10636/

更多相关文章

  1. 如何查看模拟器上的sqlite数据库
  2. React Native 项目运行在安卓模拟器Http请求报错
  3. 第二次WIN7下配置Android模拟器环境手记
  4. android adb 调试总结
  5. Android虚拟机安装卸载软件
  6. 用x86的模拟器内核记得安装intel的haxm
  7. android input 命令总结
  8. android jni方法模拟高频按键点击
  9. 初学Android的几个常见问题

随机推荐

  1. Android(安卓)TextView中显示单行过长的
  2. Android中ProgressDialog的简单使用.
  3. ANDROID ADB工具使用
  4. android 中使文本(TextView 、button等可
  5. Android:adb常用命令汇总
  6. Android:控件GridView的使用
  7. android布局属性详解
  8. android 自定义SeekBar
  9. Android消息机制不完全解析(上)
  10. )Android之getSystemService