Hello,Cardboard!!-如何開發一個最簡單的Cardboard虛擬現實應用(一)

兵形東華發表於2015-11-25

[原創文章,轉載請註明出處,謝謝 !]

溫馨提醒,本篇第一節主要介紹cardboard虛擬現實系統的組成,如果只想看如何開發的具體步驟請直接跳到第二節^_^

前述:恕我囉嗦一下,主要照顧對cardboard不太瞭解的朋在,Cardboard是由Google公司的兩位巴黎辦公室的員工利用業餘時間創作出來的作品,它最大的特點就是將原來人們以為高大上的虛擬現實技術以廉價的方式帶進了公眾的視野,到目前為止,google已推出了改良版的cardboard 2代盒子,相比1代,2代改善了成像,增加了視野範圍等。軟體方面,google推出了兩套SDK代開發者使用,一套是cardboard sdk for unity,這是專為unity遊戲開發引擎開發的開發工具包,另一套就cardboard sdk for android,這是專為android系統開發的工具包。其它的知識,隨著朋友們逐步參於到社群活動當中,會有不斷深入瞭解。

本帖記錄了我如何作為一個小白開發出一個cardboard虛擬現實系統的整個過程,希望能幫助同樣是小白,而又對虛擬現實非常感興趣的朋友開始進入這一充滿想像力的技術領域。


 

一、我們來看一下整個系統的組成:

解釋一下上面圖中的含義,

1、一個cardboard虛擬現實系統包含了硬體和軟體;

2、硬體包含了一個Cardboard盒子,Cardboard盒子相當於整個系統的支架,它長成這樣:

其採用分屏式3D成像原理,使每隻眼睛只能看到手機螢幕的一半,然後通過軟體在螢幕上生成左右兩個畫面,同時這兩張畫面按照人的左右眼視距對同一場景進行顯示,這樣,最終在人的大腦中加工成3D立體畫面感。

像這樣:

3、Cardboard除了需要實時生成像上面這樣的3D畫面,為了實現沉浸式虛擬現實的效果,它還要做一件重要的事-追蹤玩家頭部轉動,並根據轉動角度實時地調整生成的3D畫面,這一系列的活動,都是在智慧手機上完成的,這裡提一下,cardboard採用手機來作為系統的一部份,使得大多數人都能輕易地體驗虛擬現實,但其不足之處亦非常明顯,即效能受限,對於大型動作遊戲場景無法獲得較高的幀率,影響了玩家的體驗。關於cardboard如何發揮出它的最大優勢,找到效能和效果的平衡,帶給使用者最好的體驗,也正是要探究的一個重要問題。

4、硬體部份還有一個重要角色,即外圍互動裝置;

在虛擬的世界中,玩家有一個最本能的需求,即與其中的角色進行互動,玩家看到的、聽到的都是由手機中的軟體實時生成的,從技術層面上說,這種互動就是與手機中軟體應用的互動,因此必然需要藉助一些穿戴的硬體裝置來將玩家的身體資訊採集後傳入手機中。

當前還沒有一套完整的標準去規定外圍裝置應該做成什麼樣的?採用什麼協議與主機互動?因此,外圍裝置的開發現階段也是針對性的,不同的開發平臺,外設之間不能直接通用,比如為oculus開發的裝置也許就不能直接運用於htc的vive;

在虛擬世界中,玩家可以以全身參於與其中角色的互動,互動方式豐富多樣,也許不會有一款外設將所有互動方式都統一。因此,怎樣設計和製作cardboard虛擬現實系統的外圍互動裝置,使其給玩家在不同的場景下帶來最大的方便和樂趣,也是要探究的一個重要問題。

 

從整體虛擬現實體驗上看,硬體效能和舒適度的提升,會對體驗的提升產生立杆見影的效果,而且在影響玩家體驗的幾大因素之中,許多也只能依靠硬體方案來解決。

到此為止,Cardboard的硬體部份就簡單瀏覽了下,接下來看看Cardboard的軟體部份。

5、軟體部份包含了Cardboard的一個個應用,以及應用執行的平臺。到目前為止Cardboard官方提供SDK已經同時支援android平臺和ios平臺。同時Cardboard也採用非常流行的unity3d遊戲引擎來開發應用。

系統圖中所說的unity3dappforcardboard就是使用unity3d+cardboardSDKforUnity外掛開發出來的APP。使用unity3d你可以直接生成執行於android或是ios的unity3d應用。

因此,在開發cardboard之前,需要先學習unity3d遊戲開發的基礎知識。瞭解android和ios開發的基本過程。

unity3d開發方面的基礎知識,可以通過英寶通unity教學視訊來學習。

android和ios開發的基本過程,請百度之。

二、Cardboard硬體的組裝:

組裝即是把上面第一節所說的硬體各部份組合到一起。即:外設+Cardboard盒子+手機,當前我們要使用的外設是藍芽手柄,手機選用samsun note3,盒子使用google在今年推出的cardboard 2代,所以硬體的例項即是:藍芽手柄+Cardboard2015+samsun note3。

組裝過程如下:

1、開啟cardboard2015包裝,從中抽取出cardboard,如下圖所示:

2、仔細翻看,你會找到盒子上列印的組裝過程圖示,按圖示進行操作:

3、簡單三步,同時將你的手機插入鏡片前面的紙板中,你就可以得到如下的成品:

4、藍芽手柄無需做結構上的組裝,是與手機通過藍芽協議進行通訊,在後面軟體開發時會講到。

到此,整個cardboard系統的硬體部份就完成了,是不是很簡單?你也可以按照盒子的google的官方設計圖紙進行製作,見本站另一篇帖子:

其實說簡單也不簡單,cardboard雖然由非常容易獲取的材料經過簡單工序加工而成,但其中各種結構引數將直接影響到玩家眼中的成像,以及佩戴舒適度,如何提升虛擬現實眼鏡的成像質量?如何提升玩家佩戴舒適度?這也直接決定了一款虛擬現實產品的市場竟爭力,因此,這一方面也是VR研究的重要內容。

三、軟體開發

對於大多數瀏覽本帖的朋友,也許更關心的是如何開發出具有高度體驗值的軟體應用。軟體開發涉及需求研究、架構、實現等多個方面,好的VR軟體應用,應該是有吸引玩家的內容和高質量的體驗效果,所以必須從玩家當中去尋找需求,不斷優化效能以提升使用者體驗。

如何為cardboard系統開發虛擬現實軟體應用呢?第一節中說到,cardboadr應用其實就是執行於android或者ios平臺上的應用程式,那麼也就是說開發cardboard應用其實就是開發android APP或者ios APP。但不用擔心,我們有unity這一開發平臺,unity提供了完整的遊戲引擎以及可見即可得的開發環境,同時unity還可以將你開發的同一應用直接生成android app或者ios app,你所要做的就是在它開始編譯前選擇相應的平臺即可,如下圖:

所以,cardboard軟體開發者主要做的事情即是使用unity開發平臺來開發基於unity3d遊戲引擎的應用。

然而,cardboard應用又不同於一般的unity3d應用,cardboard應用要實現以下幾個基本的需求:

1、需要模擬人的頭部和兩隻眼睛;

2、需要獲取手機中的重力感測器、陀螺儀等感測器的資料,對其處理後生成穩定的姿態資料,用來控制頭部模型的姿態;

3、需要在兩隻眼睛上各放置一個攝像頭,並將兩個攝像頭的視面分別顯示在手機螢幕的左右兩邊;

4、需要對顯示在手機螢幕左右兩邊的影象進行失真較正,使玩家通過透鏡中看到的畫面沒有形變;

這些基礎性的需求,都由google推出的cardboard SDK for unity實現了,開發者所要做的就是將這個SDK匯入unity專案中,並根據自己的需要,去呼叫SDK提供的介面即可;

根據以上的討論,最後,我們來開發一個簡單的cardboard APP for Android。


 

(以下開發採用的cardboard SDK為0.5.2,Unity版本為:5.5.2f1)

一、搭建開發環境:

1、在unity官網下載unity開發工具:http://unity3d.com/cn/get-unity,並安裝;

你可以下載一個免費的個人開發版,這是真正的免費,免費版除了一些功能不具備以外,其它都與專業版沒有差距,對於初入的開發者而言完全足夠:

2、下載android SDK(由於cardboard SDK是一個unity的android外掛,所以在開發過程中可能碰到由於android SDK的版本與cardboard SDK不匹配的情況,這時,請將android SDK進行線上更新即可,如果被牆了,可以通過設定代理來更新,具體參考http://www.linuxidc.com/Linux/2015-01/111958.htm)

3、在github上下載cardboard SDK for Unity:https://github.com/googlesamples/cardboard-unity (建議watch這個專案,這樣你可以即時獲取到該專案的最新資訊和釋出情況)

二、開啟unity,建立一個專案:

建立後:

三、匯入cardboard SDK:

1、首先刪除預設建立的Main Camera;

2、匯入SDK:

在開啟的檔案選擇器中,找到你下載的cardboard sdk for unity package,並選中:

在開啟的包對話方塊中選擇ALL,並點選匯入:

匯入後可以在專案視視窗看到cardboard目錄和plugis目錄:

3、按上面同樣的步驟匯入cardboard官方提供的一個demo包:

4、雙擊DemoScene目錄下的DemoScene場景檔案,即可開啟一個演示場景:

四、生成android apk安裝檔案:

1、選擇選單欄的file選單,在下拉選單中選擇build setting選單:

在開啟的對話方塊中先擇擇player setting:

在屬性視窗中,有幾處需要修改:

公司名稱和產品名稱要與包中徑中的兩個名稱保持一致:

然後ctrl + s進行儲存設定。

回到build setting對話方塊,選擇build按鈕,並在開啟的檔案存放對話方塊中選擇你想要存放生成檔案的路徑,然後等待unity自動生成android apk安裝檔案。

到此,將生成的APK安裝到你的手機上,然後點選執行,然後將手機插入cardboard盒子,你就可以體驗到沉浸式的虛擬現實場景了^-^

需要補充unity和android開發的知識的同學可以去補習一下了。後面我們將逐步開發虛擬現實第一人稱控制器,以及將藍芽手柄接入遊戲中。

 

相關文章