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