登月舱

Lunar module

注意

本文讨论我们在混合现实设计实验室中创建的探索示例,我们会在该实验室中共享关于混合现实应用开发的发现和建议。 我们的设计相关文章和代码会随着我们的新发现而变化。

注意

此示例应用适用于 HoloLens 第一代。

登月舱是 Microsoft 的混合现实设计实验室中的一个开源示例应用。 了解如何使用双手跟踪和 Xbox 控制器输入来扩展 HoloLens 的基本手势,创建对表面映射和平面查找做出反应的对象,以及实现简单的菜单系统。 你可以在自己的混合现实应用体验中使用该项目的所有组件。

演示视频

使用混合现实捕获通过 HoloLens 2 录制

反思 Windows Mixed Reality 的经典体验

在大气层的高处,一艘让人们回忆起阿波罗登月舱的小飞船正在有条不紊地调查下方的锯齿状地形。 无畏的领航员找到了一个合适的着陆区。 着陆非常艰难,但庆幸的是,这次旅行在之前已经演练过多次...

Original interface from Atari’s 1979 Lunar Lander
Atari 1979 年月球着陆器的原始界面

月球着陆器是一款经典的街机游戏,玩家可以尝试将月球着陆器驾驶到月球地形的平坦地点上。 在上世纪 70 年代出生的人可能都曾经泡在街机室,眼睛盯着这艘从天而降的载人飞船。 当玩家将他们的飞船领航到着陆区时,地形会逐渐放大以显示更多细节。 如果在水平和垂直速度的安全阈值范围内着陆,则表示着陆成功。 着陆所用的时间和剩余燃料将折算成奖励积分,乘数根据着陆区的大小而定。

街机时代的游戏除了丰富的玩法之外,还为控制方案源源不断地带来了创新。 从最简单的四向游戏杆和按钮配置(例如标志性的 Pac-Man)到 90 年代末和 00 年代初的极其具体复杂方案(例如高尔夫模拟器和轨道射击游戏)。 月球着陆器街机中使用的输入方案出于两个原因而令人乐此不疲:逼真的地面和沉浸感。

Atari’s Lunar Lander’s arcade console
Atari 月球着陆器的街机控制台

为何 Atari 和其他许多游戏公司决定重新考虑设计其输入?

走进街机室的少年自然会被最新、最炫的街机所吸引。 但月球着陆器凭借其新颖的输入机制在众多街机中脱颖而出。

月球着陆器使用两个按钮来左右旋转飞船,使用一个“推力杆”来控制飞船产生的推力大小。 此操纵杆为用户提供一定程度的控制技巧,而普通游戏杆做不到这一点。 它正好也是现代航空驾驶舱中常用的组件。 Atari 希望月球着陆器能够让用户产生沉浸感,如同他们是在真的驾驶登月舱一样。 此概念称作“触感沉浸”

触感沉浸是通过重复动作获得感官反馈的体验。 在本案例中,眼睛看到的和耳朵听到的调节油门操纵杆和旋转的重复动作,有助于将玩家与在月球表面登陆船只的动作联系起来。 此概念可以与“心流”的心理学概念相关联。这种心理是指用户全神贯注于既有挑战性又能获得奖励的任务,或更简单地说,“已进入状态”。

可以说,混合现实中主导的沉浸类型是空间沉浸。 混合现实的关键在于诱导我们自己相信这些数字对象存在于现实世界中。 我们在周围环境中合成全息影像,在空间上沉浸于整个环境和体验中。 这并不意味着我们仍然无法 Atari 在月球着陆器中采用触感沉浸那样,在我们自己的体验中采用其他类型的沉浸。

沉浸设计

如何将触感沉浸应用于后续的 Atari 经典游戏更新立体版? 在处理输入方案之前,需要解决三维空间的游戏构造。

Visualizing surface mapping in HoloLens
在 HoloLens 中可视化空间映射

利用用户的周围环境,我们有效地提供了可将登月舱着陆的无限地形选项。 为了使游戏与原作非常相似,用户有时可以在其环境中操控和放置不同难度的着陆垫。

要求用户学习输入方案和控制飞船,并提供一个可着陆的小目标,都是很难解决的问题。 成功的游戏体验会将挑战难度和奖励结合在一起。 用户可以选择难度级别,最简单的模式只需用户成功降落在 HoloLens 扫描的表面上的用户定义区域。 一旦用户掌握了游戏的窍门,就可以在他们认为合适的时候提高难度。

添加手势输入

HoloLens 基本输入只有两种手势 - 隔空敲击和开花手势。 用户无需记住上下文的细微差别或具体手势的冗长列表,因此平台的界面既丰富多样又易于学习。 虽然系统可以只公开这两种手势,但作为设备,HoloLens 可以同时跟踪两只手。 我们将月球着陆器誉为一款沉浸式应用,也就是说,可以扩展基本手势集以利用两只手,并为登月舱导航添加我们自己的令人愉悦的触感方式。

回顾最初的控制方案,“我们需要解决推力和旋转问题”。 需要注意的是,新上下文中的旋转增加了一个额外的轴(技术上是两个,但 Y 轴对于着陆不太重要)。 两种不同的飞船运动自然而然地适合映射到每一只手:

Tap and drag gesture to rotate lander on all three axes
使用“点击并拖动”手势可在所有三个轴上旋转着陆器

“推力”

原始街机上的操纵杆映射到一个数值范围,操纵杆移得越高,对飞船施加的推力就越大。 此处要指出的一个重要细微差别是用户如何将他们的手从控件上移开并保持所需的值。 我们可以有效地使用“点击并拖动”行为来实现相同的结果。 推力值从零开始。 用户点击并拖动可以增大值。 然后,他们可以释放手势来保持该值。 任何“点击并拖动”手势值的变化都是原始值的增量。

旋转

这有点棘手。 使用全息“旋转”按钮进行点击会使体验变得非常糟糕。 没有可利用的物理控件,因此行为必须来自对代表着陆器的对象或着陆器本身的操控。 我们想出了一种使用“点击并拖动”的方法,它使用户能够有效地将飞船“推拉”到所需的朝向。 每当用户点击并按住时,从中发起该手势的空间点就会变成旋转的原点。 从原点拖动会转换手部平移 (X,Y,Z) 的增量,并将其应用于着陆器旋转值的增量。 更简单地说,在空间中向左 <-> 向右、向上 <-> 向下、向前 <-> 向后拖动会相应地旋转飞船

由于 HoloLens 可以跟踪两只手,因此可将旋转分配到右手,而推力由左手控制。 技巧是这款游戏成功的驱动因素。 这些交互的感受绝对是最先考虑的问题。 尤其是在触感沉浸的上下文中。 反应太快的飞船难以操控,而反应太慢的飞船则需要用户在飞船上“推拉”很长一段时间。

添加游戏控制器的输入

虽然 HoloLens 上的手势提供了新颖的精细控制方法,但仍然缺乏从模拟控制中获得的“真实”触感反馈。 连接 Xbox 游戏控制器后,我们可以在利用控制杆保持精细控制的同时重新获得这种体感。

可通过多种方式将相对直接的控制方案应用于 Xbox 控制器。 由于我们试图尽可能地接近原始街机设置,因此“推力”最适合映射到触发按钮。 这些按钮是模拟控件,即,它们不仅具有简单的开和关状态,而且实际上可以响应对它们施加的压力程度。 这为我们提供了类似于“推力杆”的构造。 与原始游戏和手势不同,一旦用户停止对触发器施加压力,此控件将减少飞船的推力。 它仍然为用户提供与原始街机游戏相同的技巧水平。

Left thumbstick is mapped to Yaw and Roll, Right thumbstick is mapped to Pitch and Roll
左控制杆映射到“偏航和翻滚”,右控制杆映射到“俯仰和翻滚”

双控制杆自然有助于控制飞船的旋转。 遗憾的是,飞船可以在三个轴上旋转,而有两个控制杆支持两个轴。 这种不匹配情况意味着要么由一个控制杆控制一个轴,要么控制杆的轴发生重叠。 前一种解决方案最终给人“不行”的感觉,因为控制杆固有地混合了其局部 X 和 Y 值。 后一种解决方案需要经过一些测试,以找出哪些冗余轴感觉最自然。 最终的示例将偏航和翻滚(Y 轴和 X 轴)用于左控制杆,将俯仰和翻滚(Z 和 X 轴)用于右控制杆。 这种感觉最自然,因为翻滚似乎可以独立地与偏航和俯仰完美搭配。 附带指出,将两个控制杆用于翻滚正好可以使旋转值翻倍;让着陆器的转圈动作非常有趣

此示例应用演示了空间识别和触感沉浸如何借助 Windows Mixed Reality 的可扩展输入模态来显著改变体验。 虽然月球着陆器游戏已经推出了近 40 年,但那个有腿的小八边形所揭示的概念永不过时。 在憧憬未来的同时,为何不能回首过去呢?

技术详细信息

可以在混合现实设计实验室 GitHub 中找到月球着陆器示例应用的脚本和预制件。

关于作者

Picture of Addison Linville Addison Linville
UX Designer @Microsoft

另请参阅