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