Gvr SDK for Unity 分析(二)
本文为作者原创,转载请注明出处:https://www.cnblogs.com/zhaoqingqing/p/5575646.html
前言#
关于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运行啦
参考资料#
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
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 托管堆内存泄露/CPU异常的常见思路
· PostgreSQL 和 SQL Server 在统计信息维护中的关键差异
· C++代码改造为UTF-8编码问题的总结
· DeepSeek 解答了困扰我五年的技术问题
· 为什么说在企业级应用开发中,后端往往是效率杀手?
· 10亿数据,如何做迁移?
· 推荐几款开源且免费的 .NET MAUI 组件库
· 清华大学推出第四讲使用 DeepSeek + DeepResearch 让科研像聊天一样简单!
· 易语言 —— 开山篇
· Trae初体验