基於Unity與SteamVR構建虛擬世界
內容描述
虛擬現實的黃金時代已經到來,本書旨在幫助你完成虛擬現實編程和開發的第一步。作者在書中探討了虛擬現實的幾個熱點問題,包括VR暈眩症、臨場感、性能問題,以及用來減少這些不利影響的切實可行的方法,這些讓VR體驗更加全面。本書還向讀者展示了使用Unity遊戲引擎和編程的實戰。書中的示例項目和C#代碼都兼容SteamVR與當前的虛擬現實頭戴式顯示器。這是一本面向廣泛讀者的VR基礎與VR開發的實戰指南。
本書特色:
討論了虛擬現實面臨的一些關鍵問題,並為更好地體驗虛擬現實提供有用的建議。
開發兼容Oculus Rift和HTC Vive以及開源虛擬現實(OSVR)頭戴式顯示器(如HDK)的VR應用程序。
總結如何建立站立和座式的體驗。
使用Unity分析器優化性能。
針對使用HTC Vive控制器拾取和放下物理對象(包括觸覺反饋)開發案例。
瞭解如何構建虛擬現實用戶界面,以及探討虛擬現實用戶界面設計的最佳實踐。
作者是一位遊戲行業的資深人士,自Oculus開發工具包問世起,就一直從事VR開發。
目錄大綱
譯者序
前言
致謝
第1章虛擬世界簡介1
1.1我們虛擬化多久了1
1.2頭戴式顯示器誕生之前2
1.3頭戴式顯示器的誕生2
1.4消費者級VR的探索4
1.5家用電腦式虛擬現實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可以像內核一樣進入電腦嗎—VR面臨的困難和挑戰10
1.8.1運動追踪和運動捕獲輸入設備10
1.8.2觸覺反饋11
1.8.3視覺追踪11
1.8.4空間和移動12
1.8.5虛擬現實內容製作12
1.9虛擬現實設計和發展13
1.9.1計劃:任何計劃皆可行13
1.9.2提前安排主要交互14
1.9.3真人測試14
1.9.4尋找合作與流程14
1.9.5真實性不是絕對的14
1.10本章小結15
第2章硬件初始化設置16
2.1配套硬件和軟件需求16
2.1.1 HTC Vive推薦規格17
2.1.2 OSVR HDK推薦規格17
2.1.3 Rift推薦規格17
2.1.4兼容性工具18
2.1. 5處理兼容性工具結果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本章小結36
第3章創建SteamVR Unity項目37
3.1下載Unity並創建新項目38
3.2 Unity編輯器教學38
3.3創建新的Unity項目42
3.4下載適用Unity的SteamVR庫42
3.5 VR視角的空間46
3.5.1創建Unity新場景46
3.5.2從示例文件中復制模型47
3.5.3添加新的遊戲對象47
3.5.4將花園模型添加到場景中48
3.5.5添加房屋模型49
3.5.6設置VR攝像機裝置50
3.5.7 VR環境比例52
3.5.8調整花園模型比例53
3.6 SteamVR攝像機定位和重新定位54
3.7項目保存和備份54
3.8本章小結55
第4章添加交互56
4.1添加交互框架57
4.2添加瞄準光標57
4.2.1添加一個UI畫布57
4.2.2調整畫布以適合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創建門控制腳本64
4.5.2腳本分解66
4.6門把手添加盒碰撞體69
4.7 DoorController組件設置引用70
4.8保存工作71
4.9本章小結71
第5章構建頭戴式顯示器和遊戲控制器用戶界面72
5.1製作主菜單場景72
5.1.1打開示例項目72
5.1.2創建畫布進行用戶界面繪製73
5.1.3創建按鈕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遊戲對像到場景中86
5.7.2編寫主菜單腳本87
5.7.3事件函數添加到菜單按鈕88
5.8添加場景設置89
5.9測試菜單90
5.10保存工作90
5.11本章小結91
第6章使用SteamVR傳送系統在虛擬世界中移動93
6.1設置傳送場景93
6.1.1為傳送地面位置創建碰撞器94
6.1.2設置圖層97
6.1.3設置攝像機裝置並添加組件97
6.2編寫C#腳本輸入到傳送器98
6.3修改SteamVR傳送器代碼104
6.3.1將DoClick()更改為公共函數104
6.3.2修改SteamVR傳送器以使用LayerMask 104
6.4設置攝像機遊戲對像上的組件104
6.5可選的附加功能106
6.6本章小結106
第7章遊戲中用頭戴式顯示器瞄準107
7.1攝像機附加砲彈發射系統108
7.2攝像機添加腳本用於獲取玩家輸入109
7.2.1編寫SprayInputProvider.cs腳本109
7.2.2腳本分解110
7.3噴壺添加發射腳本111
7.3.1編寫SprayShooter.cs腳本111
7.3.2腳本分解112
7.4在Inspector面板中設置組件113
7.5運行遊戲114
7.6本章小結114
第8章利用音頻充分實現虛擬現實115
8.1虛擬現實空間及其他115
8.2常用術語115
8.2.1環境音效116
8.2.2監聽器116
8.2.3雙耳音頻116
8.2.4單音聲116
8.2.5 3D聲116
8.2.6多普勒效應117
8.3音頻源組件117
8.4為場景添加環境音效118
8.5為飛蟲添加音效121
8.6為噴壺添加音效122
8.7為攝像機添加一個音頻源122
8.7.1古怪且有趣123
8.7.2快節奏且激動人心123
8.8創建一個音頻混音器123
8.8.1音頻混音器窗口123
8.8.2在音頻混音器窗口設置混音器125
8.9添加混音器組125
8.10設置音頻源來使用音頻混音器組126
8.11測試並混合音頻126
8.11.1音頻閃避128
8.11.2其他效果129
8.12保存項目129
8.13本章小結129
第9章HTC Vive移動控制器130
9.1如何與虛擬世界交互130
9.2 HTC Vive控制器130
9.2.1嘗試SteamVR交互系統示例場景131
9.2.2設計房間規模VR控制器技巧131
9.3在虛擬現實中利用Vive控制器拾取並放下132
9.3.1在Unity場景中添加Vive控制器133
9.3.2 PickUp.cs腳本134
9.3.3腳本分解136
9.3.4添加觸覺反饋145
9.4 SteamVR交互系統實現用戶界面150
9.4.1創建新項目並導入SteamVR 150
9.4.2創建新場景並添加Player預設體150
9.4.3製作簡單的UI畫布與按鈕150
9.4.4 VR運行153
9.5利用Vive控制器實現虛擬世界的傳送153
9.5.1創建新項目並導入SteamVR 153
9.5.2創建新場景並添加一個Player預設體153
9.5.3測試154
9.6本章小結154
第10章手勢輸入系統156
10.1 Leap Motion VR 156
10.1.1 Leap Motion VR安裝套件157
10.1.2下載Leap Motion Orion驅動程序和軟件157
10.1.3連接頭戴式顯示器測試Visualizer 158
10.1.4下載Leap Motion Unity插件資源包158
10.1.5為交互引擎與Leap Motion設置Unity項目158
10.1.6在虛擬世界中實現159
10.1.7鋼琴按鍵編程160
10.1.8潛在問題164
10.2 Noitom感知神經元動作捕捉164
10.2.1下載和安裝165
10.2.2運行示例項目167
10.2.3設置Unity項目167
10.2.4使用全身動作捕捉套裝171
10.2.5潛在問題172
10.3本章小結173
第11章座式或靜止的VR體驗攝像機裝置174
11.1 VR駕駛簡單的車輛174
11.1.1打開示例項目174
11.1.2代碼設定坐或立校準175
11.1.3腳本分解176
11.1.4將車輛添加為攝像機的父對象179
11.2什麼是第三人稱以及虛擬現實是否適合第三人稱視角180
11.3外部攝像機跟隨車輛180
11.3 .1打開示例項目180
11.3.2設置攝像機裝置180
11.3.3添加一個攝像機腳本181
11.3.4保存182
11.3.5預覽場景182
11.4本章小結182
第12章虛擬現實暈眩症183
12.1虛擬現實暈眩症是什麼184
12.1.1個人體驗184
12.1.2 VR暈眩症狀和徵兆184
12.2是否可以解決187
12.3本章小結188
第13章Unity中減少VR暈眩症的實用技術189
13.1用UI覆蓋來縮小視野189
13.1.1打開示例項目190
13.1.2視場蒙版190
13.1.3編寫動態縮放腳本190
13.1.4運行示例194
13.2適用於VR的第三人稱視角攝像機195
13.2.1打開並試行示例文件195
13.2.2編程196
13.2.3第三人稱VR攝像機裝置199
13.3假鼻子以及它如何聞味道200
13.4本章小結202
第14章改善與優化203
14.1定制SteamVR管理器203
14.2 VR優化206
14.2.1渲染信息統計窗口207
14.2.2性能分析器207
14.2.3批量處理213
14.2.4遮擋213
14.2.5快速代碼技巧216
14.2.6幾何建模218
14.3本章小結220
第15章展望未來及寫在最後的話222
15.1未來222
15.1.1無線頭戴式顯示器222
15.1.2背包式筆記本電腦223
15.1.3倉儲級體驗223
15.1.4視線追踪223
15.1.5光場VR 223
15.1.6光像素VR 224
15.1.7 Khronos VR 224
15.2結語224
參考文獻226