Gvr SDK for Unity 分析(二)

前言

关于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 触发的事件,可以传递出来。

image

 

GvrEye.cs

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

image

 

GvrHead.cs

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

image

 

GvrPostRender.cs

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

image

 

GvrPreRender.cs

清除整个屏幕。

原理:

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

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

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

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

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

image

 

GvrProfile.cs

 

GvrView.cs

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

image

 

Pose3D.cs

 

StereoController.cs

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

image

 

StereoRenderEffect.cs


Scripts\Audio\

GvrAudio.cs

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

 

GvrAudioListener.cs

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

image

 

GvrAudioRoom.cs

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

 

GvrAudioSource.cs

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

image


Scripts\Controller\

GvrController.cs

GVR Controller API的主入口

image

 

Scripts\Controller\Internal\ControllerProviders

image

 

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

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

image


Scripts\VRDevices\

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

image

 

接口

IGvrGazePointer.cs

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

image

主要逻辑处理在GazeInputModule.UpdateReticle

if (gazeObject == previousGazedObject) {  if (gazeObject != null) {
    gazePointer.OnGazeStay(camera,gazeObject,intersectionPosition,isInteractive);
  }
} else {  if (previousGazedObject != ) {
    gazePointer.OnGazeExit(camera,previousGazedObject);
  }  ) {
    gazePointer.OnGazeStart(camera,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

image

unitygvractivity_classes.jar

image

gvr_android_common_classes.jar

image

aar文件

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

 

JD-GUI

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

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

image

解决办法

1. 请下载安装jre 1.7.0

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

image

 

参考资料

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


这篇文章主要介绍了Unity游戏开发中外观模式是什么意思,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家...
这篇文章主要介绍Unity中地面检测方案的示例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!1.普通射线在角色坐标(一般是脚底)...
这篇文章主要介绍了Unity游戏开发中如何消除不想要的黄色警告,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带...
这篇文章主要介绍了Unity中有多少种渲染队列,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解
这篇文章主要介绍Unity中如何实现Texture,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!了解Texture2D 如上图,Texture2D是一张
小编给大家分享一下Unity中DOTS要实现的特点有哪些,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让...
这篇文章给大家分享的是有关unity中如何实现UGUI遮罩流光特效的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。下面是核心shader:Sh...
这篇文章主要为大家展示了“Unity中如何实现3D坐标转换UGUI坐标”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下...
这篇文章主要介绍了Unity游戏开发中设计模式的示例分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家...
这篇文章主要介绍了Unity中如何实现仿真丝袜渲染,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了...
这篇文章给大家分享的是有关Unity插件OVRLipSync有什么用的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。项目需要接入对话口型动...
这篇文章主要介绍了Unity性能优化之DrawCall的示例分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家...
这篇文章给大家分享的是有关Unity给力插件之Final IK怎么用的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。这插件有什么用:一般游...
这篇文章给大家分享的是有关Unity中如何内嵌网页插件UniWebView的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。一、常见Unity中内...
小编给大家分享一下Unity如何做流体物理的几个轮子,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让...
小编给大家分享一下Unity中Lod和Occlusion Culling的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收...
这篇文章将为大家详细讲解有关Unity中LineRenderer与TrailRenderer有什么用,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获...
这篇文章主要介绍了Unity中coroutine问题的示例分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起...
这篇文章将为大家详细讲解有关unity中spine怎么用,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。骨骼动画首先我们来看到...
这篇文章主要为大家展示了“Unity Shader后处理中如何实现简单均值模糊”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学...