Unity 2017虛擬現(xiàn)實(shí)開(kāi)發(fā)標(biāo)準(zhǔn)教程
Unity是一款虛擬現(xiàn)實(shí)開(kāi)發(fā)軟件,功能強(qiáng)大,操作簡(jiǎn)單,界面友好。使用Unity可以輕松實(shí)現(xiàn)各種虛擬現(xiàn)實(shí)素材的整合,如材質(zhì)、UI、光照、模型、貼圖、動(dòng)畫(huà)特效、音頻等,結(jié)合Unity完美的引擎和友好的程序開(kāi)發(fā)平臺(tái),可以很容易制作出適合各種平臺(tái)發(fā)布的虛擬現(xiàn)實(shí)應(yīng)用產(chǎn)品。本書(shū)共設(shè)計(jì)了20 章內(nèi)容,包含虛擬現(xiàn)實(shí)基礎(chǔ)知識(shí)、Unity 軟件編輯器基礎(chǔ)知識(shí)、材質(zhì)技術(shù)、UI技術(shù)、光照技術(shù)、動(dòng)畫(huà)/電影內(nèi)容創(chuàng)作技術(shù)、濾鏡效果技術(shù)、音頻技術(shù)、主流硬件平臺(tái)設(shè)備介紹,以及Unity虛擬現(xiàn)實(shí)開(kāi)發(fā)參考案例、開(kāi)發(fā)流程、注意原則、官方項(xiàng)目學(xué)習(xí)示例、全景視頻技術(shù)和在各硬件平臺(tái)上的開(kāi)發(fā)示范案例和項(xiàng)目性能優(yōu)化等。在本書(shū)的第20章還剖析了一個(gè)目前使用較廣的地產(chǎn)室內(nèi)項(xiàng)目,以便讀者能綜合書(shū)中所學(xué)知識(shí),實(shí)際應(yīng)用在具體項(xiàng)目中。
這是一本專(zhuān)為虛擬現(xiàn)實(shí)開(kāi)發(fā)初中級(jí)讀者打造的教程,也是經(jīng)Unity公司審定的官方教程。
《Unity 2017虛擬現(xiàn)實(shí)開(kāi)發(fā)標(biāo)準(zhǔn)教程》作者邵偉是Unity官方認(rèn)證的優(yōu)秀老師,不論是項(xiàng)目開(kāi)發(fā)還是虛擬現(xiàn)實(shí)教學(xué),經(jīng)驗(yàn)都非常豐富,書(shū)中案例的講解和開(kāi)發(fā)思路的介紹深入淺出,不論是初級(jí)學(xué)習(xí)者還是有一定經(jīng)驗(yàn)的Unity用戶,都能學(xué)到有益的知識(shí)。
另外,為了讓讀者學(xué)習(xí)更加有效,特單獨(dú)提供了本書(shū)案例資源。讀者可以掃描封面勒口出的二維碼,按照說(shuō)明步驟進(jìn)行下載。
邵偉,淄博木子信息科技有限公司創(chuàng)始人,淄博文正軟件科技有限公司聯(lián)合創(chuàng)始人兼技術(shù)總監(jiān),蠻牛教育認(rèn)證VR技術(shù)講師。參與國(guó)家電網(wǎng)基于全息投影交互技術(shù)實(shí)訓(xùn)平臺(tái)、國(guó)網(wǎng)技術(shù)學(xué)院配網(wǎng)三維仿真培訓(xùn)系統(tǒng)、國(guó)家電網(wǎng)李家站3D操作演示程序、HTC VIVE房產(chǎn)項(xiàng)目實(shí)戰(zhàn)教程、VR瓷磚展廳等多個(gè)項(xiàng)目的開(kāi)發(fā),經(jīng)驗(yàn)豐富。
第1章 虛擬現(xiàn)實(shí)基礎(chǔ)知識(shí)
1.1 什么是虛擬現(xiàn)實(shí) 2
1.2 虛擬現(xiàn)實(shí)的發(fā)展歷史 2
1.3 虛擬現(xiàn)實(shí)的現(xiàn)狀 3
1.4 虛擬現(xiàn)實(shí)的未來(lái) 4
1.5 虛擬現(xiàn)實(shí)技術(shù)基礎(chǔ)知識(shí) 4
1.5.1 虛擬現(xiàn)實(shí)技術(shù)原理 4
1.5.2 虛擬現(xiàn)實(shí)常見(jiàn)術(shù)語(yǔ) 5
1.5.3 體驗(yàn)虛擬現(xiàn)實(shí)過(guò)程中會(huì)遇到的挑戰(zhàn) 5
1.5.4 虛擬現(xiàn)實(shí)(VR)與增強(qiáng)現(xiàn)實(shí)(AR)的區(qū)別 6
第2章 Unity編輯器基礎(chǔ)知識(shí)
2.1 Unity產(chǎn)品介紹 8
2.1.1 Unity簡(jiǎn)介 8
2.1.2 獲取Unity 9
2.2 Unity 編輯器學(xué)習(xí)頁(yè) 12
2.3 視圖 15
2.3.1 項(xiàng)目(Project)面板 15
2.3.2 場(chǎng)景(Scene)面板 16
2.3.3 游戲(Game)面板 16
2.3.4 屬性(Inspector)面板 17
2.3.5 層級(jí)(Hierarchy)面板 17
2.4 Unity開(kāi)發(fā)的常用工具 17
2.4.1 Visual Studio 18
2.4.2 Visual Studio Code 20
2.4.3 Git 22
2.4.4 Unity Collaborate 23
2.5 Unity 腳本基礎(chǔ) 26
2.5.1 概述 26
2.5.2 Unity 事件函數(shù)執(zhí)行順序 26
2.5.3 Unity 事件系統(tǒng) 29
第3章 Unity在 VR 中的材質(zhì)技術(shù)
3.1 基于物理的渲染理論(PBR) 32
3.1.1 PBR / PBS 概述 33
3.1.2 PBR 主要貼圖類(lèi)型 34
3.2 Unity 材質(zhì)基礎(chǔ)知識(shí) 36
3.2.1 概述 36
3.2.2 Standard Shader 36
3.3 使用 PBR 材質(zhì)的環(huán)境設(shè)置 38
3.3.1 色彩空間(Color Space):Linear 與 Gamma 38
3.3.2 開(kāi)啟攝像機(jī)HDR模式 39
3.4 Look Dev 和 PBR Material Validator 工具 39
3.4.1 Look Dev 39
3.4.2 PBR Material Validator 41
第4章 Unity 在 VR 中的 UI 技術(shù)
4.1 UGUI 系統(tǒng)簡(jiǎn)介 43
4.2 VR 中的 UI 46
4.2.1 World Space UI 46
4.2.2 VR 中的 UI 交互 48
第5章 Unity 在 VR 中的光照技術(shù)
5.1 Unity 2017 的光照系統(tǒng)概述 50
5.2 主要光照管理工具 50
5.2.1 Lighting 面板 50
5.2.2 Light Explorer 51
5.3 全局照明(Global Illumination ) 51
5.4 光照模式(Lighting Modes) 52
5.4.1 實(shí)時(shí)模式和實(shí)時(shí)全局照明 53
5.4.2 混合模式和混合照明(Mixed Lighting) 54
5.4.3 Baked 模式和烘焙光照貼圖(Baked Lightmaps) 55
5.5 光照探頭(Light Probes) 58
5.6 VR 中的全局照明策略 59
5.7 The Lab Renderer 簡(jiǎn)介 60
5.7.1 來(lái)自The Lab 的渲染器 60
5.7.2 The Lab Renderer 應(yīng)用步驟 60
第6章 動(dòng)畫(huà)/電影內(nèi)容創(chuàng)作技術(shù):Timeline
6.1 Timeline簡(jiǎn)介 63
6.2 Timeline Asset 與 Timeline Instance 64
6.3 Timeline編輯器窗口 64
6.3.1 預(yù)覽和選擇Timeline 65
6.3.2 播放控制 66
6.3.3 軌道列表(Track List) 67
6.4 錄制動(dòng)畫(huà)片段 68
6.4.1 錄制 68
6.4.2 轉(zhuǎn)換為動(dòng)畫(huà)片段 69
6.4.3 使用曲線視圖 70
6.5 使用現(xiàn)存動(dòng)畫(huà)片段 71
6.6 Playable Director組件 71
6.6.1 Playable Director 簡(jiǎn)介 71
6.6.2 通過(guò)腳本控制Timeline 72
6.7 實(shí)例制作 72
6.7.1 為紅色坦克制作動(dòng)畫(huà) 73
6.7.2 為綠色坦克制作動(dòng)畫(huà) 74
6.7.3 使用腳本實(shí)現(xiàn)動(dòng)畫(huà)邏輯 75
第7章 濾鏡效果技術(shù)集合:Post Processing Stack
7.1 概述 78
7.2 在項(xiàng)目中應(yīng)用 Post Processing Stack 79
7.3 在 VR 中可用的 Post-Processing Stack 80
7.3.1 Anti-aliasing(抗鋸齒) 80
7.3.2 Ambient Occlusion(環(huán)境光遮蔽) 81
7.3.3 Depth of Field(景深) 81
7.3.4 Eye Adaptation(人眼調(diào)節(jié)/自動(dòng)曝光) 81
7.3.5 Bloom(泛光) 82
7.3.6 Color Grading(顏色分級(jí)) 83
7.3.7 Chromatic Aberration(色差) 83
7.3.8 Grain (膠片顆粒) 84
7.3.9 Vignette(暈影) 84
7.3.10 User LUT (用戶自定義 LUT) 85
第8章 Unity 在 VR 中的音頻技術(shù)
8.1 概述 87
8.2 Unity Audio 基本元素 87
8.3 在 Unity 中使用空間音頻 89
8.4 環(huán)繞立體聲音頻 89
8.5 VR 空間化音頻開(kāi)發(fā)工具 90
8.5.1 Google Resonance Audio 90
8.5.2 Oculus Spatializer Unity 91
第9章 主流 VR 硬件平臺(tái)設(shè)備介紹
9.1 概述 94
9.2 HTC VIVE 94
9.3 Oculus Rift 95
9.4 PS VR 95
9.5 Windows Mixed Reality 96
9.6 Gear VR 96
9.7 Cardboard 97
9.8 Daydream 97
9.9 Oculus Go 和小米 VR 一體機(jī) 98
9.10 Unity 2017 對(duì) VR 硬件平臺(tái)的支持 99
第10章 用Unity 制作的 VR 參考案例
10.1 The Lab 101
10.2 Tilt Brush 101
10.3 Blocks 101
10.4 Job Simulator 102
第11章 用Unity 制作 VR 內(nèi)容的工作流程
11.1 概述 104
11.2 資源準(zhǔn)備 104
11.3 將資源導(dǎo)入U(xiǎn)nity 106
11.4 場(chǎng)景構(gòu)建 108
11.5 在 Unity 中啟用 VR 支持 109
11.6 導(dǎo)入VR開(kāi)發(fā)工具包 110
11.7 交互開(kāi)發(fā) 110
11.8 測(cè)試及優(yōu)化 110
11.9 導(dǎo)出項(xiàng)目 111
第12章 VR 交互設(shè)計(jì)需要注意的原則
12.1 聲音相關(guān) 113
12.2 移動(dòng)相關(guān) 113
12.3 互動(dòng)相關(guān) 115
12.4 控制器相關(guān) 116
12.5 環(huán)境相關(guān) 117
12.6 UI相關(guān) 118
12.7 用戶定位和位置追蹤相關(guān) 118
第13章 示例項(xiàng)目學(xué)習(xí):VR Samples解析
13.1 概述 120
13.2 交互的實(shí)現(xiàn) 120
13.3 VR中的UI 126
13.4 交互體驗(yàn):基于時(shí)間進(jìn)度的點(diǎn)擊 127
13.5 交互體驗(yàn):在VR場(chǎng)景中引導(dǎo)用戶視線 129
13.6 交互體驗(yàn):切換場(chǎng)景時(shí)的黑屏效果 130
第14章 Unity 中的全景視頻技術(shù)
14.1 全景視頻 134
全景視頻的制作方式 134
14.2 Video Player組件 135
14.3 實(shí)例:在 VR 中觀看全景視屏 136
14.3.1 在場(chǎng)景中播放全景視頻 136
14.3.2 在 VR 中觀看全景視頻 138
14.3.3 添加 CG 內(nèi)容 138
第15章 HTC VIVE開(kāi)發(fā)
15.1 HTC VIVE硬件介紹 141
15.1.1 頭顯硬件規(guī)格 142
15.1.2 VIVE實(shí)現(xiàn)跟蹤的原理 142
15.1.3 控制器按鍵介紹 143
15.1.4 HTC VIVE 開(kāi)發(fā)推薦 PC 規(guī)格 144
15.2 OpenVR 145
15.3 SteamVR 145
15.3.1 安裝SteamVR 145
15.3.2 SteamVR Unity Plugin 146
15.3.3 鍵值映射及獲取按鍵輸入 151
15.3.4 使用SteamVR Plugin實(shí)現(xiàn)與物體交互 152
15.3.5 SteamVR交互系統(tǒng)——Interaction System 156
15.4 VRTK使用指南 174
15.4.1 VRTK插件簡(jiǎn)介 174
15.4.2 獲取VRTK 176
15.4.3 VRTK的配置 177
15.4.4 VRTK中的指針 181
15.4.5 VRTK中的傳送 184
15.4.6 使用VRTK實(shí)現(xiàn)與物體的交互 192
15.4.7 VRTK中的高亮和振動(dòng) 202
15.4.8 VRTK中與UI的交互 205
15.4.9 實(shí)例:實(shí)現(xiàn)攀爬功能 209
15.4.10 實(shí)例:實(shí)現(xiàn)開(kāi)關(guān)門(mén)操作 210
15.4.11 頭顯穿透模型的用戶體驗(yàn)優(yōu)化 213
第16章 Gear VR開(kāi)發(fā)
16.1 Gear VR硬件環(huán)境準(zhǔn)備 216
Gear VR 手柄控制器介紹 216
16.2 Gear VR開(kāi)發(fā)環(huán)境配置 217
16.2.1 軟件準(zhǔn)備 217
16.2.2 Unity編輯器設(shè)置 221
16.2.3 Oculus Utilities for Unity 223
16.3 Gear VR的輸入 225
16.3.1 手柄輸入 225
16.3.2 頭顯輸入 226
16.4 第一個(gè) Gear VR 應(yīng)用 227
16.4.1 概述 227
16.4.2 初始化項(xiàng)目 227
16.4.3 構(gòu)建場(chǎng)景 228
16.4.4 控制物體移動(dòng) 230
16.4.5 發(fā)布Gear VR項(xiàng)目 231
16.5 Gear VR 開(kāi)發(fā)優(yōu)化原則 231
第17章 Cardboard開(kāi)發(fā)
17.1 Cardboard硬件準(zhǔn)備 233
17.2 Cardboard開(kāi)發(fā)環(huán)境配置 233
17.2.1 設(shè)置 Player Settings 參數(shù) 233
17.2.2 下載并導(dǎo)入Google VR SDK for Unity 234
17.2.3 在Unity編輯器中預(yù)覽應(yīng)用程序 234
17.3 第一個(gè)Cardboard應(yīng)用 235
第18章 VR社交
18.1 Unity 網(wǎng)絡(luò)引擎 243
18.1.1 概述 243
18.1.2 High Level API 243
18.1.3 Unity Multiplayer服務(wù) 243
18.1.4 HLAPI 組件 244
18.2 多人聯(lián)網(wǎng)VR開(kāi)發(fā)(基于Cardboard平臺(tái)) 248
18.2.1 概述 248
18.2.2 初始化環(huán)境 248
18.2.3 添加網(wǎng)絡(luò)管理組件 249
18.2.4 制作玩家預(yù)制體并注冊(cè) 250
18.2.5 自定義網(wǎng)絡(luò)連接邏輯 251
18.2.6 處理用戶輸入 253
18.2.7 同步用戶狀態(tài) 254
18.2.8 使用百度語(yǔ)音接口實(shí)現(xiàn)語(yǔ)音轉(zhuǎn)文字功能 255
第19章 VR 項(xiàng)目性能優(yōu)化
19.1 VR 性能優(yōu)化最佳實(shí)踐 264
19.1.1 概述 264
19.1.2 Unity VR 性能優(yōu)化建議 264
19.1.3 Unity VR 性能優(yōu)化技術(shù) 267
19.2 Unity性能分析工具 272
19.2.1 Profiler 272
19.2.2 Frame Debugger 275
19.2.3 Memory Profiler 276
19.3 其他 VR 硬件平臺(tái)調(diào)試工具 277
第20章 綜合項(xiàng)目分析——以地產(chǎn)室內(nèi)項(xiàng)目為例
20.1 項(xiàng)目簡(jiǎn)介 280
20.2 初始化VR場(chǎng)景設(shè)置 280
20.3 添加按鍵提示 281
20.4 顯示家具提示信息 282
20.5 查看戶型圖 283
20.6 切換家具 286
20.7 切換地面材質(zhì) 288