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