Gvr SDK for Unity 分析(一)
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 Raycaster 的Event 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 Mode为 Word 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 ,具体请实现
如何取消左右两屏显示成普通的显示
答: 在GrvMain 的GvrViewer 组件中,不勾选 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/
Gvr SDK for Unity 分析(一)的更多相关文章
- Gvr SDK for Unity 分析(二)
前言 关于google vr sdk的具体使用,传送门 Gvr SDK for Unity 分析(一) Google Daydream平台已经整合进Google VR SDK 本文环境:Unity5. ...
- Channel SDK (渠道SDK) for Unity
渠道 英文channel,解释:商品的销售路线,也就是我们开发商(CP)都把游戏开发好了,交付给渠道帮我们运营,帮我们推广,帮我们赚钱. Android和IOS渠道 拿安卓和IOS两大平台来说,它们都 ...
- 社交化分享SDK for Unity
前言 社交化分享,即分享到社交网络. 本文主要记录的是在Unity集成社交化分享SDK,现主流的分享SDK有如下: 1.友盟社交化分享 for unity 2.ShareSDK分享 for unity ...
- EasyAR SDK在unity中的简单配置及构建一个简单场景。
首先打开EasyAR的官方网站http://www.easyar.cn/index.html,注册登陆之后,打开首页的开发页面. 下载sdk和Unity Samples. 创建一个unity3d工程N ...
- cardboard sdk for unity 系统分析 - 属性行为分析CardBoard类
一.CardBoard类是个单例类,全局只有一个CardBoard对像且在需要时才生成: CardBoard中主要使用了BaseVRDevice device这个对像,而这个对像也是单例类BaseVR ...
- Android Studio 内置SDK在 unity中使用
1 AndroidStudio 安装好后更新SDK Platforms 2 在 File -> Other Settings -> Default Project Structure 中可 ...
- unity3d如何快速接入渠道SDK之Unity篇
原文链接: http://bbs.tianya.cn/post-414-53320-1.shtml 首先我们讲一下,为什么要介绍这个插件? 是因为这个插件极大的简化了我对接渠道SDK的工作量,精力和时 ...
- 集成讯飞听写iOS sdk到unity遇到的问题:weak成员和strong成员
在unity里集成讯飞语音听写iOS sdk的过程中,遇到一个问题,官方的demo中可以将多次onResults回调返回的结果累积拼接起来组成一个完整的结果,而我集成过来以后就不能累积了,只拿到最后一 ...
- PIE SDK主/次要分析
1.算法功能简介 主要分析功能是采用类似卷积滤波的方法将较大类别中的虚假像元归到该类中,首先定义一个变换核尺寸,然后用变换核中占主要地位(像元最多)类别数代替中心像元的类别数,次要分析相反,用变换核中 ...
随机推荐
- 后台运行进程(background job)
在一些日常业务中,总有一些长时间处理的任务,系统运行这些任务需要一晚甚至一个周末. 这就需要后台运行单元(background work process)来完成,而且其是不会发生超时(time out ...
- NDK-JNI实战教程(二) JNI官方中文资料
声明 设计概述 JNI接口函数和指针 加载和链接本地方法 解析本地方法名 本地方法的参数 引用Java对象 全局和局部引用 实现局部引用 访问Java对象 访问基本类型数组 访问域和方法 报告编程错误 ...
- 115个Java面试题和答案——终极列表(下)
第一篇讨论了面向对象编程和它的特点,关于Java和它的功能的常见问题,Java的集合类,垃圾收集器,本章主要讨论异常处理,Java小应用程序,Swing,JDBC,远程方法调用(RMI),Servle ...
- 【C语言】C语言局部变量和全局变量
目录: [局部变量] · 定义 · 作用域 · 生命周期 · 用static修饰局部变量 [全局变量] · 定义 · 作用域 · 生命周期 1.局部变量 · 定义 在函数(代码块)内部定义的变量称为局 ...
- Android SQL语句实现数据库的增删改查
本文介绍android中的数据库的增删改查 复习sql语法: * 增 insert into info (name,phone) values ('wuyudong','111') * 删 delet ...
- iOS 边框显示不完全
设置边框为1以上就可以了,如果不觉得宽的话!
- iOS--XML三种解析方法( XMLDictionary)、(GDataXMLNode)、(NSXMLParser)
iOS9之后,默认网络请求是https,所有我们要设置一下网络安全,具体设置如下 1.第三方类库 XMLDictionary 下载地址: https://github.com/nicklockwood ...
- [读书笔记] CSS权威指南2: 结构和层叠
层叠样式表中最基本的一个方面可能就是层叠——冲突的声明要通过这个层叠过程排序,并由此确定最终的文档表示.这个过程的核心是选择器及其相关声明的特殊性,以及继承机制. 特殊性 对于每个规则,用户代理会计算 ...
- eclipse如何优化构建的速度(Building)
小Alan在平时的开发中很喜欢做一件事,那就是盯着eclipse的状态栏,看着Build Workspace的进度条一点一点慢慢的走,小Alan坐在电脑面前默默不想说话,就是心中总是有十万匹马在奔腾, ...
- PHP判断字符串中是否包含指定字符串,支持中文哦
RT,随手写的 /** * 判断字符串中是否包含指定字符串 * @var source 源字符串 * @var target 要判断的是否包含的字符串 * @return bool */ functi ...