科技>计算机>多媒体技术
虚拟现实原理与开发:基于 Unity 的 VR 技术实现  

虚拟现实原理与开发:基于 Unity 的 VR 技术实现  "

作者:邵伟
ISBN:9787121444845
定价:¥109.0
字数:435千字
页数:272
出版时间:2022-11
开本:16开
版次:01-01
装帧:
出版社:电子工业出版社
简介

随着5G、人工智能、云计算等技术的发展,虚拟现实技术将在医疗、教育、工业等场景中发挥重要的作用。同时,它还是通向元宇宙的重要入口和体验场景之一。 因为Unity是当前业界领先的VR/AR内容制作工具,所以本书基于Unity编辑器对其进行讲解。本书主要分为两大部分:第一部分讲解SteamVR 2.x Unity插件的功能,包括新引入的动作机制和Interaction System;第二部分以一个完整的VR项目为例,带领读者从零起步,从项目创建开始,到最终导出为可交付的应用程序。各章还会介绍在项目制作过程中涉及的核心技术,包括但不限于场景搭建、制作VR中的UI、使用第三方工具制作材质资源、烘焙场景的光照贴图、交互开发等。

前言

北京时间 2021 年 10 月 29 日,Facebook 公司的 CEO 扎克伯格在 Connect 2021 大会上宣布,将会注重元宇宙的开发、扩展与应用,并将公司名称由“Facebook”改为“Meta”。与元宇宙关系密切的虚拟现实技术再次获得公众的极高关注。 虚拟现实(Virtual Reality,VR)不是元宇宙的全部,却是通向元宇宙的重要入口和体验场景之一。无论是 VR 还是元宇宙,目前都处于行业发展初期,其基础设施还有非常大的提升空间。VR 技术对于开发者尚存在一定的门槛,零基础的朋友对于项目制作流程尚存在疑虑,所以本书主旨在于为初学者解答以上问题,并带领大家从零开始制作一个完整的 VR 项目。 Unity 是当前业界领先的 VR/AR 内容制作工具,全球 60%以上的 VR/AR 内容是基于 Unity进行制作的。Unity 为制作优质 VR 内容提供了一系列先进的解决方案,无论是 VR、AR 还是MR,都可以依靠 Unity 高度优化的渲染流水线和编辑器的快速迭代功能,使项目需求得以完美实现。基于跨平台的优势,Unity 支持所有新型主流平台。本书将以 Unity 为主要创作工具,介绍与其相关的 VR 技术,以典型的 VR 解决方案 SteamVR 为目标平台,讲解 VR 应用程序制作的方方面面。 本书的主要内容 本书内容将围绕 Unity 2020 LTS 及其配套的通用渲染管线(URP)展开,介绍当前主流的VR 软件开发平台——SteamVR,而硬件开发平台则以 HTC VIVE 为主。本书通过讲解完整项目的制作流程,使读者能够从设计、开发、策划等方面对一个 VR 项目的制作流程产生更加深刻的认知。 第 1 章:本章介绍 SteamVR 2.x Unity 插件、SteamVR 动作的概念及使用方法,以及 Interaction System 的主要交互模块。 第 2 章:本章介绍制作 VR 项目前的准备工作,为后续工作的开展做好准备。 第 3 章:本章介绍如何使用 Unity 光照技术为 VR 项目场景构建光照表现。 第 4 章:本章介绍如何使用材质制作工具为项目场景中的模型制作 PBR 材质。 第 5 章:本章介绍如何使用 SteamVR Unity 插件开发项目的 VR 交互功能。 第 6 章:本章介绍如何制作 VR 环境中使用的 UI 元素,并借助第三方插件设计和制作 VR项目中使用的系统菜单。 第 7 章:本章介绍如何结合 Unity 基础知识为项目开发综合交互功能,包括切换场景风格、调节渲染画质、呈现视频元素等。 第 8 章:本章介绍如何将制作的 VR 项目导出为可交付的应用程序,同时介绍导出前需要注意的技术细节。 附录 A:Unity 编辑器推出的新版本通常会带来功能的添加、API 的变更、性能的提升等变化,而了解每次版本的更新情况有利于为项目选择合适的 Unity 编辑器,因此附录 A 介绍了 Unity 2020 版本在历次更新过程中带来的与 XR 相关的发行说明。 本书不仅为读者提供了与实例配套的资源,还可以根据作者在书中提到的文件存储路径,从随书资源中找到对应的素材。 关于 SteamVR 2.x 与 SteamVR 1.x 所共有的部分功能,作者在《Unity VR 虚拟现实完全自学教程》一书中已经做了相关介绍,受限于篇幅,本书将不再赘述.

目录

第 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

作者简介

编辑推荐

作者寄语

电子资料

www.luweidong.cn

下一个