Google ARCore的基本原理:學(xué)習(xí)利用ARCore1.0構(gòu)建Android、Unity和Web平臺下的增強(qiáng)現(xiàn)實(shí)
定 價:59 元
- 作者:[加拿大]邁克爾·蘭納姆(Micheal Lanham)
- 出版時間:2018/11/1
- ISBN:9787111608851
- 出 版 社:機(jī)械工業(yè)出版社
- 中圖法分類:TP391.98
- 頁碼:
- 紙張:膠版紙
- 版次:
- 開本:16開
增強(qiáng)現(xiàn)實(shí)(AR)在游戲娛樂、建筑、教育、醫(yī)療、軍事等領(lǐng)域有著廣泛的應(yīng)用。隨著Google公司發(fā)布 ARCore之后,基于ARCore的增強(qiáng)現(xiàn)實(shí)開發(fā)也變得更加容易。本書介紹了Android、Unity和Web平臺上的ARCore開發(fā),主要從運(yùn)動跟蹤、環(huán)境理解和光線估計(jì)等方面進(jìn)行了詳細(xì)闡述。另外,還介紹了混合現(xiàn)實(shí)(MR)及其應(yīng)用。后,討論了性能提升技巧和常見故障排除方法。
本書適合想要深入學(xué)習(xí)利用ARCore構(gòu)建AR應(yīng)用程序但在游戲或圖形編程方面沒有任何背景知識的開發(fā)人員閱讀,另外,適合人工智能領(lǐng)域涉及人機(jī)交互、深度學(xué)習(xí)、AR、VR(虛擬現(xiàn)實(shí))、MR的相關(guān)讀者閱讀。
關(guān)于本書
您是否是想要成為利用Google ARCore平臺來創(chuàng)建沉浸式酷炫增強(qiáng)現(xiàn)實(shí)應(yīng)用程序的移動端開發(fā)人員或Web開發(fā)人員?如果是,那么本書將幫助您直接進(jìn)入ARCore的開發(fā),并輕松且詳細(xì)地創(chuàng)建一個AR應(yīng)用程序。
本書主要介紹了如何實(shí)現(xiàn)ARCore的核心功能,從3D渲染的基本原理到更先進(jìn)的概念,如光線照明、著色器、機(jī)器學(xué)習(xí)等。
首先將從在3種平臺(Web、Android和Unity)上構(gòu)建一個基本項(xiàng)目開始。接下來,介紹運(yùn)動跟蹤、環(huán)境認(rèn)知和光線估計(jì)的ARCore概念。對于每一個核心概念,都將通過學(xué)習(xí)一個實(shí)際項(xiàng)目來應(yīng)用和擴(kuò)展ARCore特性,從學(xué)習(xí)三維渲染和光線的基礎(chǔ)知識到探索更先進(jìn)的概念。
讀者可以編寫自定義的著色器來照射AR中的虛擬對象,然后構(gòu)建一個神經(jīng)網(wǎng)絡(luò)來識別環(huán)境,并利用ARCore在混合現(xiàn)實(shí)中實(shí)現(xiàn)更龐大的應(yīng)用程序。在本書的后,還將學(xué)習(xí)如何實(shí)現(xiàn)運(yùn)動跟蹤和環(huán)境學(xué)習(xí),創(chuàng)建動畫和聲音,生成虛擬人物,并在屏幕上模擬。
本書主要內(nèi)容
•在Android、Web和Unity平臺上構(gòu)建和部署增強(qiáng)現(xiàn)實(shí)應(yīng)用程序;
•實(shí)現(xiàn)用ARCore來識別和可視化對象,如點(diǎn)云、平面、表面和/或網(wǎng)格;
•利用Google ARCore和Java語言開發(fā)的OpenGL ES探索環(huán)境理解的先進(jìn)概念;
•在ARCore中建立光線等級,并編寫C#腳本來觀測和傳播場景中的光線變化;
•開發(fā)反映光線變化的圖形著色器并繪制環(huán)境以實(shí)現(xiàn)在Unity/C#平臺中放置對象;
•集成運(yùn)動跟蹤和Web ARCore API以及Google街景來實(shí)現(xiàn)一種AR/VR綜合體驗(yàn)。
增強(qiáng)現(xiàn)實(shí)(AR)應(yīng)用已從新奇事物逐步走向現(xiàn)實(shí),隨著 ARKit和 ARCore的發(fā)布,對于普通開發(fā)人員來說,這使得入門越來越容易。現(xiàn)在,幾乎所有掌握編程語言的人都可以利用各種平臺來快速構(gòu)建 AR體驗(yàn)。隨著 ARCore的發(fā)布,Google公司使得 AR開發(fā)更加容易,同時也支持多個開發(fā)平臺。本書將指導(dǎo)利用 JavaScript,以及利用 Java/Android平臺在移動 Web平臺和利用 C#/Unity平臺在移動終端來構(gòu)建 AR應(yīng)用程序。在此過程中,將學(xué)習(xí)為用戶構(gòu)建一個高質(zhì)量 AR體驗(yàn)的基本原理。
本書面向讀者
本書面向想要深入學(xué)習(xí)利用 ARCore構(gòu)建 AR應(yīng)用程序但在游戲或圖形編程方面沒有任何背景知識的開發(fā)人員。盡管本書假定讀者只具有高中程度的基本數(shù)學(xué)基礎(chǔ),但讀者應(yīng)至少熟練掌握下列一種編程語言: JavaScript、Java或 C#。
本書涵蓋的主要內(nèi)容
第 1章 入門 介紹了當(dāng)前 AR應(yīng)用程序需要掌握的基本概念,從而為用戶提供滿意的體驗(yàn)。在此,將學(xué)習(xí)運(yùn)動跟蹤、環(huán)境理解和光線估計(jì)等基本概念。
第 2章 Android平臺上的 ARCore 介紹了基于 Android Studio的 Android平臺開發(fā),其中展示了如何安裝 Android Studio以及建立第一個 ARCore應(yīng)用程序。
第 3章 Unity平臺上的 ARCore 討論了如何安裝和構(gòu)建一個 Unity平臺下的 ARCore應(yīng)用程序。另外,還介紹了如何利用 Android平臺開發(fā)工具來遠(yuǎn)程調(diào)試一個應(yīng)用程序。
第 4章 Web平臺上的 ARCore 介紹基于 JavaScript的 Web平臺開發(fā),并著重討論了如何利用 Node.js來建立簡單的 Web服務(wù)器。然后,本章還分析了 ARCore的各種示例模板,并討論了在進(jìn)一步開發(fā)中如何擴(kuò)展這些模板。
第 5章 真實(shí)世界中的運(yùn)動跟蹤 在本章對前面所學(xué)內(nèi)容進(jìn)行了擴(kuò)展,并在一個 Web平臺示例中添加了真實(shí)世界的運(yùn)動跟蹤。該示例不僅展示了 3D概念的基本工作原理,而且還表明了 ARCore是如何跟蹤用戶動作的。
第 6章 環(huán)境理解 本章返回到 Android平臺,著重分析 ARCore是如何理解用戶所處環(huán)境的。將學(xué)習(xí)掌握 ARCore如何識別環(huán)境中的平面或表面,并為實(shí)現(xiàn)用戶交互和可視化將其網(wǎng)格化。在此,討論了如何修改著色器以實(shí)現(xiàn)從用戶視角來測量和著色這些點(diǎn)。
第 7章 光線估計(jì) 闡述了光線和陰影在用戶購買 AR體驗(yàn)過程中的作用。學(xué)習(xí)了 ARCore如何實(shí)現(xiàn)光線估計(jì),以及如何照亮用戶放置在 AR世界中的虛擬模型。
第 8章 環(huán)境認(rèn)知 在此介紹了機(jī)器學(xué)習(xí)的基礎(chǔ)知識,并強(qiáng)調(diào)了技術(shù)對于 AR成功的重要性。然后,建立了一個簡單的神經(jīng)網(wǎng)絡(luò),利用反向傳播技術(shù)實(shí)現(xiàn)了監(jiān)督式學(xué)習(xí)。在學(xué)習(xí)了神經(jīng)網(wǎng)絡(luò)和深度學(xué)習(xí)的基礎(chǔ)知識之后,分析了一個展示各種形式機(jī)器學(xué)習(xí)的更復(fù)雜的示例。
第 9章 建筑設(shè)計(jì)的混合光線 涵蓋了允許用戶將虛擬家具放置在起居室或任何需要位置的 AR設(shè)計(jì)應(yīng)用程序的構(gòu)建。另外,還介紹了如何通過觸摸在 AR中放置和移動對象,以及如何確定對象何時被選中。然后,擴(kuò)展了第 7章 光線估計(jì) 中的光線和陰影,對虛擬對象提供實(shí)時陰影。
第 10章 混合現(xiàn)實(shí)中的混合 在此通過廉價的 MR頭戴式顯示設(shè)備引入了混合現(xiàn)實(shí)。 ARCore非常適用于這些廉價的頭戴式顯示設(shè)備,因?yàn)橐涯軌蚋櫽脩舨⒈O(jiān)視其內(nèi)部環(huán)境。另外,還將分析如何將應(yīng)用程序從傳統(tǒng)的在 Unity平臺下使用 3D WRLD API的地圖繪制程序轉(zhuǎn)換為 AR地圖繪制程序,在此還提供了一種切換到 MR和 MR頭戴式顯示設(shè)備的功能。
第 11章 性能提升技巧和故障排除 這里介紹了在所有開發(fā)平臺上檢測應(yīng)用程序性能的技術(shù),然后討論了性能的重要性及其對各種系統(tǒng)的影響。之后,介紹了一般調(diào)試和故障排除技巧,在此以一個涵蓋了用戶在本書中可能遇到的常見錯誤的列表來結(jié)束本書內(nèi)容。
充分利用本書
為充分利用本書,以下是需要重點(diǎn)關(guān)注的內(nèi)容:
. 讀者需要精通下列一種編程語言: JavaScript、Java或 C#。
. 熟悉高中數(shù)學(xué)知識。
. 支持 ARCore的 Android平臺設(shè)備。下面是檢查列表的鏈接: https//developers.google. com/ar/discover/。
. 一臺運(yùn)行 Android Studio和 Unity平臺的臺式機(jī),不需要專用的 3D顯卡。
下載示例代碼文件
可從 www.packtpub.com的賬戶下載本書的示例代碼文件。如果是在他處購買的本書,可以訪問 www.packtpub.com/support,注冊后直接以文件形式發(fā)送給讀者。
可以通過以下步驟下載代碼文件:
1)在 www.packtpub.com上登錄或注冊。
2)選中
SUPPORT選項(xiàng)卡。
3)單擊
Code Downloads & Errata。
4
)在搜索框輸入圖書名稱,并按照提示進(jìn)行操作。
文件下載完成后,請確保用以下最新版本進(jìn)行解壓縮:
. Windows系統(tǒng)下的 WinRAR/7-Zip。
. Mac系統(tǒng)下的 Zipeg/iZip/UnRarX。
. Linux系統(tǒng)下的 7-Zip/PeaZip。
本書的代碼包還在 GitHub上托管,具體地址為 https://github.com/PacktPublishing/ Learn-ARCore-Fundamentals-of-Google-ARCore。一旦代碼有更新,在現(xiàn)有的 GitHub代碼庫中也會相應(yīng)更新。另外,還可以從 htttps://github.com/PacktPublishing/ 豐富的圖書和視頻目錄中獲得其他代碼包。請注意查看!
下載彩色圖片
本書還提供了一個包含本書中截圖 /圖表的彩色圖片的 PDF文件。
Micheal Lanham是一位經(jīng)驗(yàn)豐富的軟件和技術(shù)創(chuàng)新工程師,有著 20多年的工作經(jīng)驗(yàn)。曾開發(fā)了多種領(lǐng)域的軟件應(yīng)用程序,包括游戲、圖形、Web、桌面、工程、人工智能、GIS和多種行業(yè)的機(jī)器學(xué)習(xí)應(yīng)用。在 2006年接觸 Unity平臺,自此以后一直是這方面的開發(fā)人員、顧問、經(jīng)理和多個 Unity平臺游戲、圖形項(xiàng)目和多本圖書的作者。目前與家人居住在加拿大的卡爾加里。
譯者序
原書前言
第1章 入門 // 1
1.1 沉浸式計(jì)算 //1
1.2 AR和 ARCore //2
1.2.1 運(yùn)動跟蹤 // 3
1.2.2 環(huán)境理解 // 4
1.2.3 光線估計(jì) // 4
1.3 組織結(jié)構(gòu)與安排 //5
1.4 小結(jié) //6
第 2章 Android平臺上的 ARCore //7
2.1 安裝 Android Studio //7
2.2 安裝 ARCore //9
2.2.1 在設(shè)備上安裝 ARCore服務(wù) // 10
2.3 構(gòu)建和部署 //11
2.4 代碼分析 //12
2.5 小結(jié) //14
第 3章 Unity平臺上的 ARCore //15
3.1 安裝 Unity平臺和 ARCore //15
3.2 在 Android平臺上構(gòu)建和部署 //18
3.3 遠(yuǎn)程調(diào)試 //19
3.3.1 連接測試 // 20
3.3.2 遠(yuǎn)程調(diào)試一個正在運(yùn)行的應(yīng)用程序 // 21
3.4 代碼分析 //22
3.4.1 Unity平臺更新方法 // 23
3.5 小結(jié) //24
第 4章 Web平臺上的 ARCore //25
4.1 安裝 WebARonARCore //25
4.2 安裝 Node.js //26
4.2.1 Node軟件包管理器 // 26
4.3 示例分析 //28
4.4 調(diào)試 Android平臺上的 Web平臺應(yīng)用程序 //29
4.4.1 連接 Chrome平臺開發(fā)工具 // 29
4.4.2 通過 Chrome平臺調(diào)試 // 30
4.5 三維和 three.js //31
4.5.1 理解左手或右手坐標(biāo)系 // 33
4.5.2 三維縮放、旋轉(zhuǎn)和平移 // 33
4.6 小結(jié) //34
第 5章 真實(shí)世界中的運(yùn)動跟蹤 //35
5.1 深度運(yùn)動跟蹤 //35
5.2 三維聲音 //38
5.3 共振音頻 //39
5.4 基于 Firebase的跟蹤服務(wù) //42
5.4.1 設(shè)置數(shù)據(jù)庫 // 43
5.4.2 連接測試次數(shù) // 44
5.5 可視化運(yùn)動跟蹤 //45
5.6 練習(xí) //47
5.7 小結(jié) //48
第 6章 環(huán)境理解 //49
6.1 點(diǎn)云跟蹤 //49
6.2 網(wǎng)格化與環(huán)境 //51
6.3 環(huán)境交互 //52
6.3.1 觸摸手勢檢測 // 55
6.4 基于 OpenGL ES的繪制 //56
6.5 著色器編程 //58
6.5.1 著色器編輯 // 61
6.6 練習(xí) //62
6.7 小結(jié) //63
第 7章 光線估計(jì) //64
7.1 三維渲染 //64
7.1.1 構(gòu)建一個測試場景 // 65
7.1.2 材質(zhì)、著色器和紋理 // 67
7.2 三維光線 //69
7.3 光線估計(jì) //71
7.4 Cg/HLSL著色器 //73
7.5 光線方向估計(jì) //76
7.5.1 環(huán)境光線更新 // 79
7.6 練習(xí) //79
7.7 小結(jié) //80
第 8章 環(huán)境認(rèn)知 //81
8.1 機(jī)器學(xué)習(xí)簡介 //81
8.1.1 線性回歸原理 // 83
8.2 深度學(xué)習(xí) //85
8.2.1 神經(jīng)網(wǎng)絡(luò) -深度學(xué)習(xí)基礎(chǔ) // 86
8.3 神經(jīng)網(wǎng)絡(luò)編程實(shí)現(xiàn) //87
8.3.1 神經(jīng)網(wǎng)絡(luò)腳本編程 // 88
8.4 神經(jīng)網(wǎng)絡(luò)訓(xùn)練 //94
8.4.1 激活警告 // 95
8.4.2 添加環(huán)境掃描器 // 98
8.4.3 反向傳播原理 // 99
8.4.4 梯度下降原理 // 101
8.4.5 網(wǎng)絡(luò)架構(gòu)定義 // 103
8.4.6 環(huán)境的網(wǎng)絡(luò)視角 // 105
8.4.7 練習(xí) // 106
8.5 TensorFlow //107
8.6 小結(jié) //108
第 9章 建筑設(shè)計(jì)的混合光線 //110
9.1 工程設(shè)置 //110
9.1.1 場景構(gòu)建 // 112
9.1.2 修改基本場景 // 113
9.2 環(huán)境和放置內(nèi)容 //116
9.3 UI構(gòu)建 //119
9.3.1 按鈕腳本編程 // 122
9.4 虛擬交互 //124
9.4.1 構(gòu)建對象輪廓 // 126
9.4.2 椅子定位 // 129
9.5 光線和陰影 //132
9.5.1 打開陰影 // 135
9.6 練習(xí) //137
9.7 小結(jié) //137
第 10章 混合現(xiàn)實(shí)中的混合 //138
10.1 MR和 HoloKit //139
10.1.1 設(shè)置 HoloKit // 140
10.1.2 HoloKit如何工作 // 142
10.2 WRLD簡介 //144
10.3 設(shè)置 MR中的 WRLD //146
10.4 地圖導(dǎo)航 //147
10.4.1 從 AR切換到 MR //149
10.4.2 構(gòu)建 SceneSwitcher //150
10.4.3 創(chuàng)建 SceneSwitcher預(yù)制件 // 151
10.4.4 修改 Wrld Map腳本 // 153
10.5 地圖構(gòu)建、GIS和 GPS //155
10.5.1 生成 Splash場景 //159
10.5.2 修正高度問題 // 162
10.6 未來發(fā)展 //163
10.7 練習(xí) //164
10.8 小結(jié) //164
第 11章 性能提升技巧和故障排除 //166
11.1 性能診斷 //166
11.1.1 Chrome平臺開發(fā)工具 // 166
11.1.2 Android平臺分析工具 // 168
11.1.3 Unity平臺分析工具 // 170
11.2 性能提升管理技巧 //172
11.3 常見故障排除 //174
11.3.1 故障排除代碼 // 174
11.4 練習(xí) //177
11.5 故障排除技巧 //177
11.6 小結(jié) //178