本書的內(nèi)容主要包括Unity3D編程基礎(chǔ),Unity核心組件介紹,常用插件和第三方SDK的使用簡介及相關(guān)的演示項目,項目都有詳細的代碼和功能介紹,均循序漸進地講解需要使用的工具的基本原理和使用方法,可以讓開發(fā)者在短的時間內(nèi)了解相關(guān)領(lǐng)域的開發(fā)技巧。
增強現(xiàn)實(Augmented Reality,AR),是一種實時的基于攝像影像的位置和角度并加上自定義圖像的技術(shù),這種技術(shù)的目標是在現(xiàn)實的基礎(chǔ)上增加一些定制內(nèi)容以提供個性化的體驗。隨著計算設(shè)備運算速度的提高,AR技術(shù)應(yīng)用的領(lǐng)域會越來越廣,如今已經(jīng)開始涉及醫(yī)療、教育、工業(yè)等。開發(fā)AR應(yīng)用的人也成為市場上非常寶貴的人才資源。
Unity 3D是一款十分主流的游戲引擎,該引擎可以使開發(fā)者輕松地開發(fā)跨平臺游戲和應(yīng)用(支持如今的主流平臺Windows、OS X、iOS、Android、Windows Phone等),設(shè)計精良的松耦合組件模型的引擎架構(gòu)、龐大的開發(fā)者群體和健全的社區(qū)機制使得引擎發(fā)展得十分成熟。該引擎和AR開發(fā)也日漸成為AR應(yīng)用開發(fā)的首選方案,極高的開發(fā)效率和系統(tǒng)的工作流使得開發(fā)AR應(yīng)用相比其他開發(fā)形式有著巨大的優(yōu)勢。
得益于引擎功能的強大和開發(fā)者社區(qū)的健全,AR開發(fā)者可以將自己的全部精力集中在項目的內(nèi)容開發(fā)上。當今AR內(nèi)容依舊不夠豐富,標桿性的產(chǎn)品也尚未嶄露頭角,但隨著各個廠商對該部分的內(nèi)容越來越重視,相信無論是從市場還是技術(shù)方面,AR都迎來了一個臨界點式的突破,對所有的AR開發(fā)者來說,這無疑是最好的機會。
本書的目標讀者主要分為以下兩類。
初學(xué)者初學(xué)者可以通過本書學(xué)習(xí)基本的編程思路和方法,書中沒有長篇大論的理論知識,更多的是從實踐出發(fā),在實際應(yīng)用中了解程序的運行機制、Unity 3D的結(jié)構(gòu)以及使用程序的思維解決實際問題的方法和經(jīng)驗。完成每章的項目部分后,重點在于理解解決方案的思路。每章都會拋磚引玉地介紹一些計算機的其他領(lǐng)域,有興趣的讀者可以去保存更多感興趣的領(lǐng)域,來豐富自己的理論知識。當實踐能力變得熟練時,理論知識才是限制個人能力最大的障礙。希望初學(xué)者可以通過本書先培養(yǎng)對編程領(lǐng)域的興趣,然后再進一步提高自己感興趣的具體方向的能力。
有經(jīng)驗的程序開發(fā)者有經(jīng)驗的開發(fā)者可以將本書作為一本熟悉SDK操作的參考書閱讀。本書包含Unity和相關(guān)SDK的原理介紹,可以讓有經(jīng)驗的開發(fā)者在最短的時間內(nèi)了解開發(fā)相關(guān)內(nèi)容的方法,提高工作效率和產(chǎn)出。
本書的內(nèi)容主要包括Unity 3D編程基礎(chǔ)、Unity核心組件介紹、常用插件和第三方SDK的使用簡介及相關(guān)的演示項目,項目都有詳細的代碼和功能介紹,循序漸進地講解需要使用的工具的基本原理和使用方法,可以讓開發(fā)者在最短的時間內(nèi)了解相關(guān)領(lǐng)域的開發(fā)技巧。希望通過這些項目可以為想要學(xué)習(xí)AR開發(fā)的讀者提供學(xué)習(xí)的方向,幫助他們了解實際應(yīng)用開發(fā)時需要考慮的問題以及一些實用的技巧。書中還會涉及一些網(wǎng)絡(luò)的開發(fā),有興趣的讀者可以以示例項目作為引導(dǎo)更深入和具體地學(xué)習(xí)網(wǎng)絡(luò)開發(fā)的知識和技巧。
目錄
前言
第1章Unity 3D AR應(yīng)用開發(fā)基礎(chǔ)1
1.1 Unity 3D引擎簡介1
1.1.1Unity 3D的下載與安裝1
1.1.2Unity 3D操作界面簡介6
1.1.3Unity 3D的基礎(chǔ)組件與操作7
1.1.4Unity 3D的資源商店14
1.2Unity 3D編程基礎(chǔ)14
1.2.1C#編程基礎(chǔ)14
1.2.2C#面向?qū)ο缶幊袒A(chǔ)24
1.2.3C#面向?qū)ο缶幊踢M階26
1.2.4Unity 3D中的C#腳本30
1.3Unity 3D編程進階32
1.3.1Unity 3D的設(shè)計模式32
1.3.2MonoBehavior的生命周期33
1.3.3控制GameObject的位置37
1.3.4控制GameObject的生成和銷毀40
1.3.5處理Unity 3D中的物體碰撞43
1.3.6UI組件的使用45
1.4AR中常用的Unity 3D插件49
1.4.1視頻播放插件:Easy Movie Texture50
1.4.2動畫控制插件:iTween53
1.4.3手勢控制插件:Easy Touch57
第2章使用Vuforia開發(fā)AR應(yīng)用60
2.1Vuforia SDK簡介60
2.1.1Vuforia SDK的下載與安裝60
2.1.2創(chuàng)建App License Key62
2.1.3在SDK中輸入App License Key63
2.2使用Vuforia SDK進行物體識別64
2.2.1圖片識別64
2.2.2長方體識別70
2.2.3圓柱體識別73
2.2.4物體識別76
2.3使用Vuforia SDK制作AR視頻80
2.3.1上傳識別圖80
2.3.2創(chuàng)建識別視頻播放GameObject80
2.3.3創(chuàng)建識別圖目標83
2.3.4編譯運行程序85
2.4制作AR對戰(zhàn)游戲87
2.4.1制作識別圖87
2.4.2創(chuàng)建子彈87
2.4.3 創(chuàng)建玩家角色90
2.4.4創(chuàng)建敵人102
2.4.5將玩家和角色設(shè)定為Image Target104
第3章AR應(yīng)用中的拓展功能實現(xiàn)110
3.1在Unity 3D中實現(xiàn)網(wǎng)絡(luò)通信110
3.1.1計算機網(wǎng)絡(luò)簡介110
3.1.2搭建一個HTTP服務(wù)器111
3.1.3使用WWW從HTTP服務(wù)器獲取圖片112
3.2在Unity 3D中獲取天氣信息115
3.2.1通過網(wǎng)絡(luò)API獲取天氣數(shù)據(jù)115
3.2.2使用GZipStream解壓縮字符數(shù)組116
3.2.3在Unity中反序列化JSON數(shù)據(jù)117
3.3在Unity 3D中獲取GPS信息119
3.3.1LocationService類119
3.3.2構(gòu)建場景和UI處理邏輯119
3.3.3獲取GPS數(shù)據(jù)120
3.3.4通過地理位置獲取城市123
3.4在Unity中實現(xiàn)二維碼的生成與識別126
3.4.1QR CodeBarcode Scanner and Generator簡介126
3.4.2搭建工程場景127
3.4.2掃描二維碼128
3.4.3生成二維碼130
3.5在Unity 3D中實現(xiàn)動態(tài)資源加載132
3.5.1AssetBundle簡介132
3.5.2如何創(chuàng)建AssetBundle132
3.5.3如何加載AssetBundle 134
3.5.4AssetBundle之間的依賴關(guān)系135
3.6在Unity 3D中實現(xiàn)熱更新141
3.6.1熱更新方案比較141
3.6.2XLua簡介142
3.6.3如何使用XLua更新142
第4章使用OpenCV開發(fā)圖像識別應(yīng)用145
4.1OpenCV圖像識別簡介145
4.1.1OpenCV圖像識別技術(shù)應(yīng)用領(lǐng)域145
4.1.2OpenCV技術(shù)模塊簡介145
4.1.3OpenCV For Unity插件介紹147
4.2配置基礎(chǔ)開發(fā)環(huán)境148
4.2.1開發(fā)環(huán)境要求148
4.2.2導(dǎo)入OpenCV For Unity插件包148
4.2.3配置OpenCV For Unity插件149
4.2.4運行OpenCV For Unity示例工程149
4.3面部識別152
4.3.1FaceTrackerSample擴展插件簡介152
4.3.2場景搭建152
4.3.3編寫面部識別腳本155
第5章使用ARToolkit進行AR開發(fā)160
5.1ARToolKit簡介160
5.1.1ARToolKit是什么160
5.1.2ARToolKit特性簡介161
5.1.3ARToolKit插件包導(dǎo)入161
5.1.4ARToolKit中的目錄簡介163
5.2搭建一個簡單的AR場景163
5.2.1創(chuàng)建并設(shè)置AR Controller163
5.2.2創(chuàng)建并設(shè)置ARMarker165
5.2.3創(chuàng)建并設(shè)置AR Origin和AR Tracked Object165
5.2.4創(chuàng)建并設(shè)置ARCamera166
5.2.5運行場景168
5.3ARToolKit中的識別圖簡介168
5.3.1傳統(tǒng)模板正方形識別圖168
5.3.22D-Barcode識別圖173
5.3.3多重識別圖175
5.3.4特征點識別圖177
5.4ARToolKit的進階內(nèi)容178
5.4.1AR Controller的運行機制178
5.4.2ARToolKit中性能問題的調(diào)查178
5.4.3ARToolKit的使用限制179
5.5跨平臺開發(fā)的注意事項180
5.5.1插件已知問題180
5.5.2Android180
5.5.3iOS182
第6章Kinect應(yīng)用開發(fā)183
6.1Kinect簡介183
6.1.1Kinect是什么183
6.1.2Kinect功能特性簡介183
6.2搭建Kinect的Unity 3D開發(fā)環(huán)境184
6.2.1硬件需求184
6.2.2安裝DirectX185
6.2.3安裝Kinect SDK186
6.2.4安裝Kinect Unity插件188
6.3使用Kinect制作體感游戲190
6.3.1創(chuàng)建Kinect Manager190
6.3.2導(dǎo)入人物3D模型并創(chuàng)建Avatar190
6.3.3創(chuàng)建人物192
6.3.4創(chuàng)建敵人194
6.3.5為人物添加攻擊處理197
6.3.6添加UI顯示199
第7章HoloLens202
7.1HoloLens簡介202
7.1.1Hologram簡介204
7.1.2HoloLens硬件細節(jié)205
7.1.3HoloLens shell207
7.1.4使用MRC209
7.1.5HoloLens配件使用210
7.2HoloLens使用與開發(fā)環(huán)境配置210
7.2.1使用Windows Device Portal210
7.2.2安裝HoloLens開發(fā)工具213
7.2.3HoloLens模擬器的使用213
7.3使用Unity開發(fā)HoloLens全息應(yīng)用215
7.3.1配置適用于HoloLens開發(fā)的Unity工程215
7.3.2攝像機(Camera)設(shè)置219
7.3.3凝視(Gaze)功能實現(xiàn)220
7.3.4手勢(Gesture)功能實現(xiàn)222
7.3.5語音輸入(Voice input)功能實現(xiàn)225
7.3.6世界錨(World Anchor)與場景保持(Persistence)功能實現(xiàn)229
7.3.7空間音效(Spatial Sound)功能實現(xiàn)234
7.3.8空間映射(Spatial Mapping)功能實現(xiàn)235