一、项目重述
项目重述如下:
- 在移动端设计一个可参与的创作平台,结合计算机视觉相关技术,获取物理空间中的迷宫设计图;
- 将移动端获得的迷宫数据转换为三维虚拟场景,并在VR端呈现;
- 开发基于Unity 3D的双人体验系统,并实现用户在虚拟迷宫中的漫游和交互;
- 要求实现“VR + VR”形式: 两名用户佩戴 VR头盔进行漫游并协作;
- 要求采用的VR交互技术:人体运动跟踪、控制用户在虚拟场景中漫游、手势交互等。
三、项目核心技术与亮点
- 基于原生Android与OpenCV,高精度识别物理空间中的迷宫布局;手绘迷宫识别错误率趋近0%,实际应用环境迷宫识别错误率约5%;
- VR端场景较为恰当,组件多样;既可以单人体验,也可以多人交互,动作捕捉较为灵敏准确,使用方式灵活可靠。
- 利用Spring Boot和Vue的架构、基于HTTP的统一通讯手段,建立起了强数据一致性的服务控制端,可以实时更改迷宫布局,增加了游玩的趣味性。
四、系统架构概述
4.1 设备与开发环境
- 使用交互设备:Android智能手机(Android 6.0 及以上)、爱奇艺小阅s VR眼镜盒子、Kinect、笔记本电脑(Windows 10 及以上);
- 开发平台:Unity2021.3、Android studio 2021、Visual Studio 2020、IntelliJ IDEA 2021;
- 开发过程中使用的SDK:OpenCV for Android SDK、GoogleVRForUnity_1.200.1、 Kinect for windows SDK v2.0;
4.2 系统架构
4.2.1 系统架构简述
- 移动端:输入一张图片,经过算法的处理,输出迷宫的结构,用简短的数据结构来描述迷宫数据,最终完成向服务器的数据传输。
- VR端:此部分放在VR眼镜盒子里供用户体验,需要根据服务器数据,向用户展示三维空间景象。
- 服务器端:服务器端负责连接Kinect、识别用户动作、并且发送到VR端,控制端负责实时更新迷宫的状态,并且把最新的布局反映到VR端。
4.2.2 系统架构图
主要功能模块图示:
五、项目需求与可行性分析
5.1 移动端需求与可行性分析
5.1.1 用户界面设计
在界面设计中,我们希望设计的界面符合课上讲述的各类 GUI 设计原则的要求:
- 桌面隐喻:桌面隐喻是一种用于设计图形用户界面的技术,它将计算机界面模拟成一个现实生活中的办公桌面。在这个桌面上,用户可以看到和操作各种图标、文件夹和工具栏等,就像在现实中使用一件物品一样。
- 直接操作:直接操作是一种用户与计算机交互的方式,它允许用户直接通过物理手势或触控来操作界面元素,而不是通过命令或鼠标指针等间接的方式。这种方式可以让用户更快速、直接地完成任务,并且更容易理解系统的反馈。
- 所见即所得:所见即所得是一种界面设计的原则,它允许用户在编辑器中看到最终的输出结果。
5.1.2 图像获取方式
在实验中,我们需要获取场景中已经标记好的迷宫,需要通过拍照实现。除此以外,我们还希望可以上传图片的方式进行处理,从而应对实验环境中没有已标记迷宫的问题。
5.1.3 图像处理流程
我们希望能使用OpenCV完成图像的处理,识别图像中的迷宫,并生成格式化的迷宫数据。OpenCV是一个用于计算机视觉和机器学习的库,可以用来进行文件扫描和图像处理。下面是使用OpenCV进行处理的主要流程:
- 导入必要的SDK并获取文件列表;
- 对图像进行预处理;
- 对处理后的图像进行分析;
- 图像透视变换与直线识别;
- 模糊处理;
- 结果输出。
5.1.4 数据约定与数据传输
由于需要将迷宫识别的结果发送给服务器,我们在开发前约定了传输的数据格式:通过40位长的01字符串,按照行优先的顺序对应到迷宫的每一条边上,以此表示迷宫的结构。
5.2 VR与服务器端需求与可行性分析
5.2.1 控制平台设计及三维虚拟场景呈现
- 创作平台的设计需要简单易用,同时还要保证其能够获取物理空间中的设计图,这需要使用相应的技术实现图像识别和数据采集。
- 将物理空间中的设计图转换为三维虚拟场景需要使用三维建模技术,同时需要确保转换后的虚拟场景与原图的精度和比例一致,否则可能会影响用户的使用体验。
- 在VR端呈现虚拟场景需要使用VR技术,包括虚拟现实设备、渲染引擎、交互技术等,同时需要注意性能和体验的平衡,以确保用户可以流畅地体验虚拟场景。
5.2.2 双人体验系统设计及虚拟迷宫转换
- 双人体验系统需要支持两名用户的佩戴VR头盔进行漫游和协作,这需要使用实时通信实现用户间的数据传输和场景同步。
- 将二维迷宫转换为三维虚拟迷宫需要使用三维建模技术和数据转换技术,同时需要注意迷宫的设计精度和用户可操作性,以确保用户可以顺畅地进行漫游和交互。
- 实现用户在虚拟迷宫中的漫游和交互需要使用虚拟现实技术,包括头部追踪、手部追踪、碰撞检测、物理模拟等,同时需要注意用户体验和场景性能的平衡,确保用户可以愉悦地探索虚拟迷宫。