基于Unity3d的Daydream集成開發(fā)


一、環(huán)境搭建

Daydream集成說明,方法可以通過谷歌的vr開發(fā)網(wǎng)址查看:https://developers.google.com/vr/daydream/overview

支持:開發(fā)平臺AndroidStudio、Unity、Unreal

以Unity為例子:

官方下載說明:https://developers.google.com/vr/unity/download

需要下載:

1、Untiy3d 5.2.1版本或以上:https://unity3d.com/cn/get-unity/download/

2、下載Daydream SDK for unity:

git clone https://github.com/googlevr/gvr-unity-sdk.git 。

二、開發(fā)集成:

1、安裝好unity3d后可以,打開新建一個項目Project。

2、導入Daydream sdk,在Unity的Assets視窗右鍵->Import Package->Custom Package..,將下載好的sdk導入。

3、可以看到Project視圖中多出了兩個文件夾,可以找到sdk里的demo對sdk進行了解學習。

dome位置

4、Demo運行ControllerDemo,這個是一個可以用控制器來控制運行的Demo,控制器因為還沒有,可以用手機來代替,手機安裝controller_emulator.apk(這個apk在unity的sdk中沒有找到,但是在android的sdk中apks文件夾里找到了),用usb接口連接電腦就可以模擬Daydream的控制器了。

谷歌控制器原理:

???????? Daydream手柄是不是動捕呢?實際上,你可以稱其為“動捕手柄”,但又要明白它和其它產(chǎn)品是有區(qū)別的。下面就來看看動捕到底應該如何理解。

6自由度(DOF)

由度指的就是物體在空間里面的基本運動方式,總共有6種。任何運動都可以拆分成這6種基本運動方式。這6種基本運動方式又可以分為兩類:位移和旋轉。

位移包括:前后、左右、上下三種。

旋轉包括:前后翻轉(ROLL)、左右搖擺(PITCH)以及水平轉動(YAW)三種。

這個時候再來解釋Daydream手柄就容易多了,首先它是動捕,但它只能追蹤前后翻轉、左右搖擺以及水平轉動三個旋轉的自由度,無法知道手柄在空間里的位移情況。所以,如果要準確描述Daydream手柄,就應該稱其為3自由度或3DOF動捕手柄。

對比之下,HTC Vive的追蹤系統(tǒng)讓手柄擁有6個自由度,包括位移的3個自由度。其結果就是,你沒法用Daydream的手柄做伸手揀地上物品這樣的動作,但Vive的手柄可以。

IMU和慣性動捕

IMU是Inertial Measurement Unit的縮寫,也就是慣性測量單元。它通常包含加速度計、陀螺儀和磁力儀三種傳感器。以前主要用在飛機上,現(xiàn)在大部分智能手機都有了,成本比較低。使用IMU可以測量速度、方向和重力,這種動捕技術也就是我們常說的慣性動捕。

通過IMU可以很好地追蹤物體3個旋轉自由度的運動,Daydream手柄基本可以肯定用的就是IMU傳感器了。而這也是為什么Google可以讓開發(fā)者用一款Android手機來替代Daydream手柄進行開發(fā),因為手機上也有IMU。

慣性動捕的問題是很難判斷物體在空間里的絕對位置,因而位移運動的3個自由度無法被追蹤。

光學動捕

除了慣性動捕,另一個常被提到的技術是光學動捕,或者是光學空間定位,通過精確的空間位置可以判斷物體的位移及旋轉。

光學動捕通過一個或多個攝像頭持續(xù)不斷過地追蹤物體上的Mark點,這些點以特定的模式排列,然后通過一系列的算法來判斷出物體的位置。算法通過將已知Mark點的位置與物體上Mark點位置進行比對,判斷出物體的絕對位置和旋轉方向。

Mark點的數(shù)量、位置和排列是有科學依據(jù)的。例如,如果只用4個構成正方形的Mark點,就無法判斷物體是不是倒過來了,或是旋轉了90度。除此之外如果Mark點被擋住了或是受環(huán)境光影響而追蹤不了,也會影響位置的判定。

此時通常要投入更多的攝像頭和計算性能來進行持續(xù)和精確地追蹤,導致成本大增。所以很多動捕技術方面提供商,比如諾亦騰,會采用光學和慣性動捕相結合的方式來實現(xiàn)6自由度的精確追蹤,從而降低攝像頭使用數(shù)量及對計算性能的需求,控制成本。

創(chuàng)建自己的Daydream項目

1、在Assets中新建一個Scene,打開可以看到Hierarchy視圖

2、將GoogleVR里的控件加入到新建的scene中:GoogleVR->Prefabs->GvrViewerMain,GoogleVR->Prefabs->Controller->GvrControllerMain。

運行后就可以看到自己項目的vr效果了

在項目中使用控制器

1、需要一臺4.4以上android手機,安裝控制器應用,usb與電腦連接。

2、在Main Camera下創(chuàng)建一個Sphere,再在Sphere下創(chuàng)建一個Sphere,改名位dot,dot的position的z設為20


3、創(chuàng)建一個腳本用來接受控制器的信息來操作dot。

腳本如下:

將寫好的腳本托到Sphere上,運行后,轉動控制器就可以發(fā)現(xiàn)dot在跟著控制器的方向轉動了。

?????? 因為本人也是第一次使用untiy3d,所有還要很多地方需要學習。而控制器的一些基本使用方法在googleVr的demo中都有,大家可以通過demo來加深對Daydream控制器的學習。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容