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