2017年9月8日

虚幻引擎在运动式游戏研究领域的作用

作者 Joey Campbell

大家好,我叫 Joey Campbell,我是工作在爱尔兰科克的一名 VR 讲师、开发人员和研究员,目前正在布里斯托大学 (University of Bristol) 的 Bristol Interaction Group 修读博士学位。我研究的大主题是身体锻炼和视频游戏(又称“运动式游戏”),侧重的是生理控制的虚拟人物。

我想讨论一下我目前一直从事的两个研究项目,它们都是用虚幻引擎开发的:

Unreal+Engine%2FblogAssets%2F2017%2FSEPTEMBER+2017%2FEDU+-+Joey+Campbell+ExerGaming%2F01-770x434-04dc670394675cd39b551e10bc8c66cb7f39635e

项目 01:VeRitas

通过 HMD 观看,根据实时生理反馈进行互动,实现了更丰富的沉浸式环境,为 HCI 和身体锻炼领域的新研究铺平了道路。我们的设计方案是,利用这些先进技术研究是否能够通过沉浸感、物理阻力和虚伪化生理数据之类的自适应干预来刺激剧烈身体运动的表现。VeRitas 通过激励玩家超越传统运动式游戏的低程度身体锻炼来解决这几个问题。

我们设计了一款 VR 自行车游戏,在这个游戏中,用户蹬踏着一辆固定的 Wattbike,虚拟人物的骑行速度和骑行距离由用户的心率决定,而骑行方向则由标准的游戏手柄控制。游戏的目标是在 60 秒内骑行尽可能远的虚拟距离。

Joey CampbellVimeo 上发布的 VeRitas 视频。

设计

游戏的输出是根据用户的心率间接地映射到虚拟自行车的速度。直接把用户的蹬踏速度映射到虚拟自行车手的骑行速度会给人带来更强的自行车互动“联系”,但是,我们想研究虚伪化生理数据对体能消耗的影响。这就是为什么我们要确保让心率在游戏控制中发挥决定性作用。

Unreal+Engine%2FblogAssets%2F2017%2FSEPTEMBER+2017%2FEDU+-+Joey+Campbell+ExerGaming%2F02-770x720-280ba67188344446f07e9feeaf1c35c30bb42638

为了获得反馈,必须设计一个显示心率、虚拟距离、自行车档位和剩余时间的 GUI。在 HMD 中显示传统的 2D 状态栏会导致用户感到晕眩恶心,所以我们在虚拟人物上连接了一些 3D 小部件,作为抬头显示器元件。这样可以减轻虚拟晕眩感受,并在显眼的位置显示重要反馈。

Unreal+Engine%2FblogAssets%2F2017%2FSEPTEMBER+2017%2FEDU+-+Joey+Campbell+ExerGaming%2F03-770x613-9a0225e3cb0bf11e2bee9a0899959bbfbf1de8d8

为了节省开发时间,我们在虚幻引擎市场上购买了预制的游戏环境自行车载具。自行车手人物是用 Adobe Fuse 设计的,然后导出到虚幻引擎,与自行车模型组合起来。

Unreal+Engine%2FblogAssets%2F2017%2FSEPTEMBER+2017%2FEDU+-+Joey+Campbell+ExerGaming%2F04-770x566-1ad2368984299998ef37c8281c900f890f9b6216

为了把生理数据用作游戏变量,需要获取实时的心率数据。不准确的传感器数据和不实用的心脏监测器导致我们反复进行了几次设计。我们用 Pulse Sensor 和 Easy Pulse Monitor 进行过试验,但是对于自行车游戏而言,这两种设备都不适用,因为读数不准确,传感器安装位置不合理(两种设备都必须戴在手指上,而用户同时还得握住自行车把手并控制游戏手柄)。最后,我们使用了 Polar Heart Rate Monitor,并对它进行了重新配置,通过 Arduino 电路板,使用 UE4Duino 插件将心率数据无线传输到游戏引擎中。这次没有明显的延迟,传感器的读数也是准确的。当无线传输半径超过两米时,这款监测器的读数会变弱,所以我们把接收器安装到了自行车的车座下面。

Unreal+Engine%2FblogAssets%2F2017%2FSEPTEMBER+2017%2FEDU+-+Joey+Campbell+ExerGaming%2F05-770x423-0652896dc6fb91a38412f7a71856fbabc7e84295

为了根据传入的心率数据动态地调整虚拟自行车的速度,我们开发了一个映射蓝图系统。虚拟自行车上有 12 个档位(1 档速度最慢,12 档速度最快);心率的 BPM 读数在 40 - 50 之间时会激活 1 档,50 - 60 激活 2 档,60 - 70 激活 3 档,以此类推,直到超过 170 时激活 12 档(BPM 与档速有关,而档速又与骑行距离有关)。虚拟自行车的档位系统、骑行速度和骑行距离都与传入的传感器读数相关。这意味着,在理论上,健康状况不佳的用户可能会比健康状况良好且更加用力的用户骑行更远的虚拟距离,所以我们确保自己选择的是一款可以测量体能消耗的健身自行车,而不是单纯地依靠骑行距离来衡量体能消耗。

Unreal+Engine%2FblogAssets%2F2017%2FSEPTEMBER+2017%2FEDU+-+Joey+Campbell+ExerGaming%2F06-770x650-32087b2d53dc4c704a04fec5e3ea6f00ed706ea8

虚伪化

我们没有找到在运动式游戏环境中使用修改过的生理反馈的先行研究,所以没有现成的最佳心率修改幅度可以参考。我们进行了一项试验,以确定在游戏中对用户可见的心率进行修改的合适百分比范围。我们为这款游戏创建了 7 个版本,其中用户可见的心率分别按 +10%、+20%、+30%、0%、-10%、-20% 和 -30% 的幅度修改。我们请一位用户把这 7 个版本的游戏(顺序随机)都玩了一遍,各个游戏版本之间有两分钟的休息时间,然后让该用户提供关于该系统的反馈。无论按哪个幅度上调 BPM,该用户都没有察觉,但是当 BPM 的下调幅度超过 20% 时,他们反馈说心脏监测器可能有不准确的地方。基于这一反馈,我们决定把虚伪化(心率下调)的“最大幅度”定为 20%。我们的假设是,降低可见的 BPM 会激发更多的体能消耗。

Unreal+Engine%2FblogAssets%2F2017%2FSEPTEMBER+2017%2FEDU+-+Joey+Campbell+ExerGaming%2F07-770x637-3125cc73bd1ea760df62c7c719a69a0ca2981145

物理阻力

我们感兴趣的是检查“间接驱动”的效果,即通过非自愿的阻力调整来改变肢体运动。这辆 Wattbike 包含一个有 7 个级别的物理阻力旋钮,可以用来调整阻力,以增加蹬踏自行车踏板的体能消耗。我们不想让用户察觉到阻力的变化,所以我们构造了一个滑轮系统,它可以在不引起用户注意的情况下远程更改阻力控制。

变量

我们的三个独立变量分别是沉浸感(VR 头盔或平板显示器)、阻力(档位驱动或无驱动)和虚伪化(真实 BPM 和虚伪 BPM)。

我们使用了两种主要测量手段:功率输出和运动感知率。用户产生的第一个因变量是“绝对”功率(以瓦特计量),每次试验都会由 Wattbike 记录下来。我们还对每种条件下的绝对功率百分比进行了处理,以计算“相对”的功率值,并用它来计算试验参加者在该条件下的表现与该参加者在所有试验中平均表现的比值,以分析出个人表现中的异常值。

Unreal+Engine%2FblogAssets%2F2017%2FSEPTEMBER+2017%2FEDU+-+Joey+Campbell+ExerGaming%2F08-770x612-93b4324deca31560efc14599674ab88728e502bc

项目 02:“虚拟碰撞”

继先前的 VeRitas 项目之后,我们想开发一部可以动态、实时地调整物理对象阻力的运动式游戏(我们的想法是,使用这种物理对象来控制沉浸式游戏中的虚拟人物,并通过游戏引擎来控制该物理对象移动的难易程度)。

Joey CampbellVimeo 上发布的虚拟阻力视频。

物理运算

在项目开始的时候,我们曾经自信地认为能够买到“现成的产品”,但很快就意识到,我们必须自己制作。我们研究了几种不同的技术(电磁、液压、气动)来实现这种类型的阻力,最后认定摩擦是最简单且最有效的实现方法。我们尝试了多种不同的组合(步进电机、线性驱动器和连续旋转伺服电机)。延迟和功率方面都有问题,最终我们选定了一款高扭矩 (30 kg/cm) 伺服电机,它可以通过 UE4Duino 插件集成到虚幻引擎中。

Joey CampbellVimeo 上发布的伺服电机视频。

我们在一辆儿童三轮车的制动手柄上测试了这款伺服电机,并成功地在没有任何明显延迟的情况下实现了对松紧程度/阻力水平的逐步调整。需要注意的是,Arduino 电路板无法提供足够的电力来带动高扭矩伺服电机。为了克服这一障碍,我们把可充电的高尔夫球车电池连接到了电路试验板。

Unreal+Engine%2FblogAssets%2F2017%2FSEPTEMBER+2017%2FEDU+-+Joey+Campbell+ExerGaming%2F09-770x600-c768eebc3c36c0737d6e660b7fe0398762b59fbe

现实和虚拟世界的同步

虽然我们知道最终的物理游戏控制器将是某种形式的轮式载具,但是我们不知道如何将这个物体的运动和位置同步到它在游戏中的克隆体。我们用一个现实的办公椅和一个导入的办公椅 .obj 模型做了测试。我们创建了一个 VR 走卒类,添加了一个 Vive 运动控制器标签和静态网格,并把运动控制器放置在虚拟办公椅的中央。然后我们把现实的 Vive 控制器粘附在现实办公椅上的相应位置。为了让现实和虚拟的办公椅保持大小同步,我们做了一些调整,并且花了点功夫定义 HTC Vive Chaperone 安全系统内的地板和边界空间:

Joey CampbellVimeo 上发布的 VR 和现实办公椅移动视频。

解除束缚

正如你在上面这个视频中看到的,运动式游戏所用电缆的约束(在这类游戏中,阻力和体感操作很重要)往往会限制游戏的流畅度。为了摆脱这种束缚,提高装置的可移动性,我们使用了一个 12V 8000mAh 可充电锂离子电池和一个适配器来为 Vive 接线箱供电。我们还用一台带 HDMI 端口的外星人笔记本电脑代替了台式电脑。

Unreal+Engine%2FblogAssets%2F2017%2FSEPTEMBER+2017%2FEDU+-+Joey+Campbell+ExerGaming%2F10-770x393-a62956581a07f2543c11abbb44ba6b511b9d3b90

最后,我们决定把现实和虚拟的办公椅替换为轮椅模型。我们对轮椅上的制动装置进行了调整,改变了位置,加了润滑油,尽可能减少电缆的摩擦。伺服电机安装在伺服支架上,支架通过螺栓固定在铝管上。

Unreal+Engine%2FblogAssets%2F2017%2FSEPTEMBER+2017%2FEDU+-+Joey+Campbell+ExerGaming%2F11-770x426-802cda8a1cba2117aedf6368cccabe295df0142f

碰撞检测

物理座椅的运动在两个世界之间完美地同步,但是轮椅模型和放置在场景中的任何支持物理功能的静态网格之间都没有发生碰撞检测。有一种办法是打开轮椅静态网格编辑器,并将碰撞复杂性更改为“use simple shapes as complex”(使用简单形状)。虽然这样确实能够实现与环境中静态网格的碰撞,但它不能触发任何蓝图事件。

作为替代方案,我们在网格窗口中将轮椅碰撞设置重置为“no collision”(无碰撞),将碰撞复杂性重置为“project default”(项目默认),并将轮椅的 VR 走卒蓝图设置更改为“no collision”(无碰撞)。然后,我们添加了(在 VR 走卒蓝图窗口左上角“添加组件”的下方)一个“box collision”(箱体碰撞),并调整了它的大小比例和位置以匹配轮椅模型。这次我们将它的设置更改为“block all”(阻挡所有),“generate overlap events”(生成重叠事件)和“hit events”(命中事件)就激活了。然后,我们把这个箱体碰撞拖动到控制器下方与轮椅节点同一层级的位置。

启用碰撞检测后,制动装置对现实世界物体的阻力的逐步调整现在便可以如实地反映到沉浸式环境中模拟这种阻力的虚拟对象中。

总结

我们打算通过无缝地重合虚拟模型与其现实世界对等物来将阻力彻底融合到虚拟世界中。我们也打算通过引入有形的虚拟对象(通过 VR HMD 看到,而且能在现实世界中感觉到)增强感知。我们还有一个动态阻力自动化的移动系统,可以让游戏引擎模拟虚拟人物和虚拟物体之间的真实碰撞感。

Unreal+Engine%2FblogAssets%2F2017%2FSEPTEMBER+2017%2FEDU+-+Joey+Campbell+ExerGaming%2F12-770x533-3fd4373eedb56307f58e9ffb6ac213790e61849d

我们未来的研究重点将是通过收集和分析生理反应之类的定量数据来探索这类有形-虚拟界面和体能消耗之间的关系。例如,我们设想,在实体的有形-虚拟环境中进行身体活动时将人的力触觉与机械力触觉分离,可能会促进体能消耗。在我们的下一项研究中,我们打算在用户的小腿肌肉上安置一个 MyoWare Flex 传感器,然后进行一系列的测试来检查体能消耗和动态阻力之间的关系。我们还打算在头盔显示器 (HMD) 内的抬头显示器 (HUD) 中显示和隐藏实时的体能消耗和阻力数据来比较用户的体能消耗水平。

可以公开访问虚幻引擎,加上价格可承受的 VR 硬件,使我们这样的研究人员能够通过有限的预算创造出令人信服的沉浸式环境。不断提高的图形保真度使 3D 资产与现实世界对等物(视觉上)的融合成为可能。使用市场上的第三方资产为我们节省了时间,让我们能够全身心地投入到力触觉反馈、阻力和有形界面设计等沉浸式方面的工作中。

有关 Joey Campbell 的研究的进一步更新和进展,请访问 www.joeycampbell.ie

[email protected]

www.joeycampbell.ie

http://vimeo.com/joeycampbell