混合现实中的共享体验
全息影像不需要仅专用于一个用户。 全息应用可以将一个 HoloLens、iOS 或 Android 设备的空间定位点共享给另一台设备,从而使用户能够跨多个设备在现实世界中的同一位置渲染全息影像。
定义共享场景的六个问题
在开始设计共享体验之前,定义目标场景非常重要。 这些场景有助于阐明你要设计的内容并建立一个通用词汇表,以帮助比较和对比你的体验所需的功能。 了解核心问题和解决方案的不同途径是发现这种新媒体固有机会的关键。
通过我们的 HoloLens 合作伙伴机构的内部原型和探索,我们创建了六个问题来帮助你定义共享场景。 这些问题构成了一个框架,不旨在详尽地帮助提取方案的重要属性。
1. 它们如何共享?
演示可能由单个虚拟用户主导,而多个用户可以协作,或者教师可能为使用虚拟材料的虚拟学生提供指导,体验的复杂性会根据用户在场景中拥有或可以拥有的代理级别增加。
共享的方式有很多,但我们发现大部分共享方式分为三类:
- 呈现:在向多个用户展示相同内容时。 例如:一位教授正在使用向所有人展示的相同全息材料向多个学生进行演讲。 但是,该教授可以有其自己的提示和注释,而其他人可能看不到。
- 协作:当人们共同合作来实现某些共同的目标时。 例如:该教授提供了一个项目,以了解如何进行心脏手术。 学生结对并创建共享技能实验室体验,让医科学生可以在心脏模型方面进行协作并学习。
- 指导:当一个人在以一对一的互动方式帮助某人解决问题时。 例如:当某个学生在共享体验中进行心脏手术技能实验时,该教授为该学生提供指导。
2. 群组大小是多少?
一对一共享体验可提供强大的基线,理想情况下,可以在此级别创建概念证明。 但请注意,与大型群组(超过 6 人)共享可能会导致技术(数据和网络)和社交(在一个房间里有多个虚拟形象的影响)两方面的困难。 随着你从小型群组进入大型群组,复杂性会呈指数级增长。
我们发现群组的需求可能分为三个大小类别:
- 1:1
- 小型 < 7
- 大型 >= 7
群组大小是一个重要问题,因为它会影响:
- 全息空间中人员的表示形式
- 对象的规模
- 环境的规模
3. 每个人在哪里?
当共享体验可以在同一位置发生时,混合现实的长处就会发挥作用。 我们称之为“并置”。 而当群组分散并且至少有一个参与者不在同一物理空间中时(例如常使用 VR 的情况),我们称之为“远程体验”。 通常情况下,你的群组会同时有并置和远程参与者(例如,会议室中的两个小组)。
以下类别有助于传达用户所在的位置:
- 并置:所有用户位于同一物理空间中。
- 远程:所有用户位于不同的物理空间中。
- 两者:用户位于并置空间和远程空间的混合形式。
此问题很重要,因为它会影响:
- 用户如何通信?
- 例如:他们是否应该有虚拟形象?
- 他们看到的对象。 是否共享所有对象?
- 我们是否需要适应他们的环境?
4. 他们何时共享?
当我们想到共享体验时,通常会想到同步体验:我们都是一起做的。 但如果我们包含由其他人添加的单个虚拟元素,就会出现异步场景。 想象一下留在虚拟环境中的笔记或语音备忘录。 如何处理设计中留下的 100 个虚拟备忘录? 如果他们来自数十个具有不同隐私级别的人,该怎么办?
将体验视为以下时间类别之一:
- 同步:同时共享全息体验。 例如:两名学生同时进行技能实验。
- 异步:在不同的时间共享全息体验。 例如:两名学生进行技能实验,但在不同的时间使用单独的部分。
- 两者:用户有时会同步共享,但有时会异步共享。 例如:一位教授在稍后的时间对学生完成的作业进行评分,并为第二天的学生留下笔记。
此问题很重要,因为它会影响:
- 对象和环境持久性。 例如:存储状态,以便可以检索它们。
- 用户视角。 例如:留下笔记时也许会记住用户正在查看的内容。
5. 他们的物理环境有多相似?
除非这些环境被设计为相同,否则在并置体验之外出现两个完全相同的现实生活环境的可能性很小。 你更有可能拥有类似的环境。 例如,会议室是类似的,它们通常有一个位于中央的桌子,周围放着椅子。 另一方面,起居室是不同的**,可以在无限的布局中包含任意数量的家具。
假设你的共享体验符合以下两个类别之一:
- 类似:往往具有相似家具、环境光线和声音、物理房间大小的环境。 例如:一位教授在讲堂 A 中,学生们在讲堂 B 中。讲堂 A 的椅子可能比讲堂 B 少,但他们都可能有一张物理桌子来放置全息影像。
- 不同:在家具设置、房间大小、光线和声音方面考虑不同的环境。 例如:一位教授在一个观察室中,而学生们在一个充满学生和老师的大讲堂中。
考虑环境很重要,因为它会影响:
- 用户将如何体验这些对象。 例如:如果你的体验在一张桌子上效果最好,而用户没有桌子? 或者在平坦的地面上,但用户的空间杂乱无章。
- 对象的规模。 例如:将一个六英尺的人体模型放在桌子上可能具有挑战性,但放置心脏模型效果会很好。
6. 他们使用什么设备?
如今,鉴于针对这些设备的解决方案,你经常会看到两个沉浸式设备(这些设备在按钮和相关功能方面可能略有不同,但差别不大)或两个全息设备之间的共享体验。 但请考虑 2D 设备(移动/桌面参与者或观察者)是否是必要的考虑因素,尤其是在混合使用 2D 和 3D 设备的情况下。 了解参与者将使用的设备类型很重要,不仅因为它们具有不同的保真度以及数据约束和机会,还因为用户对每个平台都有独特的期望。
了解共享体验的潜力
可以将上述问题的答案结合起来,以更好地了解你的共享场景,并在你扩展体验时将挑战具体化。 对于 Microsoft 的团队而言,这有助于制定路线图,以改善我们目前的使用体验、了解这些复杂问题的细微差别,以及如何利用混合现实中的共享体验。
例如,考虑从 HoloLens 启动一个 Skype 场景:一位用户在远程专家的帮助下完成了如何修复损坏的电灯开关。
一位专家通过其 2D 台式计算机向一位使用 3D 混合现实设备的用户提供 1:1 指导。 指导是同步的,物理环境是不同的。
像这样的体验是我们当前体验的一个阶段性变化,将视频和语音的范式应用于新媒体。 但着眼未来,我们必须更好地定义我们的场景的机会并构建反映混合现实优势的体验。
考虑一下由 NASA 的喷气推进实验室开发的 OnSight 协作工具。 研究火星探测器任务数据的科学家可以在火星环境数据中与同事实时协作。
一位使用 3D 混合现实设备的科学家与一小组使用 3D 和 2D 设备的远程同事一起探索环境。 协作是同步的(但可以异步重新访问),并且物理环境(几乎)相似。
OnSight 等体验提供了新的协作机会。 从物理上指出虚拟环境中的元素到站在同事旁边,并在解释其发现时分享他们的观点。 OnSight 使用沉浸式和在场镜头来重新思考混合现实中的共享体验。
直观的协作是对话的基础,协同工作并了解如何将这种思维应用到混合现实的复杂性至关重要。 如果我们不仅可以在混合现实中重新创建共享体验,而且可以增强它们,那么这将是未来工作的范式转变。 在混合现实中设计共享体验是一个令人兴奋的新领域,而我们才刚刚开始。
开始构建共享体验
根据应用程序和场景,需要满足各种要求来实现所需的体验。 其中包括:
- 配对:能够创建会话、播发会话、发现和邀请本地和远程特定人员加入你的会话。
- 定位点共享:能够在公共本地空间中跨多个设备对齐坐标,使全息影像对于所有人员显示在同一位置。
- 网络:能够在所有参与者之间实时同步人员和全息影像的位置、交互和移动。
- 状态存储:能够在空间中存储全息影像特征和位置,以便在会话期间加入、稍后撤回和提供针对网络问题的稳定性。
共享体验的关键是让多个用户在他们自己的设备上看到世界上相同的全息影像,通常通过共享定位点对齐设备之间的坐标来实现。
若要共享定位点,请使用 Azure 空间定位点:
- 首先,用户放置全息影像。
- 应用创建空间定位点,以精确固定世界上的全息影像。
- 定位点可以通过 Azure 空间定位点共享到 HoloLens、iOS 和 Android 设备。
通过共享空间定位点,每个设备上的应用现在都有一个公共坐标系,它们可以在其中放置内容。 现在,应用可以确保在同一位置定位和定向全息影像。
在 HoloLens 设备上,还可以将定位点从一个设备脱机共享到另一个设备。 使用以下链接确定哪些内容最适合你的应用程序。
评估技术选项
有多种服务和技术选项可用于帮助构建多用户混合现实体验。 选择路径可能很棘手,因此从以场景为中心的角度来看,下面详细介绍了一些选项。
共享静态全息影像(无交互)
在应用中利用 Azure 空间定位点。 通过跨设备启用和共享空间定位点,可以创建一个应用程序,让用户可以同时在同一位置看到全息影像。 需要额外的跨设备同步,使用户能够与全息影像交互并查看全息影像的移动或状态更新。
共享第一个人的视角
拥有受支持的 Miracast 接收器(例如电脑或电视)时,可为本地用户利用内置的 Miracast 支持。 无需编写额外的应用代码。
多用户协作体验
从我们的多用户学习教程开始,该教程利用面向本地用户的 Azure 空间定位点和用于同步场景中的内容/状态的 Photon SDK。 创建本地协作应用程序,其中每个用户对场景中的全息影像都有自己的视角,并且每个用户都可以与全息影像进行完全交互。 跨所有设备提供更新,交互冲突管理由 Photon 处理。
注意
请注意,Photon 不是 Microsoft 的产品,因此可能需要与 Photon 建立计费关系才能进行产品化和扩展以提高使用率。
未来工作
组件功能和接口将有助于在各种场景和基础技术中提供通用的一致性和可靠的支持。 在此之前,请选择与你要在应用程序中实现的场景相符的最佳路径。
不同的场景或希望使用不同的技术/服务? 在此页面底部的相应存储库中以 GitHub 问题的形式提供反馈,或联系 HoloDevelopers slack。