多人 VR 环境
在这个选题中,你需要实现一个完整的多人在线 VR 环境。该环境可以是一个旅游场景、校园、室内等任意环境,用户拥有自己的虚拟形象,可以在这个环境中模拟真实世界中的操作,如行走、交流等。以你选择的环境为主题,添加相应的功能,如景点介绍(旅游场景)、基于 LBS 的聊天(校园)、游戏(室内)等。
这个网站具有以下特点:
- 模拟真实世界中的环境:远程旅游,不受时空限制;
- 多人可以选择化身进入同一个环境:社交因素的引入;
- 数字化的虚拟世界可以方便地进行用户行为的分析:化身在虚拟世界中的行为可以被记录下来进行分析,比如行走路线、速度等。
系统基本功能与流程
功能要求
基本功能
-
支持多人加入同一个虚拟世界(采用 Web3D + WebSocket 构建)中:
- 相互可见,并且行为共享;
- 可以进行一定方式的交流;
- 环境中可以有一些可交互性的实体,如可以打开的门。
-
维护虚拟世界的一致性。
-
比如后面加入的化身看到的是虚拟世界中的最新情况,比如之前加入化身的最新位置,而在其他化身看到的世界中则加入了新的化身。
进阶功能
- 加入一些人工智能因素,增加一个由计算机控制的智能虚拟人(NPC),比如导游服务员。可以根据用户化身的行为做简单的响应,比如介绍景点等。
- 在环境中的实体可以采用语义Web技术加入描述,甚至可以支持推理。
附加说明
- 3D建模和动画不是课程重点,不要求建模非常逼真,甚至可以是采用下载的模型。
使用流程
注:本节中截图仅为示例说明,图示功能不会和要求100%契合,只可作为参考,实际功能以文字说明为准,具体界面设计和功能安排可自由发挥。除了这些页面外,你可以根据你的场景需要添加其他页面和交互。
登录注册页面
- 用户能够通过用户名和密码登录和注册。注册时需要完善用户名、密码、昵称并选择虚拟形象。
- 登录后进入多人 VR 环境。
多人 VR 页面
- 提供一个多人在线的 VR 环境,参见之前的功能要求。
- 根据你的场景,可选提供实时聊天等定制功能。
用户后台页面
- 用户可以查看并修改自己的虚拟形象。
- 可选历史行为查看和分析功能。
技术实现
建议
- 采用前后端分离架构,
- Web 3D 展示建议 Three.js。
- 如果要实现协同聊天,建议使用 WebSocket。
参考资料
- 开源多人 VR 环境 Vnet(Java + VRML)的介绍和源代码。
- 基于 WebGL 的 KataSpace (Sirikata) 参考文档。
- 助教在年轻的时候写的一个 3D 虚拟校园,比较粗糙。支持多人在线聊天,能够移动并互相看到其他用户的位置(https://github.com/geeeeeeeeek/webfudan)。
- 基于 three.js 和 WebSocket的迷宫对战程序。
参考技术路线
评分细则
分数组成
-
基本功能分:即完成系统基本内容与流程,满分 100 分。
-
进阶任务分:推荐选做助教列举的功能,能力较强的同学可自定义增加附加功能,最多 30 分。
-
个人工作分:根据小组分工及个人完成工作量得分。每组组员该项分数总和 30 分,根据贡献比例分摊。
个人最终得分 = 基本功能分 + 进阶任务分 + 个人工作分,值域为 [0, 160]。
评分点
功能项 | 得分项 | 最高分数 |
---|---|---|
基本流程 | 注册和登录页面 | 5 |
(20分) | 多人 VR 页面 | 10 |
用户后台页面 | 5 | |
VR 场景 | 正确显示一个可交互的 3D 场景 | 10 |
(50分) | 支持多人加入同一个虚拟世界 | 10 |
正确更新其他用户的位置、行为变化 | 10 | |
场景的创意、功能的完成度和交互的丰富程度 | 10 | |
多用户间的交流等交互功能 | 10 | |
工程能力 | 文档 | 5 |
(30分) | 系统架构 | 10 |
代码风格 | 5 | |
项目完整度和易用性 | 10 | |
附加功能 | 采用语义 Web 描述环境中的实体 | 5 |
(30分) | 模型、动画、场景的美观程度 | 10 |
简单响应用户化身行为的人工智能 | 10 | |
将服务器部署到公有云上 | 10 | |
使用 Docker 部署服务器 | 5 | |
其他合理的附加功能 | 30 |
评分点说明
- 每一项的分数取决于该项功能的完成度。完成度和可用性越好,分数越高。
- 项目完整度和易用性评价标准:
- A. 最低要求为必须实现并完成规定的用户功能与操作。核心功能和技术都有实现,在应用逻辑和实际操作便捷性上可以不做考虑。
- B.基本要求为实现并完成规定的用户功能和操作,并设计合理便捷的操作流程,系统各部分衔接过度自然,方便使用。
- C.进阶要求为实现并完成规定的用户功能、操作和进阶加分项,形成一套完整的可发布的应用逻辑。
- A、B、C 分别对应 0 - 3 分,4 - 6 分,7 - 10 分。
- 附加功能必须在文档中明确写出,概述该功能并简要描述实现。
- 项目设计文档需要至少包含:
- 项目组织以及其中每个文件的说明。
- 关键功能实现的细节。
- 服务器部署配置的详细介绍。
- 团队分工文档需要至少包含:
- 团队成员、分工、具体完成工作,列出每个人的贡献比例。
- 其他你们想说明的问题。
提交
- 提交物包含以下两项:
- 源代码:推荐使用 Git 进行协作,提交到 GitHub 等 Git 托管平台上。
- 文档:推荐使用 Markdown 编写项目文档,与源代码一同提交到 Git 托管平台上。
- 源代码与文档需要压缩打包提交到 FTP 上,文件名中请包含小队所有成员的姓名与学号。
- 友情提示:请尽早开工,本学期只有一个 Project,临时赶工很有可能完不成。