虛擬現實原理與開發:基於 Unity 的 VR 技術實現

邵偉

  • 出版商: 電子工業
  • 出版日期: 2022-11-01
  • 定價: $654
  • 售價: 8.5$556
  • 語言: 簡體中文
  • 頁數: 272
  • ISBN: 7121444844
  • ISBN-13: 9787121444845
  • 相關分類: 遊戲引擎 Game-engineVR/AR
  • 立即出貨 (庫存 < 4)

買這商品的人也買了...

商品描述

隨著5G、人工智能、雲計算等技術的發展,虛擬現實技術將在醫療、教育、工業等場景中發揮重要的作用。同時,它還是通向元宇宙的重要入口和體驗場景之一。 因為Unity是當前業界領先的VR/AR內容製作工具,所以本書基於Unity編輯器對其進行講解。本書主要分為兩大部分:第一部分講解SteamVR 2.x Unity插件的功能,包括新引入的動作機制和Interaction System;第二部分以一個完整的VR項目為例,帶領讀者從零起步,從項目創建開始,到最終導出為可交付的應用程序。各章還會介紹在項目製作過程中涉及的核心技術,包括但不限於場景搭建、製作VR中的UI、使用第三方工具製作材質資源、烘焙場景的光照貼圖、交互開發等。

目錄大綱

第 1 章 SteamVR 基礎交互開發 .................................................................................. 1
1.1 SteamVR 與相關 VR 硬件 .................................................................................. 1
1.1.1 HTC VIVE 硬件介紹 .............................................................................. 1
1.1.2 VR 手柄控制器按鍵介紹........................................................................ 3
1.1.3 HTC VIVE 開發推薦 PC 端規格 ........................................................... 4
1.2 OpenVR、SteamVR、OpenXR 相關概念 ........................................................ 5
1.2.1 OpenVR .................................................................................................... 6
1.2.2 OpenVR Desktop ..................................................................................... 6
1.2.3 OpenVR XR Plugin .................................................................................. 7
1.2.4 SteamVR 客戶端 ..................................................................................... 8
1.2.5 SteamVR Plugin ....................................................................................... 9
1.2.6 OpenXR .................................................................................................. 10
1.2.7 OpenXR Plugin ...................................................................................... 11
1.3 在 Unity 中使用 SteamVR 插件 ....................................................................... 12
1.3.1 SteamVR 插件的獲取 .......................................................................... 12
1.3.2 SteamVR Plugin 2.x 新版本的變化 ..................................................... 14
1.3.3 導入 SteamVR 插件 .............................................................................. 15
1.3.4 初次運行 SteamVR 應用程序 ............................................................... 17
1.4 SteamVR 2.x 中的動作 .................................................................................... 19
1.4.1 SteamVR Input 窗口 ............................................................................. 19
1.4.2 創建動作 ................................................................................................ 22
1.4.3 動作與按鍵的綁定 ................................................................................ 22
1.5 通過腳本獲取動作的輸入 ................................................................................ 26
1.5.1 聲明和引用動作 .................................................................................... 26
1.5.2 獲取動作輸入 ........................................................................................ 27
1.6 Interaction System .............................................................................................. 30
1.6.1 Interaction System 的核心模塊 ............................................................. 31
1.6.2 使用 Interaction System 實現位置傳送 ............................................... 32
1.6.3 使用 Interaction System 實現與物體的交互 ....................................... 35
1.7 在 SteamVR 2.x 中使用自定義手部模型 ....................................................... 37
1.7.1 骨骼輸入原理概述 ............................................................................... 37
1.7.2 自製模型設置 ....................................................................................... 39
1.7.3 SteamVR_Behaviour_Skeleton 組件設置 ............................................ 40
1.8 使用 Oculus Quest 學習 SteamVR 開發 ....................................................... 41
1.8.1 Oculus Link 簡介 .................................................................................. 41
1.8.2 具體步驟及常見問題............................................................................ 42
1.8.3 建議使用的開發軟件版本 .................................................................... 45
1.8.4 測試 ....................................................................................................... 47
1.9 SteamVR 開發常用腳本匯總 .......................................................................... 47
1.9.1 獲取 Touchpad 鍵上觸摸點的位置 ...................................................... 47
1.9.2 獲取體驗者位置 ................................................................................... 48
1.9.3 獲取體驗者某一個 Hand 的引用 ......................................................... 49
1.9.4 獲取與當前游戲對象交互的手柄控制器 ............................................ 49
1.9.5 獲取被交互游戲對象的信息 ................................................................ 50
1.9.6 手部在進入某區域時切換姿態 ............................................................ 50

第 2 章 VR 博物館項目實戰準備................................................................................ 52
2.1 項目軟硬件準備 ............................................................................................... 52
2.1.1 項目硬件準備 ....................................................................................... 52
2.1.2 項目軟件準備 ....................................................................................... 53
2.1.3 Unity 插件準備 .................................................................................... 55
2.1.4 為什麽建議使用約定的軟件版本 ........................................................ 55
2.2 URP 概述 ........................................................................................................... 56
2.2.1 URP 簡介 ............................................................................................... 56
2.2.2 使用模板創建基於 URP 的 Unity 項目 ............................................... 57
2.2.3 將現有項目的渲染管線轉換為 URP ................................................... 60
2.2.4 為什麽沒有使用 HDRP ........................................................................ 62
2.2.5 URP 學習建議 ....................................................................................... 63
2.3 材質、貼圖與 UV ............................................................................................. 63
2.3.1 什麽是材質 ........................................................................................... 63
2.3.2 基於物理的渲染:PBR 理論 ............................................................... 64
2.3.3 URP 中的材質 ....................................................................................... 65
2.3.4 什麽是貼圖 ........................................................................................... 67
2.3.5 PBR 常用貼圖類型 ............................................................................... 67
2.3.6 什麽是 UV ............................................................................................. 71
2.4 模型對接標準 .................................................................................................... 72
2.4.1 Unity 結合 Blender 進行模型處理的工作流程.................................... 72
2.4.2 模型 UV 準備 ........................................................................................ 75
2.4.3 模型對象的命名 .................................................................................... 77
2.4.4 確保模型使用的單位與 Unity 一致 ..................................................... 77
2.4.5 對模型設置合理的中心點 .................................................................... 78
2.4.6 使用布線合理且面數較低的模型 ........................................................ 79

第 3 章 烘焙光照貼圖技術 ......................................................................................... 81
3.1 光照貼圖 ............................................................................................................ 81
3.1.1 什麽是光照信息 .................................................................................... 81
3.1.2 為什麽要烘焙光照貼圖 ........................................................................ 82
3.1.3 直接光照和間接光照 ............................................................................ 83
3.1.4 烘焙光照貼圖的基本原理 .................................................................... 84
3.2 Lighting 窗口的參數介紹 ................................................................................. 85
3.2.1 窗口概覽 ................................................................................................ 85
3.2.2 Scene 選項卡中的參數 ......................................................................... 86
3.2.3 Environment 選項卡中的參數 .............................................................. 95
3.2.4 Baked Lightmaps 選項卡 ....................................................................... 98
3.3 項目基礎布光設置 ............................................................................................ 99
3.3.1 場景光照來源分析 ................................................................................ 99
3.3.2 製作玻璃材質 ...................................................................................... 100
3.3.3 調整 URP 配置文件的相關參數 ........................................................ 102
3.4 烘焙光照貼圖 .................................................................................................. 105
3.4.1 應用臨時材質 ...................................................................................... 105
3.4.2 設置游戲對象參與烘焙光照貼圖 ...................................................... 106
3.4.3 設置 Lighting Settings 參數 .............................................................. 107
3.4.4 面光源的使用 ...................................................................................... 110
3.4.5 切換天空盒 .......................................................................................... 112

第 4 章 VR 寫實材質技術 ......................................................................................... 115
4.1 Substance 材質的使用 .................................................................................... 115
4.1.1 概述 ...................................................................................................... 115
4.1.2 Substance in Unity 插件的使用 .......................................................... 116
4.1.3 在 Unity 中使用 Substance 材質 ..................................................... 117
4.2 使用 Substance 3D Designer 製作牆面材質 ................................................. 121
4.2.1 Substance 3D Designer 簡介 .............................................................. 121
4.2.2 在 Substance 3D Designer 中製作牆面材質 .................................... 122
4.2.3 在場景中使用牆面材質 ...................................................................... 128
4.3 製作並應用木地板材質 .................................................................................. 129
4.3.1 在 Substance 3D Sampler 中製作木地板材質 ................................. 130
4.3.2 將材質導出為 Substance ................................................................... 134
4.3.3 將木地板材質應用到項目場景中 ...................................................... 135
4.4 下一步行動 ..................................................................................................... 136

第 5 章 實現項目的基本交互功能 ............................................................................ 137
5.1 實現基礎 VR 交互 .......................................................................................... 137
5.1.1 導入 SteamVR 插件 .......................................................................... 137
5.1.2 實現在 VR 頭顯中查看場景內容 ...................................................... 138
5.1.3 將必要材質適配 URP ......................................................................... 139
5.1.4 實現位置傳送功能 ............................................................................. 140
5.1.5 優化位置傳送體驗 ............................................................................. 142
5.1.6 整理場景游戲對象 ............................................................................. 144
5.2 實現對象的抓取 ............................................................................................. 144
5.2.1 為游戲對象添加合適的碰撞體組件 .................................................. 144
5.2.2 為游戲對象添加 Throwable 組件 ...................................................... 145
5.3 解決高亮輪廓在 URP 下的顯示問題 ............................................................ 147
5.3.1 SteamVR 實現高亮效果的機制 ........................................................ 147
5.3.2 Quick Outline 插件的使用 ................................................................. 149
5.3.3 使用 Quick Outline 插件替換 SteamVR 的高亮效果 ....................... 150
5.4 使用 Skeleton Poser 組件設計抓取手形 ........................................................ 153
5.4.1 為可交互游戲對象添加 Skeleton Poser 組件 .................................. 154
5.4.2 編輯左手手形 ..................................................................................... 155
5.4.3 編輯右手手形 ..................................................................................... 157
5.5 使用 DOTween 插件實現佛像的浮動特效 ................................................. 158
5.5.1 獲取 DOTween 插件 ......................................................................... 158
5.5.2 導入 DoTween 插件 ............................................................................ 159
5.5.3 編寫腳本實現浮動特效 ...................................................................... 160
5.5.4 調整附加光源的陰影分辨率 .............................................................. 162

第 6 章 VR 中的 UI 技術........................................................................................... 163
6.1 製作文字介紹 UI ............................................................................................. 163
6.1.1 製作 VR 中的 UI 的一般流程 ............................................................ 163
6.1.2 為《蒙娜麗莎》畫像添加文字介紹 .................................................. 165
6.2 使用 Prefab Variant 技術製作雕塑介紹 UI .................................................... 168
6.2.1 準備製作 Original Prefab 的游戲對象 ............................................... 169
6.2.2 創建 Prefab Variant .............................................................................. 169
6.2.3 編輯 Prefab Variant .............................................................................. 170
6.3 開發 UI 與體驗者移動的動態交互 ................................................................ 172
6.3.1 編寫 IntroTxtBasic 父類實現 UI 的自動顯示和隱藏 ........................ 173
6.3.2 編寫 IntroTxtRotate 子類實現 UI 永遠朝向體驗者 .......................... 176
6.4 使用 Curved UI 插件進行 UI 交互開發 ......................................................... 178
6.4.1 Curved UI 插件簡介 ............................................................................ 179
6.4.2 Curved UI 插件與 SteamVR 2.x 的集成 ............................................ 180
6.5 解決 UI 交互與位置傳送交互沖突的問題 .................................................... 184
6.5.1 存在現象 .............................................................................................. 184
6.5.2 解決思路 .............................................................................................. 184
6.5.3 實現方法 .............................................................................................. 185
6.6 使用 Modern UI Pack 插件製作項目 UI 界面 ............................................... 188
6.6.1 Modern UI Pack 插件概述 .................................................................. 188
6.6.2 Window Manager 簡介 ........................................................................ 189
6.6.3 使用 Modern UI Pack 插件創建 UI 控件 ........................................... 191
6.6.4 為窗口添加 UI 控件 ............................................................................ 193
6.6.5 使用 TextMeshPro 在 VR 環境中顯示中文 .................................... 200
6.6.6 製作 SettingWindow 中的內容 ........................................................... 207
6.7 開發系統菜單的交互功能 .............................................................................. 210

第 7 章 場景交互功能開發 ....................................................................................... 217
7.1 實現切換場景風格的功能 .............................................................................. 217
7.1.1 導入材質資源 ...................................................................................... 217
7.1.2 編寫腳本來實現材質切換 .................................................................. 218
7.2 實現調節場景畫質表現功能 .......................................................................... 222
7.2.1 實現原理 .............................................................................................. 222
7.2.2 獲取 Slider 控件的數值....................................................................... 222
7.2.3 動態修改特效參數 ............................................................................. 228
7.3 開發繪畫作品介紹的交互功能 ...................................................................... 234
7.3.1 交互設計思路分析 ............................................................................. 234
7.3.2 創建文字介紹 UI 並實現交互功能 ................................................. 234
7.4 開發作品的視頻播放功能 .............................................................................. 240
7.4.1 Video Player 組件簡介 ........................................................................ 240
7.4.2 創建視頻播放載體 ............................................................................. 241
7.4.3 設置 Video Player 組件 ....................................................................... 242
7.4.4 實現視頻播放控制功能 ...................................................................... 243

第 8 章 項目的導出 .................................................................................................. 248
8.1 提高照明參數烘焙光照貼圖 .......................................................................... 248
8.2 UI 界面優化 .................................................................................................... 249
8.3 解決材質導出後不顯示的問題 ...................................................................... 250
8.4 項目導出設置 ................................................................................................. 252

附錄 A:Unity 2020 發行說明(XR 相關) ................................................................ 255