基于虚拟现实的脑认知训练系统框架及关键技术
2019-01-18高鹤文孙灿燃房婷婷骆岩林
高鹤文, 孙灿燃, 房婷婷, 骆岩林
(北京师范大学 信息科学与技术学院,北京 100875)
脑认知训练包括记忆力、注意力、感知觉、执行能力、语言和逻辑判断等训练。大量研究表明,人的脑认知能力可以通过后天的针对性脑认知训练手段得以改变并提高[1]。脑认知科学作为人类前沿科学,其重要的研究内容是揭示大脑在生理和病理状态下的工作机制[2]。
随着计算机技术的发展,尤其是虚拟现实技术的出现,促进了脑认知训练方面的发展。虚拟现实技术在脑认知训练方面有着其他技术无法比拟的优势[3]。虚拟现实游戏通过自身逼真的游戏效果、多样的交互方式、立体的三维世界,让使用者产生接近现实的亲身体验[4]。同时,在虚拟现实游戏中,用户在虚拟空间中的运动是不受限制的,可以自由出入,这是传统模拟游戏与虚拟现实游戏之间的最大差别,也是虚拟现实技术赋予游戏的独特魅力[5]。
目前,虚拟现实技术已经应用于社会生活中的多个领域,同时虚拟交互系统的开发也成为了国内外研究热点。国外已有众多相关实例用于脑认知障碍恢复及脑认知能力增强。在芬兰、美国等国家出现了大脑健身房,主要通过各种电脑软件对参与者进行脑力训练,帮助改善记忆力、逻辑判断等脑认知能力,但患者需要掌握相应电脑技术,对老年用户操作难度高[6]。Gourlay等[7-8]使用虚拟厨房帮助患者再学习重要的日常生活技能。Lee等[9]通过虚拟超市对患者进行脑认知行为的评估和训练,使用头盔及跟踪器等设备创造自然的沉浸式环境,但是相关硬件不具备普及度。国外游戏公司开发出三维(3D)沉浸式交互游戏《Cerevrum》,提供脑认知训练,让用户更加自然地增进脑认知能力。然而,该游戏主要通过游戏手柄及头盔交互,而且题材为冒险类游戏,交互方式、游戏画面及题材均不适合老龄化群体。头盔的交互方式会使初次接触的老年人产生恐惧心理和不适感。
由表1可知,目前的脑认知训练系统缺乏针对性,尤其是针对老年人。现有技术大部分集中于非计算机手段,交互技术较原始,缺乏沉浸感。
表1 现有脑认知训练系统对比Tab.1 Comparative analysis of the existing brain cognition training systems
本文利用Unity3D软件,研究基于虚拟现实的脑认知训练系统的关键技术,内容包括开发流程、三维建模、场景交互等。
1 系统简介
1.1 开发环境
Unity3D是一个专业级的高质量游戏引擎,提供了可视化编辑工具,可以将艺术资源绑定在一起并对可交互对象进行编码,产品可以发布在 PC、Web和Mac 等平台上。Brushes工具是地形绘制画笔,用户可选择合适的画笔绘制地形;RaycastHit工具用于存储射线碰撞到的第一个对象信息,所以需要提前创建这个对象,用于碰撞信息的存储。Rigidbody(刚体)组件可使游戏对象在物理系统的控制下运动,刚体可接受外力与扭矩力,用来保证游戏对象像在真实世界中那样进行运动。Collider(碰撞器)是物理组件的一类,它要与刚体一起添加到游戏对象上才能触发碰撞,如果2个刚体相互撞在一起,有碰撞体时物理引擎就会计算碰撞,在物理模拟中,没有碰撞体的刚体会彼此相互穿过。
系统采用虚拟现实技术配合用户交互,使得用户可以佩戴虚拟现实设备在虚拟场景内漫游,实现翻牌、物体捡拾、场景切换等功能。本文基于Unity3D软件,结合头盔和手柄开发沉浸式虚拟交互系统。
1.2 系统组成
本文虚拟交互系统主要包括虚拟游戏环境建模、核心脑认知训练系统、交互接口、评测系统等4个模块,如图1所示。具体研究内容涉及以下几个方面:
(1)虚拟游戏环境建模
图1 系统主要模块Fig.1 Main module of the system
虚拟游戏环境建模模块负责虚拟环境中各类虚拟实体行为的状态更新、触碰检测以及环境特效,创建一个和现实世界相似的虚拟环境。虚拟游戏环境建模主要研究几何建模、物理建模和行为建模等方法。几何建模相对比较成熟。物理建模主要研究虚拟实体的运动学和动力学特性,为进一步提高逼真度,必须考虑虚拟实体的材料以及摩擦力、弹塑性和黏稠性等物理特性。
(2)核心脑认知训练系统的构成及功能设计
核心脑认知训练系统包括注意力、记忆力、感知觉、执行能力、语言、逻辑判断等子模块。本文以记忆力训练系统为例,实现脑认知训练模拟。
(3)系统测评技术
研究测评的具体指标和算法,设计简单、易用的评测界面,对老年人现有脑认知水平进行科学测评,推荐针对性强的脑认知训练。
(4)直观交互技术
主要研究如何使用直观交互工具以实施虚拟操作,使交互工具更加符合老年人的行为特征。采用HTC Vive虚拟现实头戴式显示器,通过手势定义对三维游戏场景进行交互。
外部整体地形中加入了天空、草地、树林、人物、动物、桌椅、水塔、灯塔、自行车等相应模型,实现了几何建模和物理建模。同时,草地、人物等按照物理规律进行行为运动,实现行为建模。结合HTC Vive虚拟现实头戴式显示器并利用手柄激光实现了瞬移(由于搭建地形较大,依靠定位器感知的位移对场地要求较高,因此添加此项功能),对拥有物理属性的物体实现了捡起、丢弃、碰撞、弹跳等物理行为属性。
2 关键技术
2.1 环境建模
基于Unity3D软件,创建三维地形、天空、树木等场景。以地形为例,首先使用3D object-terrain,根据场景模型进行数学建模,然后基于真实的地形数据进行加工,最后设置 “Brushes”画笔的Brush Size画笔宽度的取值范围为“Opacity”,绘制平滑地形。通过纹理映射的方式实现地面真实感的要求。采用二维数组来定义纹理,通过材质球的方式将二维纹理表面映射到三维场景表面。设置地形碰撞器,使之拥有反弹的性质,提高真实性和沉浸感。
模型的构建是虚拟场景实现的基础,模型的质感将直接影响到场景的真实感和沉浸感。本文构建的交互场景主要集中于室外场景。模型的构建基于Unity3D软件实现,并将模型以unitypackage的形式打包再导入Unity3D软件中。模型主要包括:建筑物、环境装饰、水塔、桌椅、自行车、柱子、光源等。考虑到系统开销和系统真实性的平衡,构建的模型主要采用多边形结构加纹理贴图的方式实现。
2.2 场景漫游
虚拟现实体验很重要的一点就是能够有足够的沉浸感,并且有很好的交互性。采用HTC Vive虚拟现实头戴式显示器实现视觉沉浸感,但是如果要进行交互操作,就需要更多的相关实际操控。系统中用户可以在场景中随意走动,观察周围不同景象,所以首要解决的问题是在虚拟环境中的移动问题。如果要实现最好的场景漫游体验,就要单纯靠自己的定位判断来操控用户移动。这个设定在HTC Vive虚拟现实头戴式显示器与Unity3D软件之间有相应接口,实际上每次移动只需要改变用户角色的位置即可。由于场景所含内容较多,并且占地面积较大,若采用真实移动来代替用户主角在虚拟场景中的移动则会使工作任务较大,而且使用户的漫游比较麻烦。同时,HTC Vive虚拟现实头戴式显示器场景搭建空间并不很大,不适合在真实场景中移动。因此,利用HTC手柄的TouchPad部分进行相关控制,实现用户的瞬移,即在场景中用户可随时改变自己所在位置,通过手柄操作切换到不同地点位置,同时结合头戴式显示器的旋转,从而实现在丰富场景中的漫游。
首先,在场景中添加激光笔Laser,并去掉 Box Collider 组件,使激光笔居中,漂浮在场景上空。然后,为该物体添加脚本文件,以实现手柄与激光笔的融合,触动扳机,手柄在场景上空发射出一条蓝色射线。从手柄发射激光,如果激光照射到某样物体,保存照射到的位置并显示激光。使用Unity3D软件中所提供的RaycastHit类,得到射线尽头与场景碰撞的点的坐标信息。松动扳机,切换用户视角所在照相机位置到射线尽头端点。通过扳机操作,用户便可在场景中实现瞬移,使漫游的速度大幅提升。
2.3 碰撞检测
为实现场景切换,使用碰撞体的触发器功能。在Unity3D软件中,游戏物体的碰撞可以通过刚体组件(Rigidbody)和碰撞器组件(Collider)来进行检测。基于设计的需求,需要检测物体与物体之间是否发生接触,但不产生碰撞效果,拟采用触发器来进行碰撞检测。为此,首先在场景中添加一个标志性高塔物体,其实质为一个刚体组件,并将高塔的碰撞器设置为触发类型,具体为在该组件的检查视图中找到碰撞器组件,将该组件的IsTrigger属性勾选上。当有物体对高塔进行碰撞,就不会产生碰撞效果,而是直接穿过去。用户拾起场景中的锥子,并将其抛至高塔处,系统检测到碰撞信息,用户选择进入某一游戏,此时调动相关函数,进行场景切换。
2.4 三维交互
在HTC Vive虚拟现实头戴式显示器中有机发光二极管屏幕的单眼有效分辨率为1 200×1 080,双眼合并分辨率为2 160×1 200。这种分辨率大大降低了画面的颗粒感,用户几乎感觉不到纱门效应。即使没有佩戴眼镜,400度左右近视也能清楚地看到画面细节。画面刷新频率为90 Hz,实际体验几乎零延迟,也不觉得恶心和眩晕。
控制器定位系统Lighthouse采用的是Valve公司的专利,它不需要借助摄像头,而是靠激光和光敏传感器来确定运动物体的位置,也就是说HTC Vive虚拟现实头戴式显示器允许用户在一定范围内走动。这是它与另外两大头显 Oculus Rift 和PS VR的最大区别。HTC Vive虚拟现实头戴式显示器的使用非常简单,将SteamVR 官网提供的包导入工程文件,得到以 Prefab预制体形式提供的预设摄像机。预设摄像机包含一个角色控制器预设及摄像机控制器预设。角色控制器控制体验者的视角高度、转头速度、行动速度等,摄像机控制器调节体验者的瞳距、近视面、远视面等视线参数。把预设摄像机拖入场景中,调节好初始位置、角色个体大小等即可运行使用。在Unity3D软件编辑器中编辑HTC Vive虚拟现实头戴式显示器左右眼运行画面。
受训者通过HTC手柄按键控制角色激光来进行预设的前进、后退、左移和右移,并利用HTC Vive虚拟现实头戴式显示器探测头部的旋转来控制角色控制器摄像机的旋转,从而达到主动受训者在虚拟场景中的自由运动。通过编写 C#代码,将体验时主动受训者控制的角色控制器预设体的空间坐标位置与摄像机旋转角度等参数值序列化,实时传输给远程客户端,接收数据后的客户端再实时控制客户端角色控制器的空间坐标及视角。如图2所示,用户在使用HTC Vive虚拟现实头戴式显示器来实现与虚拟场景的交互。
图2 正视和仰视时使用HTC Vive虚拟现实头戴式显示器实现三维交互Fig.2 3D interaction realization with HTC device when facing and looking up
3 实验与分析
3.1 记忆力训练
老年人关联记忆研究是脑认知科学的重要内容之一。对于传统关联记忆测评方法,在建立样本时必须由专业人员定期去社区采用纸质量表的方式测评,再以人工方式处理样本数据。然而,建立样本时无法做到具有时效性和普遍性的测查,处理样本时无法做到高效、快捷的数据记录和保存。
随着老年人年龄的增长,老年人的脑认知功能愈加退化,记忆力下降在生活中表现得极其明显。记忆需要前额区以及海马等较多大脑区域的参与[10],脑认知记忆测评系统的开发需要运用新的记忆测评模式,使脑认知科学和计算机科学相辅相成,为脑认知关联记忆的更友好方便的测评研究起到促进作用。
在实现脑认知训练子系统部分,采用UI控件并添加功能性component,通过编写C#脚本来完成事件的处理,提高开发效率,增强系统的用户界面美感。用户点击开始按钮,系统开始计时,界面中呈现12张卡片,共计有6种类型,每种类型各2张。初始时卡片背面朝向用户,呈现3×3的矩阵,当用户点击某一张卡片,相应卡片翻转,状态维持1 s,随机再翻转。用户通过每一次的点击来记忆各个位置卡片的形状,若当前点击的卡片与上一次点击的卡片一致,则该组卡片匹配成功。当6组卡片匹配完成,系统自动结束计时。该游戏通过短时间内显示卡片内容,以促使用户记忆各位置的卡片内容来完成游戏。卡牌匹配实现的代码如下所示:
private void CardOnClick(Card card)
{
if (canPlayerClick)
{
//先判断是否可以点击,可点击则直接翻牌
card.SetFanPai();
//添加到比对数组中
FaceCards.Add(card);
//如果有2张牌了,则不可再点击,进入协同程序
if (FaceCards.Count == 2)
{
canPlayerClick = false;
StartCoroutine(JugdeTwoCards());
}
}
}
为实现在三维场景中显示出二维游戏效果,建立canvas并在其下面添加UI控件panel。panel用来对纸牌进行自动布局。为panel添加Gird Layout Group组件和Content Size Fitter 组件。
设定2个监听按钮(见图3),一个是开始游戏、开始计时的Start,一个是暂停计时、暂停游戏的Pause。具体实现代码如图4所示。
图3 Start按钮代码Fig.3 Code of Start button
图4 Pause按钮代码Fig.4 Code of Pause button
页面中测评题目有计时功能,并且会显示在页面上,测试者可以随时查看已花费的时间,计时器所记录的时间也是最终需要导入数据库的数据之一。在update函数(见图5)中,利用time.deltaTime获取游戏进行时间,每更新一帧就在时间上累计。
3.2 拾抛功能
用户通过将某个东西抛至某特定物体后产生碰撞,来表示进入某一游戏。在场景中实现用手柄拾东西,并将东西抛掷远处。在HTC Vive虚拟现实头戴式显示器中,通过触发器碰撞机和脚本编程为用户提供沉浸感虚拟体验。首先,为2只手柄添加刚体Rigidbody和盒子碰撞体Box Collider,并勾上IsTrigger。然后,在脚本中为手柄添加触发器方法OnTriggerEnter(),当触发器碰撞体进入并退出另一个碰撞体时,这些方法将被触发。此外,为实现将某个物体抛出,首先得确定控制器上一定有一个固定连接,然后用户松动按钮,删除这个连接上所连对象,并销毁这个连接,最后将玩家放开物体时手柄的速度和角度赋给这个物体,这样就可以以抛物线的形式将物体抛出。
图5 Update函数代码Fig.5 Code of Update function
3.3 系统漫游
实验基于Unity3D软件平台,编译环境为 Visual Studio 2015,并结合HTC Vive虚拟现实头戴式显示器、2个单手持控制器、1个能于空间内同时追踪显示器与控制器的定位系统。
基于几何建模、物理建模和行为建模的方式进行虚拟场景的构建。首先,根据数学建模计算模型所需基本数据,基于几何建模的规则进行模型构建;然后,采取纹理映射、光照等数学模型加以渲染;最后,对模型的物理性质进行设置,提高模型的真实性和沉浸感。加入HTC Vive头戴式显示器,实现脑认知训练系统的交互。场景整体效果如图6所示。
图6 场景整体效果Fig.6 Whole effects of scene
为实现场景漫游体验,利用HTC手柄的TouchPad部分进行相关控制,以此来实现用户的瞬移,即在场景中用户可随时改变自己的所在位置,通过手柄操作,切换到不同位置。在场景中实现用手柄拾东西,并能将其抛掷远处。在HTC Vive虚拟现实头戴式显示器中,通过使用触发器碰撞机和脚本编程,为用户提供沉浸感良好的虚拟体验。系统运行结果如图7~10所示。
图7 位置转移前Fig.7 Before the shift
图8 位置转移后Fig.8 After the shift
图9 捡物体前Fig.9 Before picking up objects
本文记忆力训练系统程序实质上是一款翻牌测验游戏,用户人群为参加测试的老年人,考虑到用户人群的特殊需求,脑认知训练系统必须满足操作方便简单、提示词明确、界面清晰且利于观察的要求。游戏界面如图11所示。
图10 捡起物体Fig.10 After picking up objects
图11 记忆力训练系统界面Fig.11 Interface of memory training system
4 结语
本文给出了基于虚拟现实的脑认知训练系统框架及关键技术。以记忆力训练为例,基于Unity3D软件平台,利用HTC Vive虚拟现实头戴式显示器和HTC手柄开发的沉浸式脑认知训练系统具有沉浸感强和直观交互性等特点。场景建模保证了虚拟实体具有重力、质量、黏性、刚性等性质,是重建现实世界的基本保障。场景漫游为用户提供了2种移动方式,即依据定位移动、手柄激光击中漫游,使得用户可以尽情漫游场景或者快速到达目标位置。通过指定物体碰撞达到切换场景的目的,由外缘场景进入记忆力训练模块。记忆力训练模块作为本文系统内核,是本文系统的灵魂所在,也是区别于其他一般虚拟现实仿真漫游系统的主要创新点。通过计时、暂停、相同纸牌判断等方式,组织架构起记忆力内核。虚拟现实脑认识系统运用的技术内核为脑认知训练提供了更加有趣、舒适的训练方式,避免了纸质量表和人工记录分析的尴尬,其场景模块和操作的简洁性更加适合老年人。