基于虚拟现实的秦淮灯会沉浸式交互体验
2022-01-20王佳祺程明智赵云帆李骏宇
王佳祺 , 程明智 , 刘 龙 , 洪 宇 , 赵云帆 , 李骏宇 , 杜 萌
(1.北京印刷学院,北京 102600;2.三十五中国际部高二英才班,北京 102606;3.中国农业大学,北京 100091)
虚拟现实技术是利用计算机模拟虚拟环境从而给人以环境沉浸感。各行各业对VR 技术的需求日益旺盛,特别是传统文化领域。由于传统文化有其独特的地域特征,人们必须到指定地区才能体会到特别的传统文化。通过虚拟技术与传统文化的结合,从内容传播的角度来说,突破了空间、时间的限制,同时以一种新兴有趣的内容展现形式[1],帮助优质文化得以传播;从文化保护的角度来说,一方面让消失的历史重获新生[3],另一方面作为数据库保留,为日后研究提供资料[2]。因此,传统文化与虚拟现实结合的应用有重要意义。
秦淮灯会的历史十分悠久,它是南京民间文化和民俗活动的品牌[6]。秦淮灯彩是秦淮灯会最亮丽的主角,也是南京民间手工艺术的特色品牌,更是非物质文化遗产保护与利用的成功范例,但以秦淮灯彩为主要内容的秦淮灯会并未在文化数字孪生上做过多的规划。所以,本作品将秦淮灯会文化与虚拟现实技术结合,让用户通过沉浸式交互体验,感受秦淮灯会的氛围并了解相关习俗,传播具有中国特色的传统灯会文化。
1 相关技术简介
1.1 虚拟现实技术介绍
虚拟现实(Virtual Reality,VR)[5]是利用电脑或其他智能计算设备模拟产生一个三维空间的虚拟世界,提供用户关于视觉、听觉、触觉等感官的模拟,让用户如同身历其境一般。可以及时、没有限制地观察三维空间内的事物。该技术的出现是计算机图形学、人机接口技术、传感器技术以及人工智能技术等交叉与综合的结果[4]。它是一种可以创建和体验虚拟世界的计算机仿真系统,利用计算机生成一种模拟环境,通过计算机技术产生的电子信号,将其与各种输出设备结合使其转化为能够让人们感受到的现象。
1.2 HTC VIVE 虚拟现实设备
本文开发使用的虚拟现实硬件是HTC VIVE。HTC VIVE 是由HTC 公司与Valve 公司联合开发的一款VR 头显产品,于2015 年3 月在MWC2015上发布,如图1 所示。借助Valve 庞大的应用体系和SteamVR 提供的技术支持,在Steam 平台上已经可以体验多种虚拟现实的应用。HTC VIVE 虚拟现实头盔的内置扬声器和110 度视野,以其优秀的视听表现,相比其他虚拟现实头盔能够为玩家带来最全面、最完整的VR 虚拟现实体验。
图1 HTC VIVE
1.3 UnityUI 介绍
UGUI 是Unity 官方的UI 实现方式,自Unity4.6 以后,Unity 官方推出了新版UGUI 系统。新版UGUI 系统相比于OnGUI 系统更加人性化,而且是一个开源系统,利于游戏开发人员进行游戏界面开发。UGUI 系统具有3 个特点:灵活、快速和可视化。对于应用开发者来说,UGUI 有运行效率高、执行效果好、易于使用、方便扩展,与Unity3D 兼容性高等优点。UGUI 为广大开发者提供了一些常用的控件,包括文本显示、图片显示、按钮、复选框、滑动条、滚动条、下拉菜单、输入框、滚动视窗等,利用这些控件可以快速搭建界面。但是在虚拟现实环境中,无法直接利用UGUI 进行用户界面的交互,需要结合射线和额外的脚本实现与用户界面的交互,在本文3.1 中会进行详细介绍。
1.4 SteamVR2.0 插件介绍
SteamVR Unity Plugin2.0(简称SteamVR2.0),是由Value 公司开发的集成VR 功能的插件,其中提供了传送、抓取、物理系统等功能,并且提供了一个示例场景供用户学习。相较于SteamVR1.0,SteamVR2.0 能够使开发者在编程中更专注于用户的动作,改为使用SteamVR Input System,开发人员可以在应用程序之外定义默认的动作并与按键进行绑定,而不需要将输入视为某一特定设备的特定按键。同时,SteamVR2.0 将人物功能封装成一个预制体,让用户可以直接使用。本文利用了Steam-VR2.0 中预设的人物(Player)作为用户视角,手柄射线及手柄预设动作制作交互内容。
2 沉浸式交互作品分析
2.1 功能介绍
本作品在虚拟现实环境中,以秦淮灯会为主要呈现场景,利用手柄体验制作灯彩的过程,并在场景中呈现有关秦淮灯会习俗的介绍和互动。在场景一中,用户需要借助手柄,将灯彩需要的灯架、带不同花色的明纸、灯芯、灯柄进行组装,制作完成一盏属于自己的彩灯后,进入场景二参观秦淮灯会。场景二是体验秦淮河游船和灯会民俗,利用匀速游船功能在秦淮灯会中进行沉浸式的游船体验,同时也可以利用手柄和射线在民俗店进行猜灯谜、挂灯笼、赏糖画等活动。
2.2 流程设计
本作品的流程设计如图2 所示。在场景一中,利用SteamVR2.0 实现灯彩制作需要的交互。进入场景二后,利用代码实现匀速游船功能,同样利用SteamVR2.0 实现水面场景的传送和与民俗店铺的交互体验功能。
图2 作品流程图
2.3 场景一:灯彩制作
本作品用户提供了莲花灯、金鱼灯、兔子灯三种可以进行体验制作的彩灯。第一步为彩灯骨架制作,用户需要按照桌面上提示的步骤依次将彩灯骨架利用手柄拾取,SteamVR2.0 赋予了骨架物理属性,让用户可以拾起骨架,实现骨架拼接,紧接着拾取桌面上新出现的花纹明纸为彩灯进行裱糊,接下来为拾取灯座安装在裱糊完成的灯笼的底部,完成彩灯的外形制作,最后,拾取灯芯,放入灯彩中间的空隙中,可以从外面看到灯芯在发光。完整的灯彩制作完成,用户依照流程进入下一个场景。如图3 为兔子灯制作的效果图。
图3 兔子灯制作的效果图
2.4 场景二:秦淮灯会
在这个场景中,实现了游船功能,用户坐在小船上在河中央进行游览,按动手柄的按键进行匀速前进,更像是在现实中划船的感觉,提升了位移的沉浸感。利用SteamVR2.0 实现了三种不同馅料的元宵制作、猜灯谜、挂灯彩,赏糖画等民俗活动,让用户在虚拟场景中体验秦淮民俗。
3 功能实现
3.1 基于手柄射线和UGUI 的用户界面实现
早期使用较多的是NGUI 插件,现在Unity 为开发者提供了非常完善的图形化界面解决方案:UGUI 图形界面系统。在SteamVR 插件中没有与UGUI 交互的预设,因此本文结合插件中的射线脚本(SteamVR_LaserPointer.cs)和下文中提到的脚本进行射线与UGUI 的交互功能的实现。
实现脚本如下:
3.2 游船功能
作品中的秦淮灯会场景中,主要使用按键控制的匀速位移作为主要移动方式,使用SteamVR 2.0内置的Teloporting 和TeleportPoint 组件。将插件中的Teleporting.prefab 拖入场景,即可开启传送功能,按圆盘即可发出传送贝塞尔曲线,将Teleport-Point 为传送点,直接拖入场景中需要传送到达的位置,实现比较完善的传送功能(如图4)进行辅助位移。
图4 Teleport 功能
3.2.1 匀速位移功能实现
匀速位移主要通过以下代码进行实现:首先判断用户的移动状态,即上键(下键左键右键同理)被按下时,player(用户)的位置将在世界空间范围内以自身为原点,向前位移,摄像机的朝向决定了位移的方向,按下按键的时间和用户设定的速度(speed 值)决定了位移的距离。
3.2.2 实现效果展示
作品中游船功能的实现效果如图5 所示。用户站在船上,图中为HMD(头戴式显示器)中的画面,遵循默认按键的预设,用户可以利用圆盘键的上下左右进行位移,HMD 的视点可以调节移动的方向。在秦淮河上游览时,可以使用传送功能到达各个民俗的体验区,制作不用馅料的元宵作为纪念品放置在船上,与灯笼互动进行猜灯谜、挂灯彩、赏糖画等民俗活动。
图5 游船功能实现效果
4 结语
本作品利用Unity3D 开发引擎和SteamVR2.0插件实现了以制作灯彩和秦淮灯会习俗体验为主要功能的秦淮灯会沉浸式交互体验。作品主要分为两部分,第一部分中提供了三种不同的灯彩制作的全流程体验,第二部分是秦淮灯会两种民间习俗的游船体验。未来对于作品的优化方向主要分为两个方面,美术效果的优化和针对作品功耗的优化。美术效果主要是针对灯彩制作部分和整体场景。灯彩的外层明纸效果与现实还存在一定差距,物理系统也不够完善,场景的灯光、材质都可以更加还原现实。在实际测试中,发现夜游秦淮场景中,河水和灯光的GPU 占有量非常高,场景中Shader 的变体数量也非常多,在后续优化中,会排除不需要的变体,同时优化河水的材质,将场景灯光提前烘焙成LightingMap,以减少场景实时光照的计算量。