• 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,在GoogleVRDemoScenesHeadsetDemo ,GoogleVRDemoScenesControllerDemo

    HeadDemo

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

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

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

    ControllerDemo

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

    答疑

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

    场景中没有准星?

    答:把GoogleVrPrefabsUIGvrReticle.prefab 拖动到 GrvMainHeadMain Camera

    image

    场景中的GameObject不能被选中?

    答:1. 给Main Camera添加 Physics Raycaster

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

    image

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

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

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

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

    image

    如何让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/

  • 相关阅读:
    C#初识
    SQL 语言基础
    类;类型
    输入一元二次方程的三个参数,a,b,c,判断是否为一元二次方程,并求解
    输入一个1-100之内的数,判断是否跟7有关
    输入身高、体重、性别,判断是否是标准体重,男性标准=(身高-100)+-3,女性标准=(身高-110)+-3
    分别录入年月日,判断是否是一个正确的日期
    面向对象基础--面向对象思想(理解)
    2015-01-04 Javascript
    2014-12-28 iframe,style,body style
  • 原文地址:https://www.cnblogs.com/zhaoqingqing/p/5537988.html
Copyright © 2020-2023  润新知