基礎篇
第1章 HoloLens 2基礎
3
1.1混合現實技術概述 3
1.1.1MR概念 3
1.1.2全息圖
5 1.2HoloLens 2設備 5
1.3 MR技術原理 8
1.3.1 傳感器數據 8
1.3.2前端裡程計 10
1.3.3後端優化 10
1.3.4回環檢測 11
1.3.5建圖 11
1.4開發環境準備 12
1.4.1所需硬件和軟件 12
1.4.2軟件安裝 13
1.4.3軟件配置 15
1.5MR應用開發初體驗 16
1.5.1創建工程 16
1.5.2 直接導入 MRTK工具包 17
1.5.3 使用 UPM導入 MRTK工具包 18
1.5.4 使用 MRFT導入 MRTK工具包 20
1.5.5 導入 TextMeshPro工具包 20
1.5.6 配置 Unity項目 21
1.5.7 創建和設置場景 23
1.5.8 導出 Unity工程 23
1.5.9 部署到 HoloLens 2設備 23
HoloLens 2開發入門精要——基於 Unity和 MRTK
1.5.10 發布 MR應用 26
1.6 使用模擬器 27
1.7 MRTK輸入模擬 29
1.8 設備能力檢查 31
第2章 MRTK基礎 33
2.1 MRTK概述 33
2.2 MRTK體繫架構 34
2.2.1 配置文件 36
2.2.2 運行時 36
2.2.3 服務 36
2.2.4 擴展服務 39
2.2.5 數據提供者 41
2.3 配置文件 43
2.3.1 配置文件概述 44
2.3.2 配置指南 46
操作組件篇
第3章基本特性操作與開發 61
3.1 HoloLens 2設備門戶 61
3.1.1 連接設備門戶 61
3.1.2 功能簡介 62
3.2 研究模式 67
3.3 圖像與視頻捕獲 68
3.3.1 在設備中直接操作 68
3.3.2 在設備門戶中操作 68
3.3.3 代碼操作 69
3.4 全息遠端呈現 81
3.4.1 在 Unity編輯器中使用全息遠端呈現 81
3.4.2 MR應用程序使用全息遠端呈現 82
3.5 診斷繫統 84
3.6 動態 GLTF格式模型加載 86
3.7 多場景管理 88
3.7.1 場景繫統配置 88
3.7.2 場景加載與卸載 90
3.7.3 場景加載進度與事件 91
第4章交互與事件 95
4.1 Bounds Control 95
4.1.1 基本操作 96
4.1.2 HoloLens 2風格 101
4.1.3 事件 103
4.1.4 使用代碼操作 103
4.2 Object Manipulator 105
4.2.1 基本操作 105
4.2.2 事件 108
4.3 Constraint Manager 108
4.3.1 基本操作 108
4.3.2 約束組件 109
4.4 Interactable 111
4.4.1 基本操作 111
4.4.2 Interactable 配置節 114
4.4.3 事件 115
4.4.4 視覺主題 116
4.4.5 代碼操作 122
4.5 Solvers 124
4.5.1 解算器基礎 124
4.5.2 標準解算器 126
4.6 手指手掌可視化 130
4.6.1 Fingertip Visualization 130
4.6.2 RiggedHandVisualizer 131
4.6.3 ArticulatedHandMeshPulse 132
4.7 Elastic System 133
4.8 Dock 134
第5章 UX控件 136
5.1 按鈕 136
5.1.1 按鈕的使用 138
5.1.2 自定義按鈕 141
HoloLens 2開發入門精要——基於 Unity和 MRTK
5.2 Slate面板 143
5.3 繫統鍵盤 144
5.4 ToolTips 144
5.5 Sliders 145
5.6 近身菜單 146
5.7 應用程序欄 148
5.8 進度指示器 148
5.9 對話框 150
5.10 手勢引導 151
5.10.1 HandInteractionhint組件 152
5.10.2 MoveToTarget組件 153
5.10.3 RotateAroundPoint組件 154
功能技術篇
第6章空間感知和映射 157
6.1 運動跟蹤 157
6.2 空間感知 161
6.3 空間感知代碼操作 164
6.4 開發環境中測試空間感知 168
6.5 射線檢測 169
6.6 場景理解和語義 172
6.6.1 場景理解基礎 172
6.6.2 場景理解使用 175
6.7 空間感知和場景理解的應用 178
6.7.1 虛擬物體放置 179
6.7.2 遮擋 180
6.7.3 物理模擬 181
6.7.4 導航和路徑規劃 181
第7章手勢操作與交互 182
7.1 手勢輸入配置 182
7.1.1 輸入數據提供者 183
7.1.2 手部跟蹤 183
7.1.3 手部指針 184
7.2 指針概述 185
7.3 指針基本操作 187
7.4 手勢操作 192
7.4.1 近端操作 192
7.4.2 遠端操作 195
7.5 手部跟蹤 196
7.5.1 獲取手部姿態 197
7.5.2 獲取手部關節 198
7.5.3 獲取手部網格 199
7.5.4 手部關節使用演示 200
7.6 手勢錄制和回放 201
7.6.1 手勢錄制 202
7.6.2 手勢回放 204
7.7 手部菜單 204
第8章語音與交互 208
8.1 語音命令 208
8.1.1 打開話筒功能特性 208
8.1.2 設置語音命令關鍵詞 209
8.1.3 監聽並處理事件 209
8.1.4 自定義語音命令處理邏輯 210
8.2 語音識別 211
8.2.1 添加語音識別數據提供者 212
8.2.2 監聽並處理事件 212
8.2.3 自定義語音命令處理 213
第9章眼動跟蹤與凝視交互 215
9.1 眼動校準 215
9.2 眼動跟蹤配置 217
9.2.1 啟用凝視輸入功能特性 217
9.2.2 添加凝視數據提供者 218
9.2.3 設置眼動跟蹤參數 218
9.3 凝視功能使用 220
9.4 獲取凝視數據 220
HoloLens 2開發入門精要——基於 Unity和 MRTK
第10章光影與特效 223
10.1 光照 223
10.1.1 光源 224
10.1.2 光與材質的交互 224
10.1.3 光照模型 225
10.1.4 懸浮燈光 226
10.1.5 接近燈光 228
10.2 MRTK標準著色器 228
10.2.1 模型切割 230
10.2.2 輪廓線 232
10.2.3 擠出與模板測試 234
10.3 環境反射 235
10.3.1 立方體貼圖 235
10.3.2 環境反射與光照估計 236
10.4 陰影 237
第11章 3D文字與音視頻 241
11.1 3D文字 241
11.1.1 文字單位換算 241
11.1.2 中文字體制作 242
11.2 3D聲頻 243
11.2.1 3D聲場原理 244
11.2.2 3D空間音效簡單使用 244
11.2.3 運行時啟用和禁用 3D音效 248
11.2.4素音效 3D化 249
11.2.5 使用回響營造空間感 250
11.2.6 3D音效設計原則 252
11.3 3D視頻 254
11.3.1 VideoPlayer組件 254
11.3.2 視頻音效空間化 258
第12章空間錨點與 Azure雲服務 259
12.1 Azure雲服務概述 259
12.2 空間錨點 260
12.2.1 錨點概述 260
12.2.2 本地錨點 262
12.2.3 本地錨點持久化與傳輸 266
12.2.4 雲錨點 268
12.3 遠程渲染 278
12.4 小結 287
提高篇
第13章設計指南 291
13.1 MR應用設計挑戰 291
13.2 MR應用設計的一般原則 294
13.2.1 舒適性 295
13.2.2 顯示呈現 299
13.2.3 UX設計 302
13.2.4 3D音效 305
13.2.5 視覺效果 306
13.2.6 真實感 308
13.2.7 跟蹤丟失 313
13.3 MR應用交互設計指南 313
13.3.1 指示光標 313
13.3.2 可交互對像 315
13.3.3 本能交互 318
13.3.4 手勢交互 319
13.3.5 語音交互 325
13.3.6 凝視交互 328
第14章性能優化 331
14.1 性能優化基礎 331
14.1.1 影響性能的主要因素 331
14.1.2 MR應用常用調試方法 333
14.1.3 MR應用性能優化的一般原則 334
14.2 MR應用性能調試工具 335
14.2.1 Unity分析器 335
14.2.2 幀調試器 338
14.3 Unity分析器使用 340
HoloLens 2開發入門精要——基於 Unity和 MRTK
14.3.1 CPU使用情況分析器 340
14.3.2 渲染情況分析器 341
14.3.3 內存使用情況分析器 342
14.3.4 物理分析器 342
14.3.5 聲頻視頻分析器 343
14.4 性能優化的一般步驟 344
14.4.1 收集運行數據 345
14.4.2 分析運行數據 346
14.4.3 確定問題的原因 348
14.5 渲染優化 350
14.5.1 渲染流程 351
14.5.2 CPU瓶頸 351
14.5.3 GPU瓶頸 354
14.6 代碼優化 356
14.6.1 內存管理 356
14.6.2 垃圾回收 357
14.6.3 對像池 362
14.6.4 常見影響性能的代碼優化策略 363
14.7 MRTK優化設置 365
14.7.1 UI/UX優化 365
14.7.2 常用優化設置 366
14.7.3 MR應用開發一般注意事項 368
附錄 A 更多資源 369
參考文獻 370