Unity虛擬現實開發實戰(原書第2版)( 簡體 字) | |
作者:[美] 喬納森·林諾維斯(Jonathan Linowes) 著 | 類別:1. -> 多媒體 -> 遊戲引擎 -> Unity |
出版社:機械工業出版社 | 3dWoo書號: 52635 詢問書籍請說出此書號! 有庫存 NT售價: 495 元 |
出版日:4/1/2020 | |
頁數:318 | |
光碟數:0 | |
站長推薦: | |
印刷:黑白印刷 | 語系: ( 簡體 字 ) |
ISBN:9787111650836 | 加入購物車 │加到我的最愛 (請先登入會員) |
(簡體書上所述之下載連結耗時費功, 恕不適用在台灣, 若讀者需要請自行嘗試, 恕不保證, 繁體書的下載亦請直接連絡出版社) | |
譯者序
前言 審閱者簡介 第1章 萬物皆可虛擬 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和JavaScript的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 7.1 理解Unity角色 141 7.1.1 Unity組件 142 7.1.2 Unity的Standard Assets 143 7.2 使用滑行移動 145 7.2.1 沿視線方向移動 145 7.2.2 保持腳著地 146 7.2.3 不要穿透固體對象 147 7.2.4 不要在邊緣墜落 149 7.2.5 跨越小物體并處理崎嶇路面 149 7.2.6 開始與停止移動 150 7.3 添加舒適模式移動 150 7.4 傳送技術 153 7.4.1 凝視傳送 153 7.4.2 在表面之間傳送 155 7.4.3 傳送生成點 157 7.4.4 其他傳送考慮因素 160 7.5 傳送工具包 161 7.5.1 使用SteamVR交互系統傳送 161 7.5.2 使用Daydream Elements傳送 162 7.6 重置中心和位置 163 7.7 對付VR暈動癥 164 7.8 本章小結 166 第8章 使用物理引擎 167 8.1 Unity的物理組件 167 8.2 彈力球 169 8.3 管理游戲對象 171 8.3.1 銷毀墜落的對象 172 8.3.2 設置持續時間 172 8.3.3 實現一個對象池 172 8.4 用頭部射擊游戲 176 8.5 球拍游戲 180 8.6 射手游戲 182 8.7 完善場景 185 8.7.1 創建大火球 186 8.7.2 Skull環境 188 8.7.3 音頻同步 190 8.8 本章小結 191 第9章 漫游和渲染 192 9.1 用Blender構建 192 9.1.1 構建墻體 193 9.1.2 添加天花板 194 9.2 用Unity組裝場景 197 9.2.1 畫廊 197 9.2.2 藝術品部件 198 9.2.3 展覽計劃 200 9.3 將圖片添加到畫廊中 202 9.4 管理藝術信息數據 204 9.4.1 使用列表 204 9.4.2 使用數據結構 205 9.4.3 使用腳本化對象 206 9.5 顯示藝術信息 208 9.5.1 創建標題牌匾 209 9.5.2 詳細的交互信息 210 9.5.3 調整圖像寬高比 212 9.6 漫游畫廊 213 9.6.1 在畫像之間傳送 213 9.6.2 考慮房間規模 215 9.6.3 動畫穿越 216 9.7 本章小結 218 第10章 利用360? 219 10.1 360岸嗝教? 219 10.1.1 等距圓柱投影 220 10.1.2 VR正在侵入你的視野 220 10.1.3 180岸嗝教? 221 10.1.4 立體360岸嗝教? 221 10.2 有趣的光球 222 10.2.1 水晶球 222 10.2.2 地球儀 224 10.3 渲染光球 225 10.3.1 編寫自定義內部著色器 226 10.3.2 魔法球 228 10.3.3 光球 229 10.3.4 播放360笆悠? 230 10.4 使用Unity天空盒 232 10.4.1 六邊形或立方體天空盒 233 10.4.2 球面全景天空盒 234 10.4.3 360笆悠堤煒蘸? 235 10.4.4 3D立體天空盒 236 10.5 在Unity中捕捉360岸嗝教? 236 10.5.1 捕捉立方體貼圖和反射探頭 236 10.5.2 使用第三方庫360安痘? 圖像 238 10.5.3 Unity內置立體360巴枷窈? 視頻捕獲 239 10.6 本章小結 240 第11章 動畫與VR講故事 241 11.1 撰寫我們的故事 241 11.1.1 收集資源 242 11.1.2 創建初始場景 243 11.2 Timeline和音頻軌道 245 11.3 使用Timeline激活對象 247 11.4 錄制Animation Track 248 11.4.1 正在生長的樹 248 11.4.2 正在生長的鳥 249 11.5 使用動畫編輯器 249 11.6 動畫的其他屬性 252 11.6.1 動畫的燈光 252 11.6.2 動畫腳本組件屬性 253 11.6.3 控制粒子系統 255 11.7 使用動畫剪輯 257 11.8 使用動畫控制器 258 11.8.1 動畫和動畫器的定義 259 11.8.2 ThirdPersonController動畫 259 11.8.3 Living Bird動畫器 260 11.8.4 學習飛行 262 11.8.5 對鳥進行攻擊 264 11.8.6 飛走 264 11.9 讓故事更具互動性 265 11.9.1 期待播放效果 265 11.9.2 重置初始場景設置 267 11.9.3 更多互動的想法 268 11.10 本章小結 268 第12章 社交化的VR虛擬空間 269 12.1 多玩家網絡 270 12.1.1 網絡服務 270 12.1.2 網絡架構 271 12.1.3 本地與服務器 271 12.1.4 Unity的網絡系統 272 12.2 建立簡單的場景 273 12.2.1 創建場景環境 273 12.2.2 創建虛擬角色的頭部 274 12.3 添加多玩家網絡 275 12.3.1 Network Manager和HUD 275 12.3.2 Network Identity和Sync Transform 275 12.3.3 作為一個主機運行 276 12.3.4 添加出生點位 276 12.3.5 運行游戲的兩個實例 277 12.3.6 關聯虛擬角色與第一人稱角色 278 12.4 添加配對大廳 280 12.5 同步對象和屬性 281 12.5.1 設置頭球游戲 282 12.5.2 通過聯網射擊球 284 12.5.3 同步球變換 285 12.5.4 狀態變量同步 286 12.6 高級網絡主題 287 12.7 語音聊天選項 288 12.8 使用Oculus平臺和虛擬角色 288 12.8.1 Oculus平臺權限檢查 289 12.8.2 添加本地虛擬角色 290 12.8.3 添加遠程虛擬角色 291 12.9 構建和共享自定義VRChat會議室 292 12.10 本章小結 294 第13章 優化性能和舒適度 295 13.1 使用Unity的Profiler和Stats 296 13.1.1 Stats窗口 296 13.1.2 Profiler窗口 297 13.2 優化藝術品 298 13.2.1 設置場景 299 13.2.2 抽取模型 302 13.2.3 透明材質 303 13.2.4 細節層次 304 13.3 使用靜態對象優化場景 307 13.3.1 設置場景 307 13.3.2 燈光和烘焙 307 13.3.3 遮擋刪除 309 13.4 優化代碼 310 13.4.1 了解Unity的生命周期 311 13.4.2 編寫高效的代碼 312 13.4.3 避免費時的API調用 313 13.5 優化渲染 313 13.5.1 批次處理 314 13.5.2 多通道像素填充 315 13.5.3 VR優化著色器 316 13.6 運行時性能和調試 316 13.6.1 Daydream 317 13.6.2 Oculus 318 13.7 本章小結 318 本書通過基于項目的實踐方式,詳細講解如何使用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體驗。 如今,我們正在見證虛擬現實(VR)的迅猛發展,這是一項令人激動的技術,它有望改變我們與信息、朋友和整個世界進行交互的基本方式。
戴上一個VR頭戴式顯示器,你就可以觀看立體3D場景,可以環顧四周,還可以在虛擬空間中四處走動,并使用定位手柄控制器與虛擬對象交互。你可以擁有完整的沉浸式體驗,就像真正置身于某個虛擬世界一樣。 本書通過基于項目的實踐方式詳細講解如何使用Unity 3D游戲引擎進行虛擬現實開發。我們將使用Unity 2018和其他免費或開源軟件來完成一系列實踐項目、循序漸進的教程和深入的討論。VR技術正在快速發展,我們將嘗試獲取基本的原則和技巧,以便實現具有沉浸感和舒適感的VR游戲和應用程序。 你將學習如何使用Unity來開發可以用Oculus Rift、Google Daydream、HTC Vive等設備進行體驗的VR應用程序。我們將涵蓋對于VR來說重要且可能獨一無二的技術關注點。讀完本書后,你將能夠用Unity開發豐富的交互式虛擬現實體驗程序。 多年前,我在大學學習3D計算機圖形學,在研究生院學習用戶界面設計,然后成立了一家小型軟件公司,開發用于管理AutoCAD工程圖的3D圖形引擎,后來此業務出售給了Autodesk。在接下來的幾年里,我專注于2D網絡應用開發,在博客上記錄我的技術探索,并致力于發展幾家新的初創公司。然后,在2014年3月,我看到Facebook以20億美元的價格收購了Oculus,這引起了我的興趣。于是我立即訂購了我的第一臺VR頭戴式顯示器(Oculus DK2開發套件),并開始利用Unity開發小型VR項目。 2015年2月,我打算寫一本關于Unity VR開發的書。Packt出版社馬上接受了我的建議,于是到2015年8月,本書的第1版出版了。從提案、大綱、章節草稿、審查到最終定稿和出版,只花費了短暫的時間,我很癡迷于此。 在撰寫本文時,Google Cardboard發布了,但是沒有消費級VR設備。DK2沒有手柄控制器,只有一個XBox游戲控制器。2015年11月,第1版發布幾個月后,HTC Vive推出了房間規模VR設置,同時配套有定位手柄控制器。2016年3月,Oculus Rift消費者版本發布。直到2016年12月,也就是第1版出版近一年半之后,Oculus才發布定位手柄控制器。 自本書第1版出版以來,許多新的VR設備已經上市,硬件和軟件功能得到改進,Unity游戲引擎也持續增加原生VR SDK集成和新功能來支持它們。隨著行業的不斷加速發展,Oculus、Google、Steam、Samsung、PlayStation、Microsoft等多家企業加入了競爭行列。 與此同時,在2016年,我與Packt合作出版了另一本書Cardboard VR Projects for Android,這是一本使用Java和Android Studio構建Google Daydream和Cardboard應用的非Unity VR書籍。(在這本書中,你可以學習為移動設備創建并使用自己的3D圖形引擎。)然后在2017年,我與Packt合作編寫了第三本書Augmented Reality for Developers,這是一本令人興奮且被及時出版的書,它基于Unity的項目,適用于在iOS、Android和HoloLens設備上開發AR應用程序。 當開始修訂本書的第2版時,我認為這將是一個相對簡單的任務,只需要更新到當前版本的Unity、增加對定位手柄控制器的支持并進行一些調整即可。但是沒那么簡單!雖然第1版的許多基本原理和建議沒有改變,但作為一個行業,我們在短短的幾年里學到了很多東西。例如,在VR中實現蹦床(我們在第2版中刪去了這個項目)真的不是一個好主意,因為這可能導致暈動癥! 第2版進行了重大修訂和擴展。每個章節和項目都已更新。我們將一些主題分為獨立的章節,包括音頻火球游戲(第8章)、動畫(第11章)和優化(第13章)。我真誠地希望你能認為本書既有趣又專業,因為我們致力于創造出色的新VR內容和探索這個神奇的新媒介。 本書讀者對象 如果你對虛擬現實感興趣,想要了解它的工作原理或創建自己的VR體驗,請閱讀本書。無論你是不是程序員,是否熟悉3D計算機圖形,是否剛開始接觸虛擬現實,你都將從本書獲益。當然,擁有任何Unity經驗都是一種優勢。如果你是Unity新手,也可以拿起這本書,但你可以首先從Unity官網上提供的一些入門教程入手(https://unity3d.com/ learn)。 游戲開發者可能已經熟悉本書中重新應用到VR項目中的概念,但可以學習到許多其他特定于VR的理念。已經了解如何使用Unity的移動設備設計師和2D游戲設計師將能發現另一個維度。工程師和3D設計師可能了解許多3D概念,但是可以學習如何使用Unity引擎開發VR。應用程序開發人員可能會欣賞VR潛在的非游戲用途,并可能希望通過學習來實現這一目標。 本書主要內容 第1章介紹游戲和非游戲應用中消費級虛擬現實的新技術以及機會,包括對立體視覺以及頭姿追蹤的解釋。 第2章介紹Unity游戲引擎,我們將構建簡單的立體模型場景,并介紹如何導入使用其他工具(如Blender、Tilt Brush、Google Poly和Unity EditorXR)創建的3D內容。 第3章介紹如何設置系統以及如何在目標設備上構建和運行Unity項目,這些設備包括SteamVR、Oculus Rift、Windows MR、GearVR、Oculus Go以及 Google Daydream。 第4章探討VR攝像機與場景中對象的關系,包括3D光標和基于凝視的射線槍。該章還介紹如何使用C#語言進行Unity腳本編程。 第5章討論通過控制器按鈕和可交互對象實現用戶輸入事件,涉及使用不同軟件模式,包括輪詢、可編寫腳本的對象、Unity事件以及隨工具包SDK提供的可交互組件。 第6章給出使用Unity世界坐標系畫布實現VR的用戶界面(UI)的許多示例,包括護目鏡(HUD)、信息框、游戲內對象和腕部菜單欄。 第7章深入探討在VR場景中移動自己的技巧,詳細探討Unity第一人稱角色對象和組件、移動、遠程傳送以及房間規模VR。 第8章探索Unity物理引擎、物理材質、粒子系統和更多C#腳本,同時我們創建了一個球拍游戲,讓你可以在喜歡的音樂中擊打火球。 第9章介紹如何建立交互式藝術畫廊,包括關卡設計、藝術作品照片、數據管理以及空間傳送。 第10章解釋360°多媒體并在各種示例中使用它們,包括地球儀、光球和天空盒等。 第11章介紹如何使用導入的3D資源和音軌、Unity時間軸和動畫來創建完整的VR講故事體驗。 第12章探索使用Unity Networking組件的多人游戲以及Oculus平臺頭像和VRChat會議室的開發。 第13章演示如何使用Unity Profiler和Stats窗口來減少VR應用程序的延遲,包括優化3D藝術、靜態照明、高效編碼和GPU渲染。 準備工作 在開始閱讀本書之前,你需要一份零食、一瓶水或一杯咖啡。除此之外,還需要安裝了Unity 2018的PC(操作系統為Windows或Mac)。 你不需要超級強大的計算機硬件,雖然Unity是可以渲染復雜場景的引擎,并且很多VR制造商(像Oculus)已經發布了推薦的PC硬件規格,但實際上你可以用配置較低的PC(甚至使用筆記本電腦)來學習本書中的項目。 要獲取Unity,請登錄https://store.unity.com,選擇“Personal”,然后下載安裝程序。免費的個人版就足夠了。 我們還可以使用開源項目Blender來進行3D建模,但本書不討論這方面的內容,如果你需要,我們會使用它。要獲取Blender,請訪問https://www.blender.org/download/,并按照與平臺相適應的說明進行操作。 強烈建議你配備VR頭戴式顯示器(HMD),以便第一時間體驗本書中開發的項目。但這不是完全必要的,因為你也可以在Unity中使用仿真模式。根據你的平臺,你可能還需要安裝其他開發工具。第3章詳細介紹了每個設備和平臺所需的東西,包括SteamVR、Oculus Rift、Windows MR、GearVR、Oculus Go、Google Daydream等。 基本上只需要PC、Unity軟件和VR設備即可,第3章描述的其他工具我們將在后面進行介紹。如果你從Packt網站或華章官網下載相關資源,有些項目將會更完整。 |