基于Unity與SteamVR構(gòu)建虛擬世界
定 價(jià):79 元
叢書名:游戲開發(fā)與設(shè)計(jì)技術(shù)叢書
- 作者:[美] 杰夫 W. 默里(Jeff W Murray)
- 出版時(shí)間:2019/2/1
- ISBN:9787111619581
- 出 版 社:機(jī)械工業(yè)出版社
- 中圖法分類:TP317.6
- 頁碼:
- 紙張:膠版紙
- 版次:
- 開本:16開
這本書采用了親身實(shí)踐的方法使用Unity游戲引擎啟動(dòng)和運(yùn)行虛擬現(xiàn)實(shí)。使用免費(fèi)的SteamVR庫,這本書中的示例代碼與當(dāng)前可用的主要虛擬現(xiàn)實(shí)頭顯示器兼容。該書還介紹了虛擬現(xiàn)實(shí)的一些主要問題,比如暈動(dòng)病和性能問題,并提供了一些切實(shí)可行的方法來減少它們對(duì)虛擬現(xiàn)實(shí)體驗(yàn)的影響。
2017年,我們站在一個(gè)新技術(shù)園區(qū)的門口。我們看著其產(chǎn)值,想弄清楚在那里建造什么,以及怎么建造,很明顯還有很多東西需要去發(fā)現(xiàn)。虛擬世界中沒有規(guī)律,沒有組織,沒有邊界,也沒有我們?yōu)樗藰?gòu)建的邊界。從哪里到哪里取決于我們。我們只是在學(xué)習(xí)人們對(duì)虛擬現(xiàn)實(shí)(VR)的反應(yīng),虛擬現(xiàn)實(shí)可以做什么,它在娛樂、學(xué)習(xí)、康復(fù)、體驗(yàn)和開發(fā)中似乎有無數(shù)的可能性。即便是最基本的界面:我們的網(wǎng)絡(luò)愛好者如何與虛擬世界互動(dòng),也尚未決定。在虛擬世界中什么感覺是自然的?我們?nèi)绾我苿?dòng)、觸摸物體、感受對(duì)象、操縱環(huán)境?有很多人可以使用創(chuàng)建虛擬內(nèi)容的工具,它們的范圍也從未像現(xiàn)在這樣廣泛,有更多的人提出了令人興奮的新東西。在提供技術(shù)以適應(yīng)這種新體驗(yàn)的競(jìng)爭(zhēng)中,硬件制造商正以最快的速度運(yùn)行,以使VR更好、更強(qiáng)、更快。無論跑得多快,技術(shù)都不會(huì)停止發(fā)展和變化,而是將繼續(xù)前進(jìn)。我們也學(xué)無止境。新技術(shù)層出不窮,當(dāng)你讀完這本書的時(shí)候,參與開發(fā),并試著塑造虛擬現(xiàn)實(shí)的未來,當(dāng)然這些取決于你。不要害怕打破常規(guī),嘗試使用不同于過去的與游戲或模擬交互的替代方法。你是一個(gè)有遠(yuǎn)見的人,可以幫助塑造未來的VR風(fēng)景。未來的虛擬體驗(yàn)將建立在今天的經(jīng)驗(yàn)之上,所以要不斷實(shí)驗(yàn)和創(chuàng)造驚人的新事物!最后記住要玩得開心,照顧好自己,也與人交好!
準(zhǔn)備工作
你的設(shè)置成本將是一臺(tái)個(gè)人開發(fā)電腦和你想要插入的硬件,以及所選擇的VR設(shè)備,讓我們快速看看還需要準(zhǔn)備什么。
Unity(可以在Unity商店http://www.unity3d.com上找到):Unity和所需的SDK可以免費(fèi)下載。Unity Personal是一個(gè)完整的Unity版本,只是其中有一些附加說明。你可以用Unity Personal做這本書里的所有事情,只要你有一個(gè)VR頭戴式顯示器來測(cè)試。任何關(guān)于是否需要付費(fèi)版本的Unity的問題,你都可以先嘗試用免費(fèi)的個(gè)人版本來調(diào)試,在投入金錢之前看看Unity是如何運(yùn)作的。
Steam客戶端:Steam客戶端是免費(fèi)下載的,你可以訪問Valve Software的庫和游戲商店。從本質(zhì)上講,Steam是一個(gè)允許你下載和購(gòu)買東西的應(yīng)用程序,但是在這本書中,Steam是一個(gè)用來下載和運(yùn)行SteamVR的應(yīng)用程序。
SteamVR:SteamVR是一個(gè)基于開源虛擬現(xiàn)實(shí)庫的系統(tǒng)。它為VR提供了一個(gè)平臺(tái)。SteamVR在Steam客戶端下運(yùn)行。Unity將通過SteamVR系統(tǒng)與VR硬件進(jìn)行交互。
C#編程知識(shí):再次重申,這不是一本關(guān)于學(xué)習(xí)如何編程的圖書。我將解釋所有的代碼是如何工作的,但是你需要知道一些C#知識(shí),有許多書籍是專門針對(duì)C#學(xué)習(xí)的。編程是一門龐大的學(xué)科,試圖同時(shí)教編程和VR開發(fā)是毫無意義的。這本書講的是虛擬現(xiàn)實(shí)體驗(yàn),而不是學(xué)習(xí)編程。當(dāng)然,我將盡我所能解釋一切!
本書的讀者對(duì)象
Unity已經(jīng)用自己的指南和教程完成了一項(xiàng)令人驚嘆的工作,所以如果你以前從未使用過這個(gè)引擎,強(qiáng)烈建議查看一下Unity文檔并遵循指南來進(jìn)行編輯器基本操作。本書中有一個(gè)基本的速成課程,但我沒有詳細(xì)說明。我將盡我所能勾勒出流程、鍵盤快捷鍵以及在哪里單擊以使預(yù)料的事情發(fā)生,但這不是一本教授Unity的書。
這不是一本關(guān)于編程的書,也不是一本關(guān)于用正確或錯(cuò)誤方法編寫代碼的書。我們假設(shè)讀者對(duì)C#編程語言有一定的經(jīng)驗(yàn),但是對(duì)于VR或VR為主的開發(fā)來說可能是陌生的。我覺得有一點(diǎn)很重要,我是一個(gè)自學(xué)成才的程序員,我也明白,有更好的方法編寫程序,所以這是一本關(guān)于概念的書,不可避免地會(huì)有更好的方法來實(shí)現(xiàn)一些相同的目標(biāo)。本書中的技術(shù)和概念提供了基礎(chǔ),而不是任何主題的最終結(jié)果。運(yùn)用這些概念,領(lǐng)會(huì)它們,按照你想要的方式去做。最重要的是,試著享受它!
譯者序
前言
致謝
第1章 虛擬世界簡(jiǎn)介 1
1.1 我們虛擬化多久了 1
1.2 頭戴式顯示器誕生之前 2
1.3 頭戴式顯示器的誕生 2
1.4 消費(fèi)者級(jí)VR的探索 4
1.5 家用電腦式虛擬現(xiàn)實(shí) 4
1.6 消費(fèi)者級(jí)VR復(fù)出 5
1.7 VR的缺點(diǎn) 6
1.7.1 延遲 6
1.7.2 抖動(dòng)和拖尾 6
1.7.3 紗窗效應(yīng) 7
1.7.4 暈眩 7
1.7.5 期待哪些體驗(yàn) 7
1.7.6 消費(fèi)者級(jí)VR:Rift CV1和HTC Vive 9
1.8 可以像內(nèi)核一樣進(jìn)入電腦嗎—VR面臨的困難和挑戰(zhàn) 10
1.8.1 運(yùn)動(dòng)追蹤和運(yùn)動(dòng)捕獲輸入設(shè)備 10
1.8.2 觸覺反饋 11
1.8.3 視覺追蹤 11
1.8.4 空間和移動(dòng) 12
1.8.5 虛擬現(xiàn)實(shí)內(nèi)容制作 12
1.9 虛擬現(xiàn)實(shí)設(shè)計(jì)和發(fā)展 13
1.9.1 計(jì)劃:任何計(jì)劃皆可行 13
1.9.2 提前安排主要交互 14
1.9.3 真人測(cè)試 14
1.9.4 尋找合作與流程 14
1.9.5 真實(shí)性不是絕對(duì)的 14
1.10 本章小結(jié) 15
第2章 硬件初始化設(shè)置 16
2.1 配套硬件和軟件需求 16
2.1.1 HTC Vive推薦規(guī)格 17
2.1.2 OSVR HDK推薦規(guī)格 17
2.1.3 Rift推薦規(guī)格 17
2.1.4 兼容性工具 18
2.1.5 處理兼容性工具結(jié)果 19
2.2 安裝SteamVR 21
2.2.1 安裝Steam客戶端 21
2.2.2 注冊(cè)Steam賬戶 21
2.2.3 安裝SteamVR 21
2.3 安裝提示 22
2.3.1 運(yùn)動(dòng)追蹤器獨(dú)立安放 22
2.3.2 整理物品騰出空間 22
2.3.3 避開墻體 23
2.3.4 什么是瞳孔間距及其重要性 23
2.4 安裝VR硬件 24
2.4.1 HTC Vive安裝介紹 24
2.4.2 OSVR HDK安裝介紹 26
2.4.3 Rift安裝 29
2.5 設(shè)置SteamVR 29
2.6 找到你的VR腿 31
2.7 舒適體驗(yàn)VR的幾點(diǎn)建議 31
2.7.1 HTC Vive 31
2.7.2 OSVR 32
2.7.3 Rift 32
2.8 保持健康的VR體驗(yàn) 33
2.8.1 及時(shí)停止 33
2.8.2 休息一下 34
2.8.3 進(jìn)食,飲水,快樂體驗(yàn)虛擬 35
2.8.4 體驗(yàn)VR時(shí)不要弄傷自己!小心測(cè)試 35
2.9 本章小結(jié) 36
第3章 創(chuàng)建SteamVR Unity項(xiàng)目 37
3.1 下載Unity并創(chuàng)建新項(xiàng)目 38
3.2 Unity編輯器教學(xué) 38
3.3 創(chuàng)建新的Unity項(xiàng)目 42
3.4 下載適用Unity的SteamVR庫 42
3.5 VR視角的空間 46
3.5.1 創(chuàng)建Unity新場(chǎng)景 46
3.5.2 從示例文件中復(fù)制模型 47
3.5.3 添加新的游戲?qū)ο? 47
3.5.4 將花園模型添加到場(chǎng)景中 48
3.5.5 添加房屋模型 49
3.5.6 設(shè)置VR攝像機(jī)裝置 50
3.5.7 VR環(huán)境比例 52
3.5.8 調(diào)整花園模型比例 53
3.6 SteamVR攝像機(jī)定位和重新定位 54
3.7 項(xiàng)目保存和備份 54
3.8 本章小結(jié) 55
第4章 添加交互 56
4.1 添加交互框架 57
4.2 添加瞄準(zhǔn)光標(biāo) 57
4.2.1 添加一個(gè)UI畫布 57
4.2.2 調(diào)整畫布以適合VR場(chǎng)景 57
4.3 添加VREyeRaycaster和Reticle組件到攝像機(jī) 60
4.3.1 設(shè)置Inspector引用 61
4.3.2 防止光標(biāo)剪切 62
4.4 在場(chǎng)景中添加門 62
4.5 使門可以交互 64
4.5.1 創(chuàng)建門控制腳本 64
4.5.2 腳本分解 66
4.6 門把手添加盒碰撞體 69
4.7 DoorController組件設(shè)置引用 70
4.8 保存工作 71
4.9 本章小結(jié) 71
第5章 構(gòu)建頭戴式顯示器和游戲控制器用戶界面 72
5.1 制作主菜單場(chǎng)景 72
5.1.1 打開示例項(xiàng)目 72
5.1.2 創(chuàng)建畫布進(jìn)行用戶界面繪制 73
5.1.3 創(chuàng)建按鈕 74
5.1.4 添加UI滑塊顯示按鈕進(jìn)度 75
5.2 編寫C#按鈕腳本 79
5.3 添加VR_BUTTON組件引用以使用 84
5.4 在按鈕上添加文本標(biāo)簽以顯示其作用 84
5.5 測(cè)試按鈕 86
5.6 菜單場(chǎng)景中添加第二個(gè)按鈕 86
5.6.1 復(fù)制按鈕 86
5.6.2 更改文本標(biāo)簽 86
5.7 添加按鈕的行為 86
5.7.1 添加Main Menu Controller游戲?qū)ο蟮綀?chǎng)景中 86
5.7.2 編寫主菜單腳本 87
5.7.3 事件函數(shù)添加到菜單按鈕 88
5.8 添加場(chǎng)景設(shè)置 89
5.9 測(cè)試菜單 90
5.10 保存工作 90
5.11 本章小結(jié) 91
第6章 使用SteamVR傳送系統(tǒng)在虛擬世界中移動(dòng) 93
6.1 設(shè)置傳送場(chǎng)景 93
6.1.1 為傳送地面位置創(chuàng)建碰撞器 94
6.1.2 設(shè)置圖層 97
6.1.3 設(shè)置攝像機(jī)裝置并添加組件 97
6.2 編寫C#腳本輸入到傳送器 98
6.3 修改SteamVR傳送器代碼 104
6.3.1 將DoClick()更改為公共函數(shù) 104
6.3.2 修改SteamVR傳送器以使用LayerMask 104
6.4 設(shè)置攝像機(jī)游戲?qū)ο笊系慕M件 104
6.5 可選的附加功能 106
6.6 本章小結(jié) 106
第7章 游戲中用頭戴式顯示器瞄準(zhǔn) 107
7.1 攝像機(jī)附加炮彈發(fā)射系統(tǒng) 108
7.2 攝像機(jī)添加腳本用于獲取玩家輸入 109
7.2.1 編寫SprayInputProvider.cs腳本 109
7.2.2 腳本分解 110
7.3 噴壺添加發(fā)射腳本 111
7.3.1 編寫SprayShooter.cs腳本 111
7.3.2 腳本分解 112
7.4 在Inspector面板中設(shè)置組件 113
7.5 運(yùn)行游戲 114
7.6 本章小結(jié) 114
第8章 利用音頻充分實(shí)現(xiàn)虛擬現(xiàn)實(shí) 115
8.1 虛擬現(xiàn)實(shí)空間及其他 115
8.2 常用術(shù)語 115
8.2.1 環(huán)境音效 116
8.2.2 監(jiān)聽器 116
8.2.3 雙耳音頻 116
8.2.4 單音聲 116
8.2.5 3D聲 116
8.2.6 多普勒效應(yīng) 117
8.3 音頻源組件 117
8.4