Gvr SDK for Unity 分析(二)

前言

關於google vr sdk的具體使用,傳送門 Gvr SDK for Unity 分析(一)html

Google Daydream平臺已經整合進Google VR SDKjava

本文環境:Unity5.3.1 x64 , Gvr SDK 0.8 , VS2013android

單詞翻譯ios

stereo:立體的; pose:姿式; gaze:凝視,注視;Reticle:十字線,準星 ;Responder:應答者;oracle

provider:提供者;ProviderFactory:工廠類; Emulator:仿真程序,仿真器ide

Perspective:透視,3D相機;Orthographic:正交,2D相機;函數

 

腳本參考


Scripts\工具

GazeInputModule.cs

功能:檢測用戶與系統的交互(經過觸發或控制器)post

實現UnityEngine.UI.BaseInputModule接口(BaseInputModel繼承自UnityEngine.UI.UIBehaviour)ui

因此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 != 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

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

相關文章
相關標籤/搜索