注册 | 登录读书好,好读书,读好书!
读书网-DuShu.com
当前位置: 首页出版图书科学技术计算机/网络图形图像、多媒体、网页制作虚拟现实原理与开发:基于 Unity 的 VR 技术实现

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

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

定 价:¥109.00

作 者: 邵伟 著
出版社: 电子工业出版社
丛编项:
标 签: 暂缺

购买这本书可以去


ISBN: 9787121444845 出版时间: 2022-11-01 包装: 平装
开本: 16开 页数: 272 字数:  

内容简介

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

作者简介

  邵伟,Unity 价值专家(UVP),两届高通Qualcomm XR 创新应用挑战赛评委和技术导师,公众号“XR技术研习社”(ID:XRStudy)主理人,腾讯课堂同名银牌机构创始人。出版教材《Unity VR 虚拟现实完全自学教程》和《Unity 2017 虚拟现实开发标准教程》,录有《VR博物馆项目实战教程》、《SteamVR 2.x 交互开发指南》、《Pico VR 应用开发基础教程》、《HTC VIVE房产项目实战教程》、《HTC VIVE开发实例教程》、《VR写实材质技术实例教程》等在线课程,累计视频时长超过5000分钟,线上线下培训学员共计超3000人,目前专注于VR/AR技术教育工作。

图书目录

第 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

本目录推荐