VR開發實戰( 簡體 字) | |
作者:冀盼,謝懿德 | 類別:1. -> 程式設計 -> VR+AR |
出版社:電子工業出版社 | 3dWoo書號: 45769 詢問書籍請說出此書號! 有庫存 NT售價: 395 元 |
出版日:1/1/2017 | |
頁數:300 | |
光碟數:0 | |
站長推薦: | |
印刷:黑白印刷 | 語系: ( 簡體 字 ) |
ISBN:9787121305047 | 加入購物車 │加到我的最愛 (請先登入會員) |
(簡體書上所述之下載連結耗時費功, 恕不適用在台灣, 若讀者需要請自行嘗試, 恕不保證, 繁體書的下載亦請直接連絡出版社) | |
1 虛擬現實的前世今生 1
1.1 初探 ............. 1 1.2 緩慢發展 ........... 2 1.3 虛擬現實又火爆了 ......... 6 1.3.1 主機VR 的“三國演義” .......... 6 1.3.2 群雄逐鹿 ............. 7 1.4 虛擬現實可以干什么 ......... 8 1.4.1 培訓教育 ............. 8 1.4.2 運動 ............. 8 1.4.3 游戲 ............. 9 1.4.4 電影 ............. 9 1.4.5 心理治療 ............. 10 1.4.6 廣告 ............. 10 1.4.7 虛擬現實直播 ........... 10 1.5 虛擬現實產品介紹 ......... 11 1.5.1 主體硬件 ............. 11 1.5.2 各種配件 ............. 12 1.6 小結 ............. 15 2 虛擬現實設計初探 16 2.1 虛擬現實技術難點 ......... 16 2.1.1 暈動癥 ............. 16 2.1.2 視疲勞 ............. 18 2.1.3 成像延時 ............. 18 2.1.4 畸變成像 ............. 19 2.2 虛擬現實應用設計時要考慮的因素 ....... 20 2.2.1 刷新率和幀數的影響 ......... 20 2.2.2 分辨率影響 ........... 20 2.2.3 場景復雜度影響 ........... 21 2.2.4 攝像機控制 ........... 23 2.2.5 自我認知沖突 ........... 24 2.2.6 更自然的交互 ........... 24 2.2.7 音樂、音效的使用 ........... 26 2.2.8 多人聯機 ............. 27 2.3 小結 ............. 27 3 認識HTC Vive 28 3.1 HTC Vive ............ 28 3.2 運行環境 ........... 28 3.2.1 硬件環境 ............. 28 3.2.2 軟件環境 ............. 29 3.3 簡述Lighting House 原理 ........ 30 3.4 將Vive 連接到電腦 ......... 30 3.5 房間設定 ........... 33 3.6 小結 ............. 37 4 Unity 簡介 38 4.1 Unity 入門 ........... 38 4.1.1 Unity 簡介 ........... 38 4.1.2 下載及安裝 ........... 38 4.1.3 Unity 5 授權 ............ 41 4.1.4 Unity 的語言及跨平臺原理 ......... 42 4.2 Unity 編輯器使用簡介 ......... 43 4.2.1 編輯器界面 ........... 43 4.2.2 工具欄 ............. 44 4.2.3 Asset Store ........... 45 4.2.4 菜單欄 ............. 47 4.2.5 常用工作視圖 ........... 50 4.3 Unity 腳本以及腳本事件調用 ....... 54 4.4 Unity 物體系統簡介 ......... 55 4.5 創建并發布一個簡單的游戲 ....... 56 4.6 Unity 中的全局光照 ......... 61 4.6.1 全局光照與局部光照 ......... 61 4.6.2 全局光照的實現問題 ......... 61 4.6.3 預計算的GI ............ 62 4.6.4 烘焙GI ............ 62 4.6.5 預計算的GI 與烘焙GI 的關系 ......... 62 4.6.6 Unity 的幾種光源 ........... 62 4.6.7 GI 實戰 ............ 63 4.7 Unity 地形編輯器 ......... 67 4.8 Unity 中的粒子系統 ......... 70 4.9 小結 ............. 73 5 三維空間的數學基礎 74 5.1 學習的目的 ........... 74 5.2 空間數學的基本概念 ......... 74 5.2.1 點、矢量與標量 ........... 75 5.2.2 笛卡爾坐標系 ........... 75 5.3 構建測試項目 ........... 76 5.4 矢量運算 ........... 81 5.4.1 矢量和標量的乘法、除法 ......... 81 5.4.2 矢量的加法與減法 ........... 84 5.4.3 矢量的模 ............. 86 5.4.4 矢量的歸一化 ........... 87 5.4.5 矢量的投影 ........... 89 5.4.6 矢量的點積 ........... 91 5.4.7 矢量的叉積 ........... 93 5.5 小結 ............. 96 6 Vive 開發環境搭建及插件介紹 97 6.1 獲取SteamVR 插件 ......... 97 6.2 將SteamVR 插件導入Unity ....... 97 6.3 SteamVR 包簡介 .......... 99 6.4 實現一個最基本的VR 場景 ....... 101 6.4.1 工程場景搭建 ........... 102 6.4.2 添加VR 組件 ............ 104 6.4.3 常用SteamVR 組件詳解 .......... 105 6.4.4 通過事件監聽實現拿、放、扔 ........ 117 6.4.5 通過繼承實現發射器效果 ......... 121 6.5 小結 ............. 123 7 Vive 開發:解密類游戲 124 7.1 游戲開發流程 ........... 124 7.2 游戲策劃 ........... 125 7.3 游戲場景 ........... 126 7.4 解密邏輯:激光發射 ......... 127 7.5 接收激光 ........... 130 7.5.1 最基礎的接收腳本 ........... 130 7.5.2 接收并發射激光 ........... 132 7.5.3 接收激光后開門 ........... 132 7.5.4 接收激光后關卡勝利 ......... 133 7.6 制作接收和發射激光的預制體 ....... 134 7.7 操作獅子旋轉 ........... 137 7.8 完成剩余場景布置 ......... 139 7.9 效果演示 ........... 142 7.10 小結 ........... 144 8 Vive 開發:第一人稱射擊類游戲 145 8.1 策劃 ............. 145 8.2 游戲場景 ........... 145 8.3 創建怪物 ........... 146 8.4 Unity 中的自動尋路 ......... 149 8.4.1 Navigation ........... 149 8.4.2 Nav Mesh Agent 組件 ......... 150 8.5 添加怪物自動尋路 ......... 151 8.6 添加怪物動畫控制器 ......... 154 8.7 怪物行為控制 ........... 157 8.8 游戲管理類 ........... 160 8.9 怪物攻擊 ........... 162 8.10 玩家攻擊 ........... 164 8.10.1 添加手柄手槍模型 ......... 164 8.10.2 添加手槍開槍動畫 ......... 165 8.10.3 實現開槍邏輯 ........... 167 8.10.4 添加開槍腳本 ........... 170 8.10.5 設置怪物的層級(Layer) ........ 170 8.11 游戲重玩邏輯 ........... 171 8.12 添加背景音樂與音量調整 ....... 174 8.13 小結 ........... 175 9 Vive 開發:旅游觀光應用 176 9.1 策劃 ............. 176 9.2 游戲場景 ........... 176 9.3 虛擬空間內移動傳送 ......... 177 9.3.1 為什么要傳送和傳送的實現方式 ........ 177 9.3.2 傳送的實現原理 ........... 177 9.3.3 實現位置點選取 ........... 179 9.3.4 實現游客傳送 ........... 181 9.4 多場景編輯 ........... 183 9.4.1 為何選擇多場景編輯 ......... 184 9.4.2 多場景的優勢 ........... 184 9.4.3 多場景的注意事項 ........... 184 9.4.4 實現多場景加載 ........... 186 9.4.5 場景管理類 ........... 191 9.5 實現不同時間段效果 ......... 193 9.5.1 如何實現不同時間段效果 ......... 193 9.5.2 實現不同時間段的切換效果 ........ 193 9.6 創建可傳送面與不可傳送面 ....... 196 9.6.1 如何區分可傳送面與不可傳送面 ........ 196 9.6.2 實現可傳送面與不可傳送面的區分 ........ 196 9.7 修改傳送點選取方式 ......... 198 9.7.1 修改原因 ........... 198 9.7.2 實現原理 ........... 198 9.7.3 實現拋物線效果 ........... 200 9.8 小結 ............. 206 10 Vive 開發:將一款單機游戲改為聯機游戲 207 10.1 策劃 ........... 207 10.2 場景 ........... 207 10.3 聯機實現方法 ........... 208 10.4 UNET ............ 208 10.5 HLAPI 實現方法 .......... 208 10.5.1 主機、本地客戶端與遠程客戶端 ........ 209 10.5.2 本地用戶(LocalPlayer) ........ 209 10.5.3 權限(Authority)控制 .......... 210 10.5.4 主機與客戶機之間的RPC 通信方式 ...... 211 10.5.5 主機與客戶機之間的數據同步 ........ 212 10.5.6 產生聯機物體 ........... 212 10.6 使用UNET-HLAPI 來將單機游戲改為聯機游戲 .... 212 10.6.1 添加網絡管理組件 ......... 213 10.6.2 制作玩家預制體 ........... 214 10.6.3 重寫游戲管理類 ........... 220 10.6.4 為怪物添加網絡通信組件........ 226 10.6.5 設置玩家出生點 ........... 229 10.6.6 運行并查看結果 ........... 230 10.7 小結 ........... 231 11 Cardboard 開發入門 232 11.1 背景知識 ........... 232 11.2 Cardboard 簡介 ......... 233 11.3 開發環境準備 ........... 236 11.3.1 工具安裝 ........... 236 11.3.2 SDK 簡單分析 .......... 237 11.4 策劃 ........... 242 11.4.1 游戲介紹 ........... 242 11.4.2 主角 ............. 243 11.4.3 敵人 ............. 243 11.5 場景 ........... 243 11.5.1 搭建 ............. 243 11.5.2 天空盒 ............. 244 11.5.3 主角形象 ........... 244 11.5.4 敵人 ............. 245 11.5.5 炮彈和爆炸效果 ........... 251 11.6 交互 ........... 254 11.6.1 盯 ............. 255 11.6.2 單擊 ............. 255 11.7 小結 ........... 255 12 Oculus 開發入門 256 12.1 產品簡介與安裝 ......... 256 12.2 開發環境搭建 ........... 258 12.3 快速開發體驗 ........... 263 12.4 SDK 細節概述 .......... 265 12.5 Demo 實戰 .......... 270 12.5.1 策劃 ............. 270 12.5.2 場景 ............. 270 12.5.3 玩家 ............. 271 12.5.4 視角切換 ........... 272 12.6 小結 ........... 273 13 MR 視頻拍攝 274 13.1 電影綠幕 ........... 274 13.2 MR 視頻............ 275 13.3 MR 視頻原理 .......... 276 13.4 SteamVR 中的實現 .......... 277 13.5 拍攝 ........... 282 13.5.1 環境準備 ........... 282 13.5.2 如何拍攝 ........... 283 13.6 小結 ........... 287 本書由在虛擬現實領域具有豐富實戰經驗的技術專家編寫,雖然在方興未艾的虛擬現實領域,新產品、新技術日新月異、層出不窮,但是萬變不離其宗。本書既包含了虛擬現實領域近百年的發展概況,又立足開發實戰,對必要的理論知識進行了簡單的介紹,特別是書中大篇幅的實戰干貨,為廣大對虛擬現實有興趣的開發人員提供了絕佳的學習資料。由于書中對開發工具Unity、設計建議、數學知識等內容都有相關介紹,所以只要有基礎的開發人員,都可以通過閱讀本書熟悉虛擬現實開發技術。本書不但對Cardboard、Oculus VR、HTC Vive 均有相應教程,還以Vive 開發為例深入介紹了各類型虛擬現實產品開發的實戰案例,從觀賞應用到虛擬現實單機游戲,再到聯機游戲,涵蓋了虛擬現實開發領域所需要的大部分開發技術。實戰部分還在一定程度上深入各平臺的SDK 內部,同時也為開發人員繼續了解各平臺SDK 提供了入門指南。
推薦序二
創造一個世界或許是人類最具有雄心,也最富創造力的精神追求。而人類用于創造世 界的方法也在不斷進化,我們用瑰麗的文字來描述一個個栩栩如生的想象世界;我們用影 視來呈現看得見、聽得見的感官世界;我們用游戲來創造可以與之交互,甚至由玩家來塑 造的自由世界;有了VR 之后,我們才第一次真正“進入”這個由我們自己創造的世界中, 以沉浸式的視角來感受這個世界。 奧秘游戲團隊成員是一群喜歡“做夢”的人。我們用自己喜歡的元素去構建一個世界, 為這個世界填充上動人的故事,創造出有血有肉有感情的人物,并為之設計好玩的內容。 2015 年,當我們接觸到成熟的VR 硬件時,激動的心情不言而喻,對于我們而言,VR 是 最接近“創造世界”這個夢想的實現方法的,更是未來游戲產業發展趨勢的代表。因此, 我們毫不猶豫地轉向VR 內容開發領域。 《畫境》是我們開發的一款VR 冒險解謎游戲,通過三幅畫中的場景講述了一對父子 之間的溫馨回憶。限于極短的開發周期,這款游戲也留下了諸多遺憾。目前我們還有一款 科幻背景的解謎游戲和一款多人聯機RPG 游戲正在開發中。 在開發過程中我們踩了不少坑,在硬件選擇、引擎使用、交互設計、內容類型等方面 都獲得了不少經驗教訓,例如,如何設計才能在最大程度上減少體驗者的暈動癥,如何在 VR 環境中講述一個故事,如何更高效地進行開發,等等。 VR 行業從早前的硬件驅動,轉向目前的內容驅動,行業急需更豐富、更優質、更“爆 款”的內容來促進市場普及。這本書較為全面地介紹了VR 內容開發入門的理論知識,并 輔以翔實的案例說明,我們希望這些經驗教訓能幫助更多的內容開發者,尤其是剛剛進入 VR 領域的開發者,減少開發過程中“踩坑”,創造出更優秀的VR 內容。 陳振 奧秘游戲聯合創始人 作者序 大概每個人都幻想過生活在虛擬世界中,在里面體驗不曾體驗的生活,經歷現實世界 可能永遠無法經歷的事情。最近大火的美劇《西部世界》所描繪的游戲世界更像是虛擬現 實的升級版本。當然現在可能通過傳統的PC 網絡游戲或手機游戲可以得到一部分類似的 體驗,但它的體驗相比虛擬現實的體驗差遠了。 2016 年虛擬現實真正做到了消費級別,讓每個人都可以真正在虛擬世界中有神奇的 經歷,前兩天有兩個做手游很成功的朋友來我們公司考察,他們之前沒有體驗過全沉浸的 虛擬現實產品,當他們在游戲中體驗了打僵尸、斗機器人后,驚嘆之情溢于言表。他們完 全沒想到虛擬現實可以做到這種程度。雖然只是簡單的兩塊屏幕加上精確定位技術和更自 然的交互手柄,但營造出的沉浸感完全無法用語言準確表達,只有真正體驗過,才知道身 臨其境的體驗是什么樣的。 我們進入虛擬現實領域非常偶然。之前我們在金融行業積累了技術經驗,加入奧秘團 隊后才開始接觸AR/VR。當我們公司發現虛擬現實設備可以營造如此逼真的體驗時,大 家義無反顧地投身于其中,因為我們知道,這是劃時代的產品,等同于過去的從電影到電 視,電視到電腦,電腦到手機,現在是手機到虛擬現實,由于是信息輸出方式和輸入方式 的極大變化,這個變化足以為人們帶來更多的機會。 2016 年初參加HTC Vive 的技術大會,開始對Vive 有了更深入的了解,并在極短的 時間內創造出《畫境》這款游戲,現在看來它雖然非常粗糙,但在當時的時間限制下做出 這樣的作品,我們還是非常自豪的。后來又接著進行其它虛擬現實游戲設計開發,開始更 深入地理解虛擬現實的一些設計要點和技術原理。這本書就是我們團隊經驗的總結,閱讀 本書足以讓一個普通開發者完成從對虛擬現實一無所知到可以開發出不錯的虛擬現實體 驗程序的飛躍。 本書第一部分參考了國內外一些技術資料,對虛擬現實的產品和技術發展進行了簡短 的回顧,并對近幾年圈內的大事進行了介紹,特別是對現在各個方向產品都有一個簡單介 紹,文字雖然不多,但是足以開闊眼界。第二部分主要介紹了虛擬現實的核心技術點和產 品設計上需要注意的事項,讓大家掌握了理論基礎,至少不會做出“反人類”的體驗—— 讓人暈到想吐出膽汁。這部分雖然篇幅不多,但是極其重要。第三部分介紹了必要的Unity 基礎知識和數學知識,我們盡量讓這些非常重要的內容看起來不枯燥,它們影響在實戰中 對一些實現細節的理解,務必搞懂。實戰部分主要以Vive 為例將各種類型的虛擬現實應 用的開發過程進行了講解,從目前盈利能力最強的觀光類體驗(可用在房地產等行業)到 難度最大的多人聯機游戲,從體驗最好的Vive 到入門級的Cardboard 設備開發,也包括 了國內少有的Oculus 產品的開發講解。此外,我們還專門拿出一章對虛擬現實中的綠幕 技術進行講解。 書中力求以簡單的示例,讓讀者更快入門,同時對所用到的SDK 都進行了一定程度 的源碼分析,既不會太深入讓人一頭霧水,也不會太簡單讓人感到索然無味,目的是想讓 大家在需要時能有熟悉的途徑去深入底層。 本書適合有一定開發基礎的讀者閱讀,不論你所處什么行業,經過學習一定可以成為 一個不錯的虛擬現實開發者。在閱讀本書時,理論知識部分建議開發者仔細閱讀,在具備 了Unity 和數學基礎后,Cardboard、Oculus DK2、Vive 開發的閱讀順序可以根據需要來 決定,但是我們仍然建議將Vive 的所有例子完整閱讀。 感謝HTC Vive 中國區總裁汪叢青先生對本書給予的極大支持,同時感謝HTC Vive 中國 區的馬芳。 本書的付梓要特別感謝電子工業出版社的劉皎,在遇到各種問題時她對我們進行了及 時指導,同時要感謝汪達文編輯的辛苦工作,以及出版社其他朋友的幫忙。 感謝家人對此書編寫的支持,為了成書我們犧牲了很多陪伴家人的時間。謹以此書獻 給我們親愛的家人。 由于準備倉促和能力有限,書中難免有遺漏和錯誤,歡迎廣大讀者批評指正。 |