Unity 虛擬現實開發實戰 (原書第2版)

Jonathan Linowes

買這商品的人也買了...

商品描述

本書通過基於項目的實踐方式,詳細講解如何使用Unity 3D游戲引擎進行虛擬現實開發。通過一系列實踐項目,循序漸進地闡釋Unity虛擬現實項目開發的基本原則和技巧。不僅提供詳細的步驟介紹,還會討論其中涵蓋的更廣泛的背景和應用場景。
首先,你將學習如何使用Unity來開發可以用Oculus Rift、Google Daydream、HTC Vive等設備進行體驗的VR應用程序。然後,你將學習如何從第三人稱和第一人稱的視角融入虛擬世界。另外,你將探索一些對於VR來說重要且可能獨一無二的技術關註點。讀完本書後,你將能夠用Unity開發豐富的交互式虛擬現實體驗程序。
本書通過具體示例由淺入深逐步引導你瞭解並深入虛擬現實技術,在第1版的基礎上,更新了使用的Unity版本,並對各個章節和項目做了大量的修改,使得本書更加具體並易於閱讀。無論是初接觸編程並想學習虛擬現實技術的新手,還是具有豐富編程經驗,想要進入虛擬現實領域的程序員,本書都很適合你。

Unity已經成為新一代消費級VR設備構建虛擬游戲、虛擬應用和虛擬體驗的主流平臺。
本書將帶你進行一系列實戰,並深入討論如何使用Unity游戲引擎開發VR應用程序。本書通過基於項目的實踐方法,幫助你快速瞭解使用Unity進行VR開發的具體細節。通過Oculus、Daydream與Vive等設備的體驗,你將學習如何使用Unity開發VR應用程序,探索基於凝視與手柄控制器的輸入、世界坐標系UI畫布、移動與傳送、軟件設計模式、360°多媒體、時間軸動畫與多人網絡等眾多的主題或項目,還將通過交互式Unity編輯器(Editor)瞭解Unity 3D游戲引擎,並學習C#編程。

通過閱讀本書,你將學到:
使用Unity和其他3D工具創建3D場景。
為特定的頭戴式顯示器(包括Oculus、Vive與Daydream)創建並運行VR應用程序。
基於凝視、手柄控制器以及用戶輸入事件與虛擬對象進行交互。
通過移動與傳送漫游VR場景。
使用物理與粒子系統實現音頻火球游戲。
基於傳送與數據信息實現藝術畫廊。
使用音軌與時間軸設計並創建VR故事動畫。
使用Unity網絡創建社交VR體驗。

作者簡介

Jonathan Linowes

創立了Parkerhill Reality Labs(一個沉浸式媒體獨立工作室),是BridgeXR工具包、
Power Solitaire VR遊戲以及即將到來的Chess Or Die遊戲的開發者。
他是VR/AR的傳播者、Unity開發者、企業家和教師。
他擁有美國雪城大學(Syracuse University)的藝術學士學位和麻省理工學院媒體實驗室(MIT Media Lab)的碩士學位。
他曾在Autodesk公司和其他公司擔任技術領導職務。他撰寫了《Unity Virtual Reality Projects 》(2015年□□版)
《Cardboard VR Projects for Android 》(2016) 和 《Augmented Reality for Developers 》(2017)。

目錄大綱

譯者序
前言
審閱者簡介
□□章 萬物皆可虛擬 1
1.1 虛擬現實對你來說意味著什麼 2
1.2 頭戴式顯示器的類型 3
1.2.1 桌面VR 3
1.2.2 移動VR 3
1.3 虛擬現實與增強現實的區別 4
1.4 應用與遊戲 5
1.5 虛擬現實是如何運作的 7
1.5.1 立體3 D視圖 7
1.5.2 頭姿追踪 9
1.6 VR體驗類型 10
1.7 VR必備技能 11
1.8 本書涵蓋的內容 12
1.9 本章小結 12
第2章 內容、物體和縮放比例 14
2.1 Unity入門 14
2.1.1 新建Unity項目 15
2.1.2 Unity編輯器 15
2.1.3 默認世界坐標系 16
2.2 創建簡單的透視圖 17
2.2.1 添加立方體 18
2.2.2 添加平面 18
2.2.3 添加球體和材質 19
2.2.4 改變場景視圖 21
2.2.5 添加照片 22
2.2.6 給地平面著色 23
2.3 測量工具 24
2.3.1 隨手保留一個單位立方體 24
2.3.2 使用網格投影器 24
2.3.3 測量Ethan角色 25
2.4 使用第三方內容 27
2.5 使用Blender創建3D內容 29
2.5.1 Blender簡介 29
2.5.2 單位立方體 31
2.5.3 UV紋理圖片 32
2.5.4 導入Unity 34
2.5.5 一些觀察 35
2.6 在VR中創建3D內容 35
2.6.1 導入和導出Tilt Brush模型 37
2.6.2 使用Google Poly進行發布和導入 38
2.7 在VR中使用EditorXR編輯Unity 39
2.7.1 設置EditorXR 40
2.7.2 使用EditorXR 41
2.8 本章小結 43
第3章 VR的構建和運行 44
3.1 Unity VR支持和工具包 44
3.1.1 Unity的內置VR支持 45
3.1.2 特定於設備的工具包 46
3.1.3 應用程序工具包 47
3.1.4 基於Web和的VR 47
3.1.5 3D世界 48
3.2 為你的平台啟用虛擬現實 48
3.2.1 設置目標平台 49
3.2.2 設置XR SDK 50
3.2.3 安裝設備工具包 50
3.2.4 創建MeMyselfEye播放器預製件 50
3.3 構建SteamVR 52
3.4 構建Oculus Rift 53
3.5 構建Windows沉浸式MR 55
3.5.1 設置Windows 10開發人員模式 56
3.5.2 在Visual Studio中安裝UWP支持 56
3.5.3 UWP構建 57
3.6 為Android設備設置 58
3.6.1 安裝Java開發工具包 59
3.6.2 安裝Android SDK 59
3.6.3 使用命令行工具 60
3.6.4 關於Android SDK根路徑位置 61
3.6.5 安裝USB設備調試和連接 61
3.6.6 配置Unity外部工具 62
3.6.7 為Android配置Unity Player Settings 63
3.7 為GearVR和Oculus Go構建 63
3.8 為Google VR構建 64
3.8.1 Google Daydream 64
3.8.2 Google Cardboard 65
3.8.3 Google VR運行模式 66
3.9 為iOS設備設置 67
3.9.1 擁有Apple ID 67
3.9.2 安裝Xcode 67
3.9.3 配置iOS的Unity Player Settings 68
3.9.4 構建和運行 68
3.10 本章小結 69
第4章 基於凝視的操控 70
4.1 遊走者Ethan 70
4.1.1 人工智能Ethan 71
4.1.2 NavMesh烘焙 72
4.1.3 鎮上的隨機遊走者 74
4.1.4 RandomPosition腳本 74
4.1.5 “殭屍”Ethan 76
4.2 向我看的方向行走 77
4.2.1 LookMoveTo腳本 77
4.2.2 添加反饋光標 79
4.2.3 穿透對象觀察 80
4.3 如果眼神可以殺人 81
4.3.1 KillTarget腳本 81
4.3.2 添加粒子效果 83
4.3.3 清理工作 84
4.4 Unity C#編程簡介 84
4.5 本章小結 86
第5章 便捷的交互工具 87
5.1 設置場景 88
5.1.1 創建氣球 88
5.1.2 使之成為預製件 88
5.2 基本按鈕輸入 90
5.2.1 使用Fire1按鈕 90
5.2.2 OpenVR的扳機鍵 92
5.2.3 用Daydream控制器單擊 93
5.3 輪詢單擊 93
5.3.1 按鈕界面功能 94
5.3.2 創建並釋放氣球 95
5.3.3 按住按鈕給氣球充氣 96
5.4 使用腳本化對象進行輸入 98
5.4.1 創建腳本化對象 99
5.4.2 填充輸入操作對象 100
5.4.3 訪問輸入操作對象 101
5.4.4 使用腳本化對象進行模擬測試 101
5.5 使用Unity事件處理輸入 102
5.5.1 調用輸入操作事件 103
5.5.2 訂閱輸入事件 103
5.6 使用雙手 105
5.6.1 將氣球設為手柄的子對象 105
5.6.2 讓氣球爆炸 107
5.7 交互項目 108
5.7.1 使用SteamVR交互系統進行交互 109
5.7.2 使用Daydream VR Elements進行交互 110
5.8 本章小結 112
第6章 世界坐標系UI 113
6.1 學習VR設計原則 114
6.2 可重用的默認畫布 116
6.3 護目鏡HUD 118
6.4 十字光標 120
6.5 擋風玻璃HUD 122
6.6 遊戲元素UI 124
6.7 使用文字特效插件TextMeshPro 125
6.8 信息框 126
6.9 響應輸入事件的遊戲內儀表板 129
6.9.1 創建帶有按鈕的儀表板 129
6.9.2 連接水管與按鈕 131
6.9.3 用腳本激活按鈕 132
6.9.4 用注視高亮顯示按鈕 133
6.9.5 注視並單擊選擇 135
6.9.6 注視並聚焦選擇 136
6.10 使用VR組件指向並單擊 136
6.10.1 使用Unity UI和SteamVR 137
6.10.2 使用Unity UI和Daydream 139
6.11 構建基於手腕的菜單欄 139
6.12 本章小結 140
第7章 移動與舒適 141