原書前言
2017年第三季度的硬件銷售量,是虛擬現(xiàn)實(Virtual Reality,VR)硬件產(chǎn)業(yè)的一個新的里程碑。在經(jīng)歷了幾年的使用率低下和銷售不景氣后,制造商售出了100萬臺VR頭盔。這一成功震驚了許多科技作家,他們曾預(yù)言VR技術(shù)會被早期使用者和技術(shù)發(fā)燒友束之高閣。然而,在現(xiàn)代消費級頭盔發(fā)布后,VR產(chǎn)業(yè)還是看到了其巨大的推動力,同時,各種場景下VR的大量使用也讓VR開發(fā)人員數(shù)量迎來了蓬勃增長。隨著頭盔成本的降低和消費者市場的日益壯大,全球各地產(chǎn)業(yè)都在投資VR技術(shù)。這并不局限于娛樂公司,制造業(yè)、醫(yī)療衛(wèi)生行業(yè)、零售和教育行業(yè)也正在引領(lǐng)VR技術(shù)一些新的探索和應(yīng)用。
我們看看Glassdoor、Indeed和Monster這些公司的情況吧。從紐約到休斯敦,再到雷德蒙德,在美國的每一個技術(shù)人才市場都在不斷涌現(xiàn)出新的與VR開發(fā)相關(guān)的招聘信息。VR開發(fā)能力可謂炙手可熱。
本書采用了一種實用的、項目式的方法來進行VR開發(fā)。我們使用了4個易理解的而又啟發(fā)人思考的創(chuàng)意,在Unity開發(fā)平臺上就實現(xiàn)VR項目的一些細(xì)節(jié)展開教學(xué)。每一個項目都從分步式指南開始,之后還包括對VR最佳實踐、設(shè)計選擇、技術(shù)挑戰(zhàn)的討論,以及對讀者自己的解決方案進行改進和實現(xiàn)的指導(dǎo)建議。
我們期望你在學(xué)習(xí)完本書后,能夠獲得一套新的技能并熱愛上VR開發(fā),同時具備使用Unity平臺創(chuàng)建豐富的、沉浸式體驗的想法和創(chuàng)意。
適用讀者
你是否想過創(chuàng)建自己專屬的VR體驗?是否想過創(chuàng)建一個沉浸式環(huán)境?手頭是否有一款VR頭盔?如果你的答案都是“Yes”的話,那么本書正是為你準(zhǔn)備的!本書內(nèi)容既適合開發(fā)人員,也可幫助新手上手學(xué)習(xí)。最好具備一些Unity游戲引擎的知識,不過即使是開發(fā)新手也可以跟上并適應(yīng)書中的分步式教程。
本書內(nèi)容
“第1章 VR的過去、現(xiàn)在和未來”,詳細(xì)介紹了虛擬現(xiàn)實平臺,從起步階段,到當(dāng)今的硬件設(shè)備。該章介紹了視覺暫留、立體視覺和觸覺反饋,這些要素的結(jié)合將虛擬世界和物理世界真正連接起來。
“第2章 為Google Cardboard構(gòu)建一個‘太陽系’”,這是一個簡單的入門項目,使用Trappist-1 Solar System作為背景向新手介紹VR開發(fā)。
“第3章 為Gear VR構(gòu)建圖片畫廊系統(tǒng)”,使用虛擬實地考察(VR行業(yè)的基石)來演示如何創(chuàng)建虛擬場景。該章還列出了一個用戶參與的計劃進程。這個入門級項目也是為你迅速熟悉項目開發(fā)而準(zhǔn)備的。
“第4章 為虛擬畫廊項目添加用戶交互”,用案例說明了VR沉浸的關(guān)鍵就在于用戶交互。在該章中,我們對圖片畫廊進行擴展,使其接受用戶輸入,進而引出沉浸感這一主題。我們會創(chuàng)建一系列控制器腳本,用于在VR空間中選擇圖片和畫廊。該項目是面向中級Unity開發(fā)人員的,但是其中的操作和方法適合于所有開發(fā)人員。
“第5章 在Oculus Rift上展開‘僵尸’大戰(zhàn)”,探討了第一人稱射擊類型游戲。無論是第一人稱還是第三人稱的射擊游戲,幾十年來都已經(jīng)被牢牢地確立為頂級游戲類型!敖┦贝髴(zhàn)第一部分涵蓋了環(huán)境的構(gòu)建、射線系統(tǒng)的實現(xiàn),以及使用狀態(tài)機來控制動畫預(yù)制件的播放。與此同時,我們還給出了一些優(yōu)化VR體驗的技巧。
“第6章 為Oculus Rift編輯‘僵尸’腳本”,這是“僵尸”大戰(zhàn)的第二部分。該章詳細(xì)介紹了如何構(gòu)建控制“僵尸”和玩家進行交互的腳本。如果你有Unity腳本編程經(jīng)驗,理解起來會更容易,新手也完全不用擔(dān)心,因為我們的操作說明非常詳盡。
“第7章 嘉年華游樂場游戲(上)”,這個項目中我們將一起構(gòu)建社區(qū)嘉年華中常見的兩個小游戲。這一部分包括了構(gòu)建環(huán)境、討論關(guān)卡設(shè)計的相關(guān)技巧,以及規(guī)劃傳送系統(tǒng)。
“第8章 嘉年華游樂場游戲(下)”,提供了關(guān)于添加UI元素、各種游戲?qū)ο竽_本編程、項目收尾的說明。作為終極任務(wù),你需要對本章內(nèi)容做一些拓展,通過添加Asset Store中的物品或是自定義游戲?qū)ο,來營造嘉年華氣氛。
“附錄A VR設(shè)備概覽”,羅列了一些現(xiàn)有的VR頭盔,主要提供產(chǎn)品的細(xì)節(jié)、規(guī)格以及價格比較。
“附錄B VR相關(guān)概念”,為想更進一步理解書中概念的讀者提供了一些額外的VR術(shù)語講解。該附錄中還包含了有關(guān)輸入、移動和設(shè)計用戶體驗的最佳實踐。
如何最有效地利用本書
開始書中所列項目之前,要先做幾件事。首先,需要一臺滿足Unity 3D系統(tǒng)需求的Mac或PC。可以訪問https://docs.unity3d.com/Manual/system-requirements.html以查看你的計算機配置是否符合軟件運行需求。
本書使用的是Unity 3D游戲引擎免費版。如果你對Unity引擎并不熟悉,可以訪問https://docs.unity3d.com/Manual/UsingTheEditor.html,該教程介紹了Unity軟件界面和基本游戲?qū)ο。Unity引擎在不斷進行改進,版本不斷更新。每月都會發(fā)布一些新的補丁,每年大概會進行兩三次主版本更新。因為更新很快,所以你最好安裝最新版本的Unity軟件。
開發(fā)項目時除了需要計算機外,還要配備VR頭盔來對環(huán)境進行完整測試。
我們設(shè)計了幾個針對不同平臺的教程:Google Cardboard(項目:“太陽系”)、三星GearVR(項目:圖片畫廊),以及Oculus Rift(項目:“僵尸”大戰(zhàn)、嘉年華游戲)。當(dāng)然,構(gòu)思都是通用的,只要略做調(diào)整,就可以將其應(yīng)用在其他設(shè)備上。
每個硬件平臺都需要相應(yīng)的軟件開發(fā)工具包(SDK)或自定義Unity軟件包來幫助Unity和VR設(shè)備進行通信。每個項目的開頭都有安裝說明。記得檢查與已安裝Unity版本的軟件兼容性,這點也很重要。可以通過下載網(wǎng)站或Unity的VR設(shè)備部分(https://docs.unity3d.com/Manual/XRPluginArchitecture.html)完成兼容性檢查。
下載示例代碼
可以通過以下步驟下載代碼文件:
1)打開www.packtpub.com,登錄或注冊。
2)選擇“SUPPORT”選項卡。
3)單擊“Code Downloads&Errata”。
4)在搜索框輸入原書的書名,然后跟著屏幕提示進行操作即可。
下載文件后,請確保使用以下軟件的最新版本進行解壓:
??Windows系統(tǒng):WinRAR/7-Zip。
??Mac系統(tǒng):Zipeg/iZip/UnRarX。
??Linux系統(tǒng):7-Zip/PeaZip。
本書代碼在GitHub上也能下載:https://github.com/PacktPublishing/Virtual-Reality-Blueprints。
第1章 VR的過去、現(xiàn)在和未來
1.1 虛擬現(xiàn)實的歷史
1.2 透過鏡子
1.3 讓靜態(tài)圖片動起來
1.4 越大越好——全景圖
1.5 立體鏡
1.6 為何要止步于看和聽——視覺之味和多感官劇場Sensorama
1.7 Link飛行模擬器和阿波羅計劃
1.8 交互性和真正的頭戴式顯示器
1.8.1 1960年——TelesphereMask
1.8.2 1961年——Headsight
1.8.3 1965年——Ultimate Display
1.8.4 1968年——Teleyeglasses
1.8.5 1968年——達摩克利斯之劍
1.8.6 1968年——“所有演示之母”
1.8.7 1969年——駕駛艙/頭盔虛擬視景
1.8.8 1969年——人工現(xiàn)實
1.8.9 1995年——CAVE
1.8.10 1987年——VR和VPL
1.8.11 1989年——任天堂Powerglove
1.9 20世紀(jì)90年代——VR爆發(fā)
1.9.1 1991年——Virtuality DactylNightmare
1.9.2 1993年——世嘉VR眼鏡
1.9.3 1995年——VRML
1.9.4 1995年——任天堂Virtual Boy
1.9.5 1995年——Hasbro 公司Toaster
1.9.6 2013年——Oculus Rift
1.9.7 2014年——Google Cardboard
1.9.8 2015年——三星Gear VR
1.9.9 2018年——Magic Leap
1.10 小結(jié)
第2章 為Google Cardboard構(gòu)建一個“太陽系”
2.1 平臺設(shè)置
2.2 Google Cardboard設(shè)置
2.3 配置Unity環(huán)境
2.4 構(gòu)建TRAPPIST-1系統(tǒng)
2.5 構(gòu)建應(yīng)用程序
2.5.1 Android操作步驟
2.5.2 iOS操作步驟
2.6 小結(jié)
第3章 為Gear VR構(gòu)建圖片畫廊系統(tǒng)
3.1 虛擬圖片畫廊
3.1.1 三星Gear VR平臺
3.1.2 過程概覽
3.2 VR入門
3.3 VR開發(fā)前準(zhǔn)備
3.4 獲取Oculus SDK
3.5 制作全景Skybox
3.6 制作Gallery預(yù)制件
3.6.1 可選自定義字體
3.7 構(gòu)建畫廊
3.7.1 制作圖片顯示元素(FullImage對象)
3.7.2 制作控制器及場景控制器腳本
3.7.3 制作Gallery 預(yù)制件
3.8 小結(jié)
第4章 為虛擬畫廊項目添加用戶交互
4.1 促進用戶交互 // 49
4.1.1 Raycaster
4.1.2 StandaloneInput模塊
4.1.3 圖片選擇器腳本
4.1.4 場景控制器
4.1.5 圖片收集
4.1.6 添加照片
4.1.7 使用高亮材質(zhì)作為反饋
4.1.8 賦值
4.2 用戶交互定案
4.3 使用事件觸發(fā)器作為用戶反饋
4.4 構(gòu)建應(yīng)用
4.4.1 創(chuàng)建osig文件
4.4.2 Android設(shè)備準(zhǔn)備工作
4.4.3 構(gòu)建Android應(yīng)用
4.5 小結(jié)
第5章 在Oculus Rift上展開“僵尸”大戰(zhàn)
5.1 與“僵尸”共舞
5.2 Oculus Rift平臺
5.3 過程概覽
5.4 配置Unity環(huán)境
5.5 創(chuàng)建Player游戲?qū)ο?/p>
5.5.1 Graphic Raycaster
5.5.2 添加3D攝像機
5.6 構(gòu)建游戲環(huán)境
5.6.1 建立游戲邊界
5.6.2 設(shè)置氣氛
5.6.3 創(chuàng)建重生點
5.7 優(yōu)化VR體驗
5.7.1 幀率是決定性能的關(guān)鍵
5.7.2 減少過多的場景幾何體
5.7.3 光照映射
5.8 創(chuàng)建“僵尸”預(yù)制件
5.8.1 制作“僵尸”資源動畫
5.8.2 添加過渡條件
5.9 小結(jié)
第6章 為Oculus Rift編輯“僵尸”腳本
6.1 編制“僵尸”腳本
6.1.1 召喚“僵尸”
6.1.2 控制“僵尸”預(yù)制件
6.1.3 反擊
6.2 設(shè)置氣氛
6.3 構(gòu)建可執(zhí)行應(yīng)用
6.4 小結(jié)
6.5 擴展體驗
第7章 嘉年華游樂場游戲(上)
7.1 再現(xiàn)嘉年華游戲
7.2 前期制作
7.3 特別提示
7.4 需求
7.5 過程概覽
7.5.1 Rift平臺VR開發(fā)前Unity設(shè)置
7.5.2 加載OVRP
7.5.3 設(shè)置項目
7.5.4 創(chuàng)建玩家化身
7.5.5 設(shè)計游玩區(qū)
7.5.6 構(gòu)建游戲環(huán)境
7.5.7 對抗VR“疾病”
7.5.8 實現(xiàn)移動
7.6 使對象可抓取
7.7 小結(jié)
第8章 嘉年華游樂場游戲(下)
8.1 備份項目
8.1.1 本地備份
8.1.2 Unity協(xié)作
8.1.3 軟件版本控制服務(wù)
8.2 游樂場攤位游戲
8.2.1 打地鼠道具
8.2.2 地鼠動畫
8.2.3 構(gòu)建動畫狀態(tài)機
8.2.4 編寫地鼠資源腳本
8.2.5 編寫地鼠游戲控制器腳本
8.2.6 打地鼠游戲收尾
8.2.7 扔奶瓶道具
8.3 構(gòu)建應(yīng)用
8.4 擴展游戲
8.5 小結(jié)
附錄
附錄A VR設(shè)備概覽
A.1 VR設(shè)備概述
A.2 頭顯參數(shù)
附錄B VR相關(guān)概念
B.1 VR術(shù)語和定義
B.2 最佳實踐入門