【VR-Unity-Google VR SDK】Cardboard 入門(mén)——制作最簡(jiǎn)單的 VR 盒子(圖文教程)

Cardboard

本文的流程是這樣的:

  1. 準(zhǔn)備
  2. 開(kāi)始制作最簡(jiǎn)單的 VR 盒子
  3. 添加凝視事件
  4. 運(yùn)行與測(cè)試
  5. 發(fā)布到手機(jī)并測(cè)試
  6. 結(jié)束
  7. 下載

本文的測(cè)試環(huán)境:

  • macOS Mojave 10.14.3 / MacBook Pro 2015
  • Unity 2018.3.9f1
  • VR 盒子:VR Shinecon Virtual Reality Glasses
  • 測(cè)試安卓機(jī):360手機(jī) N4S 驍龍版

準(zhǔn)備

我們要制作的是一個(gè)最簡(jiǎn)單的 VR 盒子程序,只能看,不能點(diǎn)的那種慨菱,因?yàn)樽詈?jiǎn)單的 VR 盒子就是這樣荆针,沒(méi)有外設(shè)嘛草添。

本文開(kāi)始之前呢蛹含,約定讀者掌握了 Unity 的基礎(chǔ)知識(shí),比如創(chuàng)建項(xiàng)目独郎,創(chuàng)建腳本之類(lèi)的液南。

本文開(kāi)始之前壳猜,你需要準(zhǔn)備以下這些東西:

開(kāi)始制作最簡(jiǎn)單的 VR 盒子

好啦,我們開(kāi)始滑凉。

打開(kāi) Unity统扳,創(chuàng)建一個(gè)名為 gvr-cardboard-test 的項(xiàng)目:

gvr-cardboard-test

導(dǎo)入 GoogleVRForUnity_*.unitypackage

導(dǎo)入 `GoogleVRForUnity_*.unitypackage`

將項(xiàng)目的平臺(tái)設(shè)置為 Android 平臺(tái):


Switch Platform 到 Android

在項(xiàng)目中添加 vr sdk, 選中Edit/Project Setting/Player/XR Settings/Virtual Realty Supported畅姊,點(diǎn)擊加號(hào)咒钟,在彈出的列表中,選擇Cardboard

項(xiàng)目中添加 vr sdk

Cardboard

并且在 Other Settings/Minimum API Level 中選擇 Android 4.4 'KitKat' (API level 19) 或者比它更高的:
選擇 `Android 4.4 'KitKat' (API level 19) ` 或者比它更高的

項(xiàng)目的已經(jīng)設(shè)置完畢若未。

此時(shí)我們的gvr-cardboard-test項(xiàng)目是一個(gè)空項(xiàng)目朱嘴,如果現(xiàn)在就把它打包,在手機(jī)上運(yùn)行的話(huà):

打包這個(gè)空項(xiàng)目

你會(huì)發(fā)現(xiàn)陨瘩,此時(shí)屏幕已經(jīng)分屏了腕够,可以在盒子里面看了:


屏幕已經(jīng)分屏

我們回到項(xiàng)目中,此時(shí)運(yùn)行 Editor 的話(huà)舌劳,Game 窗口中什么也不會(huì)動(dòng)帚湘,很不方便,我們加點(diǎn)東西可以在 Game 中直接調(diào)試程序(甚淡, Gvr.. 的預(yù)制體可以在 Assets/GoogleVR/Prefabs 中找到大诸。):

  1. 添加一個(gè) Cube 到項(xiàng)目中,并為其添加一個(gè) EventTrigger贯卦。
  2. 添加一個(gè)名為 player 的 GameObject资柔,把主攝像頭掛到它下面成為 player 的子對(duì)象,并在主攝像頭上添加GvrPointerPhysicsRaycaster腳本撵割。
  3. 主攝像頭下添加一個(gè) GvrReticlePointer 作為子對(duì)象
  4. Player 下添加一個(gè) GvrControllerPonter 作為子對(duì)象贿堰,它作為主攝像頭的兄弟對(duì)象存在。
  5. 項(xiàng)目中在添加 GvrEventSystem啡彬、GvrEditorEmulator羹与、GvrControllerMain,看名字就知道這些是干嘛的是吧:Gvr 的事件系統(tǒng)庶灿,Editor 的模擬器纵搁,Gvr 的控制入口。
  6. 把主攝像頭的位置改為 0 0 0往踢,把 Clipping Planes 改為 0.03腾誉。
  7. 將 Cube 的位置設(shè)置一下,比如 位置為 1 0 2峻呕,旋轉(zhuǎn)的角度嘛利职,就改為 45 45 0。


    項(xiàng)目結(jié)構(gòu)

此時(shí)我們運(yùn)行 Editor山上,按住 option/alt 來(lái)移動(dòng)鼠標(biāo)的話(huà)眼耀,Game 窗口的行為將模擬頭部的運(yùn)動(dòng),你也可以按住control佩憾,再移動(dòng)鼠標(biāo)試試看:

按住 `option/alt` 來(lái)移動(dòng)鼠標(biāo)哮伟,也可以按住`control`,再移動(dòng)鼠標(biāo)妄帘,Game 窗口的行為將模擬頭部的運(yùn)動(dòng)

我們注意到楞黄,我們的視線(xiàn)指針,也就是那個(gè)圓圈抡驼,當(dāng)它移動(dòng)到 Cube 上就會(huì)變大鬼廓,移開(kāi)則變成一個(gè)小白點(diǎn):


我們的視線(xiàn)指針,也就是那個(gè)圓圈致盟,當(dāng)它移動(dòng)到 Cube 上就會(huì)變大碎税,移開(kāi)則變成一個(gè)小白點(diǎn)

它是白色的尤慰,可以修改一下顏色,讓它變得更顯眼些:選中GvrReticlePointer雷蹂,在著色器的面板上修改下顏色伟端,比如改成紅色的:

將視線(xiàn)指針改成紅色

再次運(yùn)行:


添加凝視事件

我們?yōu)?Cube 添加一些凝視事件,也就是視線(xiàn)進(jìn)入匪煌,視線(xiàn)離開(kāi)的事件责蝠;創(chuàng)建個(gè)腳本CubeController,并掛著 Cube 身上萎庭,代碼如下:

using UnityEngine;

public class CubeController : MonoBehaviour
{
    public void SetGazedAt(bool gazedAt) => GetComponent<Renderer>().material.color = gazedAt ? Color.blue : Color.black;
}

在 Cube 的Event Trigger 中 點(diǎn)Add New Event Type霜医,添加 Pointer Enter,當(dāng)然選中 Cube 這個(gè)對(duì)象驳规,把剛寫(xiě)的 SetGazedAt 函數(shù)選上肴敛,并打上對(duì)勾;同樣的再添加個(gè) Pointer Exit 事件吗购,這次不要打?qū)戳耍?br>

添加凝視事件

運(yùn)行與測(cè)試

好啦值朋,基本上搞定,運(yùn)行程序試試效果:




一切沒(méi)問(wèn)題巩搏。

發(fā)布到手機(jī)并測(cè)試

打包發(fā)布到手機(jī)上:


結(jié)束

光看不能動(dòng)昨登,這種 VR 程序就沒(méi)多大意思了,不要看下載個(gè) VR 視頻直接看哩(嘿嘿嘿??)贯底。不過(guò)丰辣,VR 盒子就是這樣子的,不用其他外設(shè)禽捆,也算方便笙什。

如果有了外設(shè),比如說(shuō)有一個(gè)按鈕胚想,就可以使用 Google VR SDK 中的 Daydream了琐凭。

下載

這里提供一下這個(gè)項(xiàng)目的源碼,有需要的話(huà)可以在這里下載浊服。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末统屈,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子牙躺,更是在濱河造成了極大的恐慌愁憔,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,755評(píng)論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件孽拷,死亡現(xiàn)場(chǎng)離奇詭異吨掌,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,305評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門(mén)膜宋,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)窿侈,“玉大人,你說(shuō)我怎么就攤上這事秋茫∶弈ィ” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 165,138評(píng)論 0 355
  • 文/不壞的土叔 我叫張陵学辱,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我环形,道長(zhǎng)策泣,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,791評(píng)論 1 295
  • 正文 為了忘掉前任抬吟,我火速辦了婚禮萨咕,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘火本。我一直安慰自己危队,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,794評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布钙畔。 她就那樣靜靜地躺著茫陆,像睡著了一般。 火紅的嫁衣襯著肌膚如雪擎析。 梳的紋絲不亂的頭發(fā)上簿盅,一...
    開(kāi)封第一講書(shū)人閱讀 51,631評(píng)論 1 305
  • 那天,我揣著相機(jī)與錄音揍魂,去河邊找鬼桨醋。 笑死,一個(gè)胖子當(dāng)著我的面吹牛现斋,可吹牛的內(nèi)容都是我干的喜最。 我是一名探鬼主播,決...
    沈念sama閱讀 40,362評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼庄蹋,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼瞬内!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起限书,我...
    開(kāi)封第一講書(shū)人閱讀 39,264評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤遂鹊,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后蔗包,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體秉扑,經(jīng)...
    沈念sama閱讀 45,724評(píng)論 1 315
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,900評(píng)論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了舟陆。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片误澳。...
    茶點(diǎn)故事閱讀 40,040評(píng)論 1 350
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖秦躯,靈堂內(nèi)的尸體忽然破棺而出忆谓,到底是詐尸還是另有隱情,我是刑警寧澤踱承,帶...
    沈念sama閱讀 35,742評(píng)論 5 346
  • 正文 年R本政府宣布倡缠,位于F島的核電站,受9級(jí)特大地震影響茎活,放射性物質(zhì)發(fā)生泄漏昙沦。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,364評(píng)論 3 330
  • 文/蒙蒙 一载荔、第九天 我趴在偏房一處隱蔽的房頂上張望盾饮。 院中可真熱鬧,春花似錦懒熙、人聲如沸丘损。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,944評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)徘钥。三九已至,卻和暖如春肢娘,著一層夾襖步出監(jiān)牢的瞬間吏饿,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,060評(píng)論 1 270
  • 我被黑心中介騙來(lái)泰國(guó)打工蔬浙, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留猪落,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,247評(píng)論 3 371
  • 正文 我出身青樓畴博,卻偏偏與公主長(zhǎng)得像笨忌,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子俱病,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,979評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容