《AR Foundation增強現實開發實戰(ARKit版)》是2023年4月1日清華大學出版社出版的圖書,作者:汪祥春。
基本介紹
- 中文名:AR Foundation增強現實開發實戰(ARKit版)
- 作者:汪祥春
- 出版時間:2023年4月1日
- 出版社:清華大學出版社
- ISBN:9787302627012
- 定價:119 元
- 印次:1-1
- 印刷日期:2023.03.22
內容簡介,圖書目錄,
內容簡介
本書基於AR Foundation框架,採用URP渲染管線,講述利用ARKit進行iOS平台的AR套用開發,從AR技術概念、原理、理論脈絡到各功能技術點、AR Quick Look、設計原則、性能最佳化,對ARKit套用開發中涉及的技術進行了全方位的講述,用語通俗易懂,闡述深入淺出。
本書共分三部分:第一部分為基礎篇,包括第1章至第3章,從最基礎的增強現實概念入手,通過一個實例闡述了AR套用開發從軟硬體準備、開發環境搭建、工程設定、發布部署全流程,探討了AR Foundation框架的技術基礎、常用組件,並著重探索了ARKit功能特性和運動跟蹤原理;第二部分為功能技術篇,包括第4章至第13章,對ARKit功能特性進行了全方位的詳細探索討論,從平面檢測、2D圖像和3D物體檢測、人臉檢測到持久化存儲與共享、光影特效、人體動捕等,全方位地進行了技術剖析、講解、演示,並對AR場景管理、圖像信息處理、3D文字聲頻視頻、AR Quick Look等實用功能進行了闡述和使用操作講解;第三部分為高級篇,包括第14章至第15章,主要闡述了AR套用設計、性能最佳化相關主題,著力提升開發人員在AR套用開發時的實際套用能力和整體把握能力。
本書結構清晰、循序漸進、深淺兼顧,實例豐富,每個技術點都有案例,特別注重對技術原理和實際運用的講述,提供實際工程實踐解決思路和方案。
本書適合AR初學者、Unity開發人員、程式設計師、科研人員,也可以作為高校、大專院校相關專業師生的學習用書,以及培訓學校的培訓教材。
圖書目錄
目 錄
CONTENTS
基 礎 篇
第1 章 AR 開發入門 ……………………………………………………………………………… 3
1.1 增強現實技術概述 ……………………………………………………………………… 3
1.1.1 AR 概念 …………………………………………………………………………… 3
1.1.2 AR 技術套用 ……………………………………………………………………… 5
1.2 AR 技術原理 ……………………………………………………………………………… 5
1.2.1 感測器數據 ……………………………………………………………………… 6
1.2.2 前端里程計 ……………………………………………………………………… 8
1.2.3 後端最佳化 ………………………………………………………………………… 8
1.2.4 迴環檢測 ………………………………………………………………………… 8
1.2.5 建圖 ……………………………………………………………………………… 9
1.3 AR Foundation 概述 …………………………………………………………………… 10
1.3.1 AR Foundation 與ARKit ……………………………………………………… 11
1.3.2 AR Foundation 支持的功能 …………………………………………………… 11
1.3.3 AR Foundation 功能概述 ……………………………………………………… 12
1.3.4 AR Foundation 體系架構概述 ………………………………………………… 13
1.3.5 基本術語 ……………………………………………………………………… 13
1.4 支持的設備 …………………………………………………………………………… 15
1.5 開發環境準備 ………………………………………………………………………… 16
1.5.1 所需硬體和軟體 ……………………………………………………………… 16
1.5.2 軟體安裝 ……………………………………………………………………… 17
1.6 ARKit 初體驗 ………………………………………………………………………… 20
1.6.1 工程創建 ……………………………………………………………………… 20
1.6.2 工具包導入 …………………………………………………………………… 22
1.6.3 工程設定 ……………………………………………………………………… 24
1.6.4 環境搭建 ……………………………………………………………………… 26
目 錄
IV AR Foundation 增強現實開發實戰(ARKit 版)
1.6.5 代碼編寫 ……………………………………………………………………… 29
1.6.6 發布Xcode 工程 ……………………………………………………………… 31
1.6.7 調試運行 ……………………………………………………………………… 34
1.7 Unity XR 模擬工具 …………………………………………………………………… 36
1.8 ARKit 會話錄製與重放 ……………………………………………………………… 40
1.9 其他模擬器 …………………………………………………………………………… 42
第2 章 AR Foundation 基礎 …………………………………………………………………… 46
2.1 AR Foundation 體系架構 ……………………………………………………………… 46
2.1.1 AR 子系統概念 ………………………………………………………………… 47
2.1.2 AR 子系統使用 ………………………………………………………………… 48
2.1.3 跟蹤子系統 …………………………………………………………………… 50
2.2 AR Session 和XR Origin ……………………………………………………………… 50
2.2.1 AR Session ……………………………………………………………………… 51
2.2.2 XR Origin ……………………………………………………………………… 54
2.3 可跟蹤對象 …………………………………………………………………………… 56
2.3.1 可跟蹤對象管理器 …………………………………………………………… 57
2.3.2 可跟蹤對象事件 ……………………………………………………………… 58
2.3.3 管理可跟蹤對象 ……………………………………………………………… 59
2.4 會話管理 ……………………………………………………………………………… 60
第3 章 ARKit 功能特性與開發基礎 ………………………………………………………… 63
3.1 ARKit 概述及主要功能 ……………………………………………………………… 63
3.1.1 ARKit 功能 …………………………………………………………………… 64
3.1.2 ARKit 三大基礎能力 ………………………………………………………… 66
3.1.3 ARKit 的不足 ………………………………………………………………… 68
3.2 運動跟蹤原理 ………………………………………………………………………… 69
3.2.1 ARKit 坐標系 ………………………………………………………………… 69
3.2.2 ARKit 運動跟蹤分類 ………………………………………………………… 70
3.2.3 ARKit 運動跟蹤 ……………………………………………………………… 72
3.2.4 ARKit 使用運動跟蹤的注意事項 …………………………………………… 74
3.3 設備可用性檢查 ……………………………………………………………………… 74
3.4 AR 會話生命周期管理與跟蹤質量 …………………………………………………… 75
3.5 基於地理位置的AR …………………………………………………………………… 79
3.5.1 技術基礎 ……………………………………………………………………… 79
3.5.2 實踐 …………………………………………………………………………… 81
目 錄 V
3.6 熱管理 ………………………………………………………………………………… 87
3.7 AR 輕套用 ……………………………………………………………………………… 90
功能技術篇
第4 章 平面檢測與錨點管理…………………………………………………………………… 95
4.1 平面檢測引導 ………………………………………………………………………… 95
4.1.1 Unity 實現 ……………………………………………………………………… 95
4.1.2 ARKit 引導視圖 ……………………………………………………………… 99
4.2 平面管理 ……………………………………………………………………………… 105
4.2.1 平面檢測 ……………………………………………………………………… 105
4.2.2 可視化平面 …………………………………………………………………… 106
4.2.3 個性化渲染平面 ……………………………………………………………… 107
4.2.4 開啟與關閉平面檢測功能 …………………………………………………… 112
4.2.5 顯示與隱藏已檢測平面 ……………………………………………………… 113
4.2.6 平面遮擋 ……………………………………………………………………… 115
4.3 射線檢測 ……………………………………………………………………………… 117
4.3.1 射線檢測概念 ………………………………………………………………… 117
4.3.2 射線檢測詳細講解 …………………………………………………………… 119
4.4 可視化放置點 ………………………………………………………………………… 120
4.5 特徵點與點雲 ………………………………………………………………………… 123
4.5.1 特徵點 ………………………………………………………………………… 123
4.5.2 點雲 …………………………………………………………………………… 124
4.5.3 點雲數據採集 ………………………………………………………………… 125
4.6 錨點 …………………………………………………………………………………… 129
4.7 平面分類 ……………………………………………………………………………… 133
4.8 場景表面格線 ………………………………………………………………………… 136
4.8.1 場景幾何 ……………………………………………………………………… 137
4.8.2 場景幾何語義 ………………………………………………………………… 141
第5 章 2D 圖像與3D 物體檢測跟蹤 ………………………………………………………… 150
5.1 2D 圖像檢測跟蹤 ……………………………………………………………………… 150
5.1.1 圖像檢測跟蹤基本操作 ……………………………………………………… 150
5.1.2 圖像檢測跟蹤功能的啟用與禁用 …………………………………………… 155
5.1.3 多圖像檢測跟蹤 ……………………………………………………………… 156
VI AR Foundation 增強現實開發實戰(ARKit 版)
5.1.4 運行時創建參考圖像庫 ……………………………………………………… 161
5.1.5 運行時切換參考圖像庫 ……………………………………………………… 162
5.1.6 運行時添加參考圖像 ………………………………………………………… 163
5.1.7 脫卡 …………………………………………………………………………… 167
5.1.8 圖像檢測跟蹤最佳化 …………………………………………………………… 169
5.2 3D 物體檢測跟蹤 ……………………………………………………………………… 171
5.2.1 獲取參考物體空間特徵信息 ………………………………………………… 171
5.2.2 掃描獲取物體空間特徵信息的注意事項 …………………………………… 174
5.2.3 AR Tracked Object Manager 組件 …………………………………………… 175
5.2.4 3D 物體檢測識別跟蹤基本操作 ……………………………………………… 176
5.2.5 3D 物體檢測跟蹤啟用與禁用 ………………………………………………… 177
5.2.6 多物體檢測識別跟蹤 ………………………………………………………… 179
第6 章 人臉檢測跟蹤…………………………………………………………………………… 182
6.1 人臉檢測基礎 ………………………………………………………………………… 182
6.1.1 人臉檢測概念 ………………………………………………………………… 182
6.1.2 人臉檢測技術基礎 …………………………………………………………… 183
6.2 人臉姿態與格線 ……………………………………………………………………… 185
6.2.1 人臉姿態 ……………………………………………………………………… 185
6.2.2 人臉格線 ……………………………………………………………………… 187
6.3 多人臉檢測 …………………………………………………………………………… 192
6.4 BlendShapes …………………………………………………………………………… 194
6.4.1 BlendShapes 基礎 ……………………………………………………………… 194
6.4.2 BlendShapes 技術原理 ………………………………………………………… 195
6.4.3 BlendShapes 的使用 …………………………………………………………… 197
6.5 同時開啟前後攝像頭 ………………………………………………………………… 199
6.6 眼動跟蹤 ……………………………………………………………………………… 202
第7 章 光影效果………………………………………………………………………………… 208
7.1 光照基礎 ……………………………………………………………………………… 208
7.1.1 光源 …………………………………………………………………………… 208
7.1.2 光與材質的互動 ……………………………………………………………… 209
7.1.3 光照模型 ……………………………………………………………………… 210
7.1.4 3D 渲染 ………………………………………………………………………… 211
7.2 光照估計 ……………………………………………………………………………… 211
7.2.1 光照一致性 …………………………………………………………………… 212
目 錄 VII
7.2.2 光照估計實例 ………………………………………………………………… 212
7.3 環境反射 ……………………………………………………………………………… 216
7.3.1 立方體貼圖 …………………………………………………………………… 216
7.3.2 PBR 渲染 ……………………………………………………………………… 217
7.3.3 反射探頭 ……………………………………………………………………… 218
7.3.4 紋理採樣過濾 ………………………………………………………………… 218
7.3.5 AR Environment Probe Manager 組件 ………………………………………… 220
7.3.6 環境反射使用 ………………………………………………………………… 222
7.3.7 性能最佳化 ……………………………………………………………………… 224
7.4 內置實時陰影 ………………………………………………………………………… 225
7.4.1 ShadowMap 技術原理 ………………………………………………………… 226
7.4.2 使用實時陰影 ………………………………………………………………… 227
7.5 Planar 陰影 …………………………………………………………………………… 231
7.5.1 數學原理 ……………………………………………………………………… 232
7.5.2 代碼實現 ……………………………………………………………………… 233
7.6 偽陰影 ………………………………………………………………………………… 238
第8 章 持久化存儲與多人共享………………………………………………………………… 240
8.1 雲錨點 ………………………………………………………………………………… 240
8.2 ARWorldMap …………………………………………………………………………… 241
8.2.1 ARWorldMap 概述 …………………………………………………………… 241
8.2.2 ARWorldMap 實例 …………………………………………………………… 242
8.3 協作會話 ……………………………………………………………………………… 247
8.3.1 協作會話概述 ………………………………………………………………… 248
8.3.2 協作會話實例 ………………………………………………………………… 251
8.3.3 協作會話使用注意事項 ……………………………………………………… 255
8.4 Azure 空間定位點 ……………………………………………………………………… 257
8.4.1 Azure 空間定位點概述 ………………………………………………………… 257
8.4.2 Azure 空間定位點使用實例 …………………………………………………… 257
8.4.3 Azure 空間定位點使用注意事項 ……………………………………………… 266
第9 章 肢體動作捕捉與人形遮擋……………………………………………………………… 267
9.1 2D 人體姿態估計 ……………………………………………………………………… 267
9.1.1 人體骨骼關節點檢測 ………………………………………………………… 267
9.1.2 使用2D 人體姿態估計 ………………………………………………………… 268
VIII AR Foundation 增強現實開發實戰(ARKit 版)
9.2 3D 人體姿態估計 ……………………………………………………………………… 273
9.2.1 3D 人體姿態估計基礎 ………………………………………………………… 273
9.2.2 使用3D 人體姿態估計實例 …………………………………………………… 284
9.3 人形遮擋 ……………………………………………………………………………… 285
9.3.1 人形遮擋原理 ………………………………………………………………… 286
9.3.2 人形遮擋實現 ………………………………………………………………… 288
9.4 人形提取 ……………………………………………………………………………… 289
第10 章 場景圖像獲取與場景深度 …………………………………………………………… 294
10.1 獲取GPU 圖像 ……………………………………………………………………… 294
10.1.1 獲取攝像頭原始圖像 ……………………………………………………… 294
10.1.2 獲取螢幕顯示圖像 ………………………………………………………… 296
10.2 獲取CPU 圖像 ……………………………………………………………………… 299
10.2.1 AR 攝像頭圖像數據流 ……………………………………………………… 300
10.2.2 從CPU 中獲取攝像頭圖像 ………………………………………………… 301
10.3 邊緣檢測原理 ………………………………………………………………………… 310
10.3.1 卷積 ………………………………………………………………………… 311
10.3.2 Sobel 運算元 …………………………………………………………………… 311
10.4 CPU 圖像邊緣檢測實例 ……………………………………………………………… 313
10.5 Depth API …………………………………………………………………………… 316
10.5.1 Depth API 概述 ……………………………………………………………… 317
10.5.2 Depth API 實例 ……………………………………………………………… 319
10.5.3 場景深度套用場景 ………………………………………………………… 324
第11 章 相機與手勢操作 ……………………………………………………………………… 326
11.1 AR 場景操作 ………………………………………………………………………… 326
11.1.1 場景操作方法 ……………………………………………………………… 327
11.1.2 場景操作實例 ……………………………………………………………… 327
11.2 手勢操作互動 ………………………………………………………………………… 329
11.2.1 手勢檢測 …………………………………………………………………… 329
11.2.2 手勢操作控制 ……………………………………………………………… 332
11.3 XR Interaction Toolkit ………………………………………………………………… 334
11.3.1 對象放置 …………………………………………………………………… 335
11.3.2 對象選擇 …………………………………………………………………… 339
11.3.3 對象操作 …………………………………………………………………… 341
目 錄 IX
第12 章 3D 文字與音視頻 ……………………………………………………………………… 343
12.1 3D 文字 ……………………………………………………………………………… 343
12.1.1 文字單位換算 ……………………………………………………………… 343
12.1.2 中文字型製作 ……………………………………………………………… 344
12.2 3D 聲頻 ……………………………………………………………………………… 345
12.2.1 3D 聲場原理 ………………………………………………………………… 346
12.2.2 空間聲頻使用 ……………………………………………………………… 347
12.2.3 使用空間聲頻 ……………………………………………………………… 347
12.2.4 運行時啟用和禁用3D 音效 ……………………………………………… 350
12.2.5 使用迴響營造空間感 ……………………………………………………… 351
12.2.6 3D 音效設計原則 …………………………………………………………… 354
12.3 3D 視頻 ……………………………………………………………………………… 355
12.3.1 Video Player 組件 …………………………………………………………… 355
12.3.2 3D 視頻播放實現 …………………………………………………………… 358
12.3.3 視頻音效空間化 …………………………………………………………… 361
第13 章 USDZ 與AR Quick Look …………………………………………………………… 362
13.1 USDZ 概述 …………………………………………………………………………… 362
13.1.1 USD ………………………………………………………………………… 362
13.1.2 USDZ ………………………………………………………………………… 363
13.2 USDZ 檔案轉換 ……………………………………………………………………… 363
13.2.1 USDZ Tools ………………………………………………………………… 363
13.2.2 Reality Converter …………………………………………………………… 364
13.2.3 USD Unity 外掛程式 …………………………………………………………… 366
13.3 AR Quick Look 概述 ………………………………………………………………… 367
13.4 App 套用中嵌入AR Quick Look …………………………………………………… 370
13.5 Web 網頁中嵌入AR Quick Look …………………………………………………… 374
13.5.1 選擇支付樣式 ……………………………………………………………… 376
13.5.2 顯示自定義按鈕檔案 ……………………………………………………… 376
13.5.3 自定義顯示文字 …………………………………………………………… 377
13.5.4 自定義顯示條目 …………………………………………………………… 378
13.5.5 自定義條目高度 …………………………………………………………… 378
13.5.6 事件處理 …………………………………………………………………… 379
13.6 使用AR Quick Look 的注意事項 …………………………………………………… 379
X AR Foundation 增強現實開發實戰(ARKit 版)
高 級 篇
第14 章 AR 套用設計指南 …………………………………………………………………… 385
14.1 移動AR 帶來的挑戰 ………………………………………………………………… 385
14.1.1 3D 化思維 …………………………………………………………………… 385
14.1.2 用戶必須移動 ……………………………………………………………… 386
14.1.3 要求手持設備 ……………………………………………………………… 386
14.1.4 近臉使用 …………………………………………………………………… 387
14.1.5 手勢操作 …………………………………………………………………… 387
14.1.6 啟動套用 …………………………………………………………………… 387
14.1.7 色彩運用 …………………………………………………………………… 388
14.2 移動AR 設計準則 …………………………………………………………………… 388
14.2.1 實用性或娛樂性 …………………………………………………………… 388
14.2.2 虛實融合必須有意義 ……………………………………………………… 389
14.2.3 移動限制 …………………………………………………………………… 389
14.2.4 心理預期與維度轉換 ……………………………………………………… 389
14.2.5 環境影響 …………………………………………………………………… 390
14.2.6 視覺效果 …………………………………………………………………… 390
14.2.7 UI 設計 ……………………………………………………………………… 391
14.2.8 沉浸式互動 ………………………………………………………………… 391
14.3 移動AR 設計指南 …………………………………………………………………… 392
14.3.1 環境 ………………………………………………………………………… 393
14.3.2 用戶細節 …………………………………………………………………… 394
14.3.3 虛擬內容 …………………………………………………………………… 396
14.3.4 互動 ………………………………………………………………………… 403
14.3.5 視覺設計 …………………………………………………………………… 407
14.3.6 真實感 ……………………………………………………………………… 412
14.3.7 3D 音效 ……………………………………………………………………… 416
第15 章 性能最佳化 ……………………………………………………………………………… 419
15.1 性能最佳化基礎 ………………………………………………………………………… 419
15.1.1 影響性能的主要因素 ……………………………………………………… 419
15.1.2 AR 套用常用調試方法 ……………………………………………………… 421
15.1.3 AR 套用性能最佳化一般原則 ………………………………………………… 422
目 錄 XI
15.2 AR 套用性能調試工具 ……………………………………………………………… 423
15.2.1 DebugMenu ………………………………………………………………… 423
15.2.2 Unity 分析器 ………………………………………………………………… 424
15.2.3 幀調試器 …………………………………………………………………… 427
15.3 Unity 分析器使用 …………………………………………………………………… 428
15.3.1 CPU 使用情況分析器 ……………………………………………………… 428
15.3.2 渲染情況分析器 …………………………………………………………… 429
15.3.3 記憶體使用情況分析器 ……………………………………………………… 430
15.3.4 物理分析器 ………………………………………………………………… 431
15.3.5 音視頻分析器 ……………………………………………………………… 432
15.4 性能最佳化流程 ………………………………………………………………………… 432
15.4.1 收集運行數據 ……………………………………………………………… 433
15.4.2 分析運行數據 ……………………………………………………………… 434
15.4.3 確定問題原因 ……………………………………………………………… 436
15.5 渲染最佳化 ……………………………………………………………………………… 437
15.5.1 渲染流程 …………………………………………………………………… 437
15.5.2 CPU 瓶頸 …………………………………………………………………… 438
15.5.3 GPU 瓶頸 …………………………………………………………………… 441
15.6 代碼最佳化 ……………………………………………………………………………… 443
15.6.1 記憶體管理 …………………………………………………………………… 443
15.6.2 垃圾回收 …………………………………………………………………… 444
15.6.3 對象池 ……………………………………………………………………… 449
15.6.4 常見影響性能的代碼最佳化策略 …………………………………………… 450
15.7 ARKit 最佳化設定 ……………………………………………………………………… 452
15.7.1 UI/UX 最佳化 ………………………………………………………………… 452
15.7.2 常用最佳化設定 ……………………………………………………………… 452
15.7.3 AR 套用開發一般注意事項 ………………………………………………… 454