前言

关于google vr sdk的具体使用,传送门 Gvr SDK for Unity 分析(一)

Google Daydream平台已经整合进Google VR SDK

本文环境:Unity5.3.1 x64 , Gvr SDK 0.8 , VS2013

单词翻译

stereo:立体的; pose:姿势; gaze:凝视,注视;Reticle:十字线,准星 ;Responder:应答者;

provider:提供者;ProviderFactory:工厂类; Emulator:仿真程序,仿真器

Perspective:透视,3D相机;Orthographic:正交,2D相机;

脚本参考


Scripts\

GazeInputModule.cs

功能:检测用户与系统的交互(通过触发或控制器)

实现UnityEngine.UI.BaseInputModule接口(BaseInputModel继承自UnityEngine.UI.UIBehaviour)

所以uGUI的元素在被选中或trigger ,touching 触发的事件,可以传递出来。

GvrEye.cs

并排立体呈现模拟,有Left eye,Right eye,每一个控制 stereo 的单个camera

GvrHead.cs

用户头部跟踪模拟,提供头部跟踪的数据给camera,在头部运动过程中它附着的transform属性也会同步发生改变。

GvrPostRender.cs

模拟镜头对立体画面的失真校正

GvrPreRender.cs

清除整个屏幕。

原理:

Clear Flags 确定了屏幕哪些部分将被清除,这是为了方便使用多个摄像机渲染不同的游戏元素,每个相机在渲染时都会存储颜色和深度信息。

屏幕的未绘制部分是空的,默认情况下会显示天空盒。

当你使用多个相机时,每一个相机都将自己的颜色和深度信息存储在缓冲区中,还将积累每个相机大量的的渲染数据。当场景中任何特定的相机进行渲染时,你可以设定清除标记来清除缓冲区信息的不同集合

camera.clear flags=Solid Color (纯色)表示屏幕上的任何空的部分将显示当前相机的背景颜色。

资料参考:Unity 3D-- 摄像机Clear Flags和Culling Mask属性用途详解

GvrProfile.cs

GvrView.cs

可以对vr view进行特殊的配置

Pose3D.cs

StereoController.cs

绑定在MainCamera上,两个GvrEye渲染stereo view 内容的控制器

StereoRenderEffect.cs


Scripts\Audio\

GvrAudio.cs

空间音频渲染,负责Gvr音频类和系统原生音频系统进行通信

GvrAudioListener.cs

GVR音频监听器组件,可提高音频监听器,提供先进的空间音频功能。

GvrAudioRoom.cs

GVR音频室组件,对绑定此组件的gameobject,模拟房间的环境影响

GvrAudioSource.cs

audiosource组件增强,给audiosource提供先进的空间音频功能。


Scripts\Controller\

GvrController.cs

GVR Controller API的主入口

Scripts\Controller\Internal\ControllerProviders

Scripts\Controller\Internal\Emulator

EmulatorManager

包括:自动陀螺漂移校正加速器事件监听器,touch事件监听器,指南针事件监听器,按钮事件监听器

该目录下有以下文件:

  • EmulatorManager.cs
  • EmulatorClientSocket.cs
  • EmulatorConfig.cs
  • EmulatorDataTypes.cs
  • PhoneEvent.cs

Scripts\UI\

GvrGaze.cs

Class that can perform gaze-based selection, as a simple alternative to the more complicated path of using GazeInputModule and the rest of uGUI.

可以执行准星选中的操作,比起使用gazeinputmodule ,它作为一个简单的替代

GvrReticle.cs

当用户凝视任何对象时,在该对象前绘制一个十字准星


Scripts\VRDevices\

包括各种平台及运行环境的模拟

接口

IGvrGazePointer.cs

为GazeInputModule提供接口,接口中定义输入输出的处理函数

主要逻辑处理在GazeInputModule.UpdateReticle

if (gazeObject == previousGazedObject) {
if (gazeObject != null) {
gazePointer.OnGazeStay(camera, gazeObject, intersectionPosition, isInteractive);
}
} else {
if (previousGazedObject != null) {
gazePointer.OnGazeExit(camera, previousGazedObject);
} if (gazeObject != null) {
gazePointer.OnGazeStart(camera, gazeObject, intersectionPosition, isInteractive);
}
}

IGverGazeResponder.cs

为GvrGaze提供接口,接口中定义了凝视的触发事件

三个方法 OnGazeEnter OnGazeExit OnGazeTrigger 当准星对准任何Gameobject时的处理,具体请查看GvrGaze.cs中的HandleGaze


Resources

Resources\SolidColor.shader  纯色填充

Resources\UnlitTexture.shader  无光照帖图

Distortion\GvrDistortion.cginc 扭曲shader

Resources\UI\GvrReticleShader.shader 准星,十字线Shader

Resources\GvrAudioMixer.mixer 音频文件


Plugins

AndroidManifest.xml

<uses-sdk android:minSdkVersion="19" android:targetSdkVersion="22" />

Google.ProtocolBuffers.dll


unity_gvr_activity.jar

android目录下的jar包提供android的API给unity调用

Plugins\Android\unity gvr activity.aar

Plugins\Android\gvr_android_common.aar

Plugins\Android\libs\armeabi-v7a\libgvrunity.so

unitygvractivity_classes.jar

gvr_android_common_classes.jar

aar文件

*.aar是一种压缩文件,和*.jar类似,不过它可以包含资源文件,例如图片、drawable、xml资源

JD-GUI

Java反编译工具 JD:http://jd.benow.ca/

如果运行JD-GUI报下图错误

解决办法

1. 请下载安装jre 1.7.0

2. 把jd-gui.exe拷贝到jre安装路径下,就可以双击jd-gui.exe运行啦

参考资料

Java7存档下载:http://www.oracle.com/technetwork/java/javase/downloads/java-archive-downloads-javase7-521261.html?ssSourceSiteId=otncn

Java 存档:http://www.oracle.com/technetwork/java/javase/archive-139210.html

GVR 官网API :Google VR for Unity SDK Script Reference

Set up a Daydream Development Kit : https://developers.google.com/vr/concepts/dev-kit-setup

Google、Unity等公司专家深度解读VR平台Daydream:https://yq.aliyun.com/articles/54066

Gvr SDK for Unity 分析(二)的更多相关文章

  1. Gvr SDK for Unity 分析(一)

    Gvr SDK概述 通过谷歌VR SDK for unity 为Android和iOS 构建虚拟现实应用程序 unity SDK在Android上支持构建应用程序for daydream 和 card ...

  2. Channel SDK (渠道SDK) for Unity

    渠道 英文channel,解释:商品的销售路线,也就是我们开发商(CP)都把游戏开发好了,交付给渠道帮我们运营,帮我们推广,帮我们赚钱. Android和IOS渠道 拿安卓和IOS两大平台来说,它们都 ...

  3. 社交化分享SDK for Unity

    前言 社交化分享,即分享到社交网络. 本文主要记录的是在Unity集成社交化分享SDK,现主流的分享SDK有如下: 1.友盟社交化分享 for unity 2.ShareSDK分享 for unity ...

  4. SNMP报文抓取与分析(二)

    SNMP报文抓取与分析(二) SNMP报文抓取与分析(二) 1.SNMP报文表示简介 基本编码规则BER 标识域Tag表示 长度域length表示 2.SNMP报文详细分析(以一个get-respon ...

  5. Fresco 源码分析(二) Fresco客户端与服务端交互(1) 解决遗留的Q1问题

    4.2 Fresco客户端与服务端的交互(一) 解决Q1问题 从这篇博客开始,我们开始讨论客户端与服务端是如何交互的,这个交互的入口,我们从Q1问题入手(博客按照这样的问题入手,是因为当时我也是从这里 ...

  6. yhd日志分析(二)

    yhd日志分析(二) 继续yhd日志分析,统计数据 日期 uv pv 登录人数 游客人数 平均访问时长 二跳率 独立ip数 1 分析 登录人数 count(distinct endUserId) 游客 ...

  7. SQLite入门与分析(二)---设计与概念(续)

    SQLite入门与分析(二)---设计与概念(续)   写在前面:本节讨论事务,事务是DBMS最核心的技术之一.在计算机科学史上,有三位科学家因在数据库领域的成就而获ACM图灵奖,而其中之一Jim G ...

  8. Linux内核启动代码分析二之开发板相关驱动程序加载分析

    Linux内核启动代码分析二之开发板相关驱动程序加载分析 1 从linux开始启动的函数start_kernel开始分析,该函数位于linux-2.6.22/init/main.c  start_ke ...

  9. 一些有用的javascript实例分析(二)

    原文:一些有用的javascript实例分析(二) 5 求出数组中所有数字的和 window.onload = function () { var oBtn = document.getElement ...

随机推荐

  1. mysql win源码比较大 不需要的文件删除 记录下来

    mysql-5.6.25-win32.zip 从官方下载下来的大小为 343MB,太大了可以删除掉的地方记录一下 docs :全部删除. sql-bench:全部删除. mysql-test :全部删 ...

  2. 系统安装LOL等游戏后出现VS调试报错"无法调试""拒绝访问"之类的调试错误

    一个问题抠得脑壳痛,度娘一番各种各样的答案.基本属于 1,调试权限被清0 2,文件权限问题   其中看到很多解决方案中提到"重启电脑"的说法.我也试了几次不行甚至游戏都卸载了.后来 ...

  3. mysql支持IOS的Emoji表情

    原因: UTF-8编码有可能是两个.三个.四个字节.Emoji表情是4个字节,而Mysql的utf8编码最多3个字节,所以数据插不进去. 解决办法: 将Mysql的编码从utf8转换成utf8mb4 ...

  4. VMware: XXX is still busy. Please wait until the operation is complete before closing

      在使用vmware的过程中发现创建快照.恢复快照.管理快照等功能突然都变成灰色的,用不了.更觉得夸张的是仅仅剩下关闭虚机按钮是红色的.心想估计是虚机快照没处理完之类的问题导致的,于是想想关闭虚机重 ...

  5. CAGradientLayer的一些属性解析

    CAGradientLayer的一些属性解析 iOS中Layer的坐标系统: 效果: - (void)viewDidLoad { [super viewDidLoad]; CAGradientLaye ...

  6. Android NDK之JNI陷阱

    背景: 最近一个月一直在做移植库的工作,将c代码到share library移植到Android平台.这就涉及到Android NDK(native develop kit)内容.这里只想记录下JNI ...

  7. assign、retain、copy使用异同

    1 三者的区别 首先,引用计数的概念:表示对象被引用的次数.当引用计数为 0 的时候,系统就会发送dealloc消息来释放内存. assign:用于基本数据类型,没有引用计数,因此不存在增加或减少引用 ...

  8. [修复Win8.1 BUG] 解决Win8.1英文字体发虚不渲染问题

    Win8.1更新了宋体字体,中文字体显示漂亮了,但英文字体发虚不渲染,尤其是小号的英文和数字字体,看下图. 1.下载Win8的宋体2.打开字体文件点击安装3.导入注册表文件4.重启Win8.1 下载链 ...

  9. [转]三大WEB服务器对比分析(apache ,lighttpd,nginx)

    原博文地址:http://www.blogjava.net/daniel-tu/archive/2008/12/29/248883.html 一.软件介绍(apache  lighttpd  ngin ...

  10. Tableau——BI software

    Tableau 8权威指南 (权威的数据可视化实战手册,中国传媒大学教授沈浩.北京大学研究员袁晓如 联袂推荐) 触手可及的大数据分析工具——Tableau案例集 写给专业数据分析师的丛书,无门槛的大数 ...