目录
第1章虚拟现实技术概论1
1.1虚拟现实技术的产生与发展1
1.2虚拟现实系统的特征2
1.3虚拟现实技术的应用2
1.4虚拟现实的基础技术3
1.4.1双目立体视觉3
1.4.23D建模技术4
1.4.3自然交互技术4
1.5虚拟现实技术的分类5
1.6虚拟现实技术的最新发展6
1.7虚拟现实技术的应用前景6
第2章基于图像的虚拟现实: 全景虚拟现实技术8
2.1基于全景的虚拟漫游8
2.1.1全景拍摄8
2.1.2全景相机及其拍摄技巧9
2.1.3全景漫游9
2.1.4全景漫游的应用领域10
2.2全景漫游制作11
2.2.1导入全景图片11
2.2.2设置初始场景与默认视图11
2.2.3制作Tour Map12
2.2.4用皮肤功能实现导览13
2.3基于云平台实现全景VR展示15
2.3.1全景漫游的发布与展示15
2.3.2物体全景展示18
第3章基于建模的VR还原展示21
3.1SketchUp建模基本步骤21
3.1.1准备工作21
3.1.2SketchUp建筑架构21
3.1.3SketchUp细节刻画23
3.2Lumion材质及渲染基本步骤24
3.2.1SketchUp模型导入Lumion24
3.2.2Lumion材质赋予24
3.2.3Lumion细节刻画25
3.2.4Lumion动画渲染及VR全景26
第4章移动增强现实展示技术28
4.1基于Web及移动端的AR创作平台28
4.1.1Blippar28
4.1.2Vuforia29
4.1.3Vuforia的使用流程29
4.2AR Foundation及其使用30
4.2.1开发框架搭建30
4.2.2AR Foundation的Image Tracking 图像跟踪31
4.2.3AR Foundation的距离控制32
4.2.4AR Foundation的平面检测与物体放置32
4.2.5AR Foundation的3D物体识别跟踪33
4.2.6AR Foundation的人脸检测跟踪36
4.2.7阴影效果制作37
4.3基于绘画的AR立体海报制作37
4.3.1绘画准备37
4.3.2软件调试37
4.3.3静态AR海报39
4.3.4动态AR海报43
4.4微信小程序AR开发 43
4.4.1微信官方XRFrame开发指南43
4.4.2Kivicube插件快速入门44
4.4.3开发建议45
第5章基于AI的三维内容创建及网络发布46
5.1AI在三维创作中的应用46
5.1.1基于Nerf的三维扫描46
5.1.2基于文本生成3D47
5.2相关应用介绍47
5.2.1Luma AI47
5.2.23Dpresso48
5.3视频+AI生成3D模型的拍摄方法48
5.3.1手机环绕拍摄48
5.3.2旋转台拍摄模式49
5.43D Gaussian Splatting使用51
5.4.1核心概念简介51
5.4.2主流软件工具教学52
5.4.3推荐工作流程53
5.4.4官方 GitHub 项目简介 54
5.4.5基于全景相机与3D高斯泼溅实现三维重建54
第6章Cardboard VR开发55
6.1Cardboard 纸盒55
6.1.1裸眼3D55
6.1.2Cardboard55
6.2Unity56
6.3Node.js57
6.4Blender58
6.5Cardboard 纸盒的组装和调试59
6.6Unity导入Cardboard的场景和基本配置60
6.6.1资源包的导入60
6.6.2配置Android项目64
6.7手柄键位与输入管理器68
6.8Unity和Node.js的通信尝试71
6.9Blender建模与导入76
6.9.1软件下载76
6.9.2软件使用76
6.9.3模型导入78
6.10构建多人参与的元宇宙场景81
6.11官方例程81
6.12多玩家场景内容设计83
6.13玩家角色的构建83
6.14通信接口与服务器端的编写84
6.15角色运动84
第7章VR科普读物制作 87
7.1制作准备87
7.1.1Unity安装87
7.1.2VS软件安装87
7.1.3资源准备88
7.2科普读物设计88
7.2.1科普读物概念设计88
7.2.2明确工程任务88
7.3图片墙场景搭建89
7.3.1图片墙搭建89
7.3.2图片墙旋转设置89
7.3.3VR搭建准备 91
7.3.4VR场景搭建93
7.3.5VR视野旋转94
7.3.6图片交互效果(1)95
7.3.7图片交互效果(2)97
7.3.8VR端UI交互99
7.4模型场景搭建100
7.4.1模型的检索100
7.4.2模型的展示101
7.4.3辅助功能实现102
7.7.4手柄输入检测103
7.5场景切换设置105
7.5.1场景切换105
7.5.2场景切换中的信息传递106
第8章FPS类VR游戏开发109
8.1Unreal Engine与Blueprint109
8.2角色蓝图的创建——Pawn110
8.2.1蓝图的类110
8.2.2角色蓝图的组件110
8.2.3枚举类型的准备111
8.2.4关于GrabComponent的修改112
8.2.5关于TryGrab的修改112
8.2.6关于TryRelease的修改115
8.2.7相机与手部动画初始化116
8.2.8手部动画蓝图118
8.2.9瞬移120
8.2.10摇杆移动125
8.3道具蓝图的创建——枪械127
8.3.1手枪类蓝图设计127
8.3.2步枪类蓝图设计129
8.3.3冲锋枪类蓝图设计130
8.4人工智能蓝图的创建131
8.4.1AI动画131
8.4.2AI蓝图134
8.4.3AI枪械137
8.4.4AI行为树139
8.4.5AI Controller142
8.5开发环境143
第9章UE制作交互车145
9.1案例概述145
9.1.1编辑界面145
9.1.2成果预览145
9.1.3功能介绍145
9.2素材获取147
9.2.1具体目标147
9.2.2具体步骤147
9.3鼠标控制车门和后盖开关151
9.3.1具体目标151
9.3.2实现原理151
9.3.3具体步骤151
9.4鼠标实现视角控制166
9.4.1具体目标166
9.4.2实现原理166
9.4.3具体步骤166
9.5UI按钮更改车辆颜色172
9.5.1具体目标173
9.5.2实现原理173
9.5.3具体步骤173
9.6UI按钮实现环境光的开关186
9.6.1具体目标186
9.6.2实现原理186
9.6.3具体步骤186
9.7UI按钮实现车灯开关188
9.7.1具体目标188
9.7.2实现原理188
9.7.3具体步骤189
9.8UI按钮实现镜头切换196
9.8.1具体目标196
9.8.2实现原理196
9.8.3具体步骤197
第10章混合现实203
10.1混合现实与增强现实203
10.2混合现实产品204
10.3混合现实的应用场景204
10.4混合现实开发: Mixed Reality Toolkit205
10.4.1Mixed Reality Toolkit 205
10.4.2MRTK的核心功能206
10.4.3全息图与空间音效206
10.4.4混合现实MR场景的基本元素207
10.5HoloLens 2交互方式及实现207
10.5.1用手直接操作物体207
10.5.2按钮209
10.5.3语音反馈210
10.5.4滑杆反馈212
10.5.5案例: 通过滑杆改变物体颜色212
10.5.6基于BuildingBlock的交互设计213
10.6跨设备混合现实: Azure空间定位点216
10.6.1Azure空间定位点216
10.6.2空间定位点应用情形217
10.6.3创建及使用空间定位点217
第11章基于WebGL的VR、AR与MR218
11.1AFrame218
11.1.1基础语法218
11.1.2定义物体与动画219
11.1.3定义交互220
11.1.4事件侦听220
11.1.5基本体建模案例: 地球221
11.1.6全景展示案例222
11.1.7GLTF模型展示案例222
11.1.8基于AFrame的AR223
11.1.9四季原理AR案例224
11.2X3D与X3DOM225
11.2.1基本几何体 226
11.2.2基本几何体: 球体与星球228
11.2.3全景展示228
11.2.4动画228
11.2.5交互229
11.3Three.js 230
11.3.1基本几何模型的创建230
11.3.2使用Three.js创建3D场景232
11.3.3Three.js中创建灯光233
11.3.4Three.js加载3D模型文件234
11.3.5动画235
11.3.6交互239
11.4基于Three.js实现混合现实功能247
11.5使用Babylon.js创建HoloLens混合现实应用249
11.5.1创建基本 html标记249
11.5.2创建场景250
11.5.3添加3D元素250
11.5.4添加相机250
11.5.5添加灯光251
11.5.6添加互动251
11.5.7启用WebXR沉浸式体验252
11.6基于网页的协同式VR253
11.6.1VR协同对分布式网络的需求254
11.6.2VR在线协同的分布式数据库255
11.6.3用户管理和DB、ASP255
11.6.4分布式虚拟环境和Web255
11.6.5设计与实施255
11.6.6实施259
11.6.7每个参与者的拓展259
11.6.8教师教学演示过程260
11.6.9教师将权限交予学生260
11.7基于AI赋能3D Web开发261
11.7.1引言: AI在3D Web开发中的新角色261
11.7.2核心工具与技术栈261
11.7.3教程核心: AI辅助的开发工作流262
11.7.4场景搭建示例: AFrame (最快的方式)262
11.7.5场景搭建示例: Three.js (最灵活的方式)263
11.7.6场景搭建示例: X3DOM (声明式的方式)265
11.7.7AI 辅助交互与调试266
11.7.8总结: AI 驱动的开发新范式267
第12章混合现实录制、虚拟拍摄与虚拟直播268
12.1混合现实录制268
12.1.1面向Meta Quest的混合现实录制269
12.1.2面向Pico Neo的混合现实录制270
12.1.3开发支持混合现实录制的PicoVR游戏270
12.2虚拟拍摄272
12.2.1HTC VIVE MARS CamTrack272
12.2.2HTC VIVE MARS CamTrack设置273
12.3虚拟直播274
12.3.1虚拟直播的发展经历274
12.3.2强相关虚拟直播的受众——以ASOUL为例277
12.3.3弱相关虚拟直播的受众278
12.3.42D直播工作流278
12.3.53D直播工作流282
12.3.6虚拟直播企划的运营现状284
