Snapdragon Spaces 开发指南(2)

281 篇文章 30 订阅
27 篇文章 5 订阅


2 体系结构

2.1 OpenXR

适用于 Snapdragon 空间的 OpenXR

请添加图片描述
什么是 OpenXR?

OpenXR 是 VR 和 AR 的行业标准。正如可以通过图形 API(例如 OpenGL、OpenGL-ES 或 Vulkan)创建统一的图形标准一样,OpenXR 是一个允许内容开发人员瞄准 AR 或 VR 的标准。Khronos Group 在 OpenXR 众多成员的巨大努力下维护了 OpenXR。OpenXR API 正在获得许多可用和即将推出的 XR 设备的支持,致力于使用整合的开放 API 使应用程序开发变得更容易、更一致。

OpenXR API 提供了构建可针对全息和沉浸式设备的引擎所需的核心姿势预测、帧定时和空间输入功能。如果您想了解有关 OpenXR API 的更多信息,请查看Khronos Groups 的 OpenXROpenXR规范 , API 参考 ,或快速参考指南

OpenXR 是一个新的开发平台吗?

OpenXR 不是混合现实的平台或引擎。相反,OpenXR 由标准化 API 组成,使 Unity、Unreal 等游戏引擎能够生成可访问本机硬件平台的 XR 功能的可移植代码。有关通过游戏引擎进行 OpenXR 开发的更多信息,请查看Unity OpenXR 插件Epic OpenXR 插件 以及。

为什么选择 OpenXR?

OpenGL 和 OpenXR 等抽象 API 允许您定位 API,而硬件供应商则提供独特硬件接口的包装器。专注于开发内容而不是担心硬件兼容性。像 OpenXR 这样的标准在设计时就考虑到了稳定性和持续支持,这是开放标准的一个好处。这意味着随着时间的推移,更新的硬件应该继续支持这些 API。

OpenXR 可以添加新功能吗?

OpenXR 支持核心 API 之上的扩展,您可以查询硬件平台可选支持的这些功能。例如,手势追踪是一项扩展功能,并非所有 XR 耳机最初都支持。要启用这些扩展功能,应用程序可以在运行时检查硬件支持。当前的一些 OpenXR 扩展类型包括:

  • 手部追踪
  • 眼球追踪
  • 手势
  • 控制器支持
  • 调试覆盖
  • 录制/播放挂钩

Snapdragon Spaces 如何利用 OpenXR?

Snapdragon Spaces 提供符合 OpenXR 标准的运行时和各种 OpenXR 扩展以及示例应用程序来展示用法。要开始使用,请访问Snapdragon Spaces 开发者门户

2.2 自定义启动器

Snapdragon Spaces 定制启动器
Snapdragon Spaces 当前的架构针对创建头戴式体验进行了优化,主要应用体验在耳机/眼镜中,由手部跟踪、硬件控制器或模拟控制器的触摸屏界面支持,后者被称为配套控制器,所有控制器都使用 OpenXR 配置文件进行通信。

这种架构允许跨外形尺寸构建和运行某些应用程序,而无需重新编译。因此,了解幕后发生的事情的架构非常重要。

自定义启动器

在为 Snapdragon Spaces 构建应用程序时,启动的第一个活动是包含的自定义启动器,它查询设备是否存在 Snapdragon Spaces 运行时,并执行权限检查。一旦这些通过,这个自定义启动器将检查设备,看看它是否通过手机加眼镜外形连接,或者是否通过纯粹的头戴式外形连接。

在头戴式外形中,为耳机设计的活动直接在设备上启动。

在移动加眼镜的外形中,配套控制器活动立即在移动电话上启动,而为耳机设计的活动则在连接的眼镜上启动。这两个活动彼此不了解,并通过 OpenXR 桥进行通信。即使伴侣控制器活动被滑开并关闭,它也不会关闭应用程序,并且耳机活动仍将运行,需要来自应用程序的正确退出信号或强制停止。

眼镜未连接

如果在未连接眼镜的情况下在手机上启动头戴式 Spaces 应用程序,则头戴式 Activity 将在移动设备上启动。只需将 Activity 从 Android UI 上滑开即可退出。

伴侣控制器

在连接手机的外形尺寸上,默认情况下提供配套控制器作为包含的预编译 Android 活动,以处理使用触摸屏的输入。这个预编译的二进制文件将触摸作为按钮传输,并将旋转信息发送到 OpenXR 运行时,然后由运行的活动读取。

请添加图片描述

如何使用配套控制器:

  • 触摸板上的单击被映射为触发选择或单击事件。
  • 应用程序可以选择如何响应按钮Menu。
  • 控制器的旋转可以使用三个自由度从设备指针旋转地引导“激光指示器”。
  • 可reset button用于根据对齐校准的需要重新调整设备的方向。

虽然此外形尺寸不支持其他按钮,因为功能仅限于符合 OpenXR 控制器配置文件,但可以自定义配套控制器屏幕的设计和按钮放置。有关更多详细信息,请参阅自定义控制器。

2.3 双渲染融合(实验性)

Dual Render Fusion 代表了一种新的 Snapdragon Spaces 架构,可支持连接到头戴式设备的手机的束缚外形。这种设计的独特之处在于,它为头戴式设备提供了充当手机扩展的能力,从而提供了移动应用程序添加 XR 的能力,无需妥协。

架构差异

针对连接 AR 眼镜的手机外形,Snapdragon Spaces 推出了Custom Launcher中描述的头戴式模型。头戴式模型的概念是在头戴式设备上调度正在运行的沉浸式应用程序,其中手机充当模拟物理控制器配件,通过 OpenXR 运行时从控制器到耳机进行单向通信。

启用双渲染融合后,单个 Android 活动可以同时以低延迟渲染到手机和连接的 AR 眼镜。
在这里插入图片描述

平台

沉浸式AR眼镜

目前,某些移动和联网 AR 眼镜配置支持双渲染融合。请注意,仅支持此处列出的设备,不支持所有其他设备。

移动设备眼镜去哪买
摩托罗拉 Edge+ 或 Edge 30 Pro联想ThinkReality A3Snapdragon Spaces 开发者门户

智能眼镜

智能眼镜目前不支持双渲染融合。要表达兴趣,请在Snapdragon Spaces 产品路线图中添加投票

混合现实(直通式 AR)

VR 耳机的混合现实直通模式目前不支持双渲染融合。要表达兴趣,请在Snapdragon Spaces 产品路线图中添加投票 。

虚拟现实

虚拟现实耳机目前不支持双渲染融合。

支持的开发路径

统一

目前,仅使用 Unity 2021.3.16 LTS 及更高版本以及 Unity OpenXR Plug-in 1.6.0 和 Snapdragon Spaces SDK for Unity 0.13.0 及更高版本支持双渲染融合。这是将 AR 融入移动体验的最快、最简单的方法。有关更多详细信息,请参阅双渲染融合的 Unity 设置指南

虚幻引擎

双渲染融合目前正处于虚幻引擎的研发阶段。要表达兴趣,请在Snapdragon Spaces 产品路线图中添加投票 。

Android Studio 和 OpenXR

Dual Render Fusion 目前正处于 Android Studio 的研发阶段。要表达兴趣,请在Snapdragon Spaces 产品路线图中添加投票 。

3 功能概述

3.1 一般特征

Snapdragon Spaces提供一系列感知功能来帮助开发者打造XR体验。

请注意,以下功能已针对包含中等照明的理想条件下的室内体验而构建和测试。由于当前硬件设计的性质,不同的环境和照明条件可能会提供不同程度的感知质量准确度。因此,目前不建议或支持使用当前硬件的户外用例,同时正在对未来的设计进行改进。

位置追踪
位置跟踪精确地绘制环境图,并估计 XR 设备在 3D 空间内六个自由度的位置、方位和方向。这使得开发人员能够了解并跟踪最终用户相对于世界的位置。XR 内容将在场景中相对于最终用户的位置、头部位置和方向正确渲染。

局部空间锚点
本地锚点使 XR 内容能够放置在通过位置跟踪生成的地图上给定位置、位置和方向的空间空间中,并在会话期间将其保留在本地。

如何使用本地锚点请参考示例文档:

  • Unity 锚点示例

  • 虚幻引擎锚点示例
    要在运行时保存和加载锚点,请参阅示例文档的特定章节:

  • Unity Spaces 主力店

  • 虚幻引擎加载和保存锚点

命中测试
命中测试可用于通过向世界发送射线并检查任何命中结果来检索现实世界中的物理点。

请参阅有关如何进行命中测试的示例文档:

  • Unity 命中测试示例
  • 虚幻引擎命中测试示例

相机框架访问

相机帧访问功能可以查询 XR 设备的 RGB 相机。检索到的数据可用于多种目的,例如创建远程解决方案或将数据输入第三方感知库。

有关如何捕获的信息,请参阅示例文档:

  • Unity 相机帧访问示例
  • 虚幻引擎相机帧访问示例

3.2 相互作用

凝视控制器

扩展用户的视线方向是触发输入的一种简单方法。

实现凝视指针的典型方法可能是将指针连接到相机,以便它始终在用户前面的固定距离处呈现。这可能会因世界中其他对象或效果的渲染顺序而变得复杂。有时,凝视指针可能会稍微滞后于用户的移动,并且还可能导致边缘周围稍微模糊的视觉效果。

通过使用合成层,可以以更高的稳定性和视觉保真度渲染凝视指针,但会牺牲一些性能。指针可以在世界上所有其他东西之后简单地渲染。然后,在将图像提交到屏幕之前,将指针合成到最终渲染的图像中,以便指针具有清晰的边缘,并且图像保持稳定。

  • Unity Gaze 指针交互示例
  • Unity Gaze Pointer 组合图层示例
  • 合成层简介

伴侣控制器

配套控制器(又名主机控制器)是一种软件控制器,它使用智能手机作为 3DoF 控制器进行输入。控制器包括可分配给操作的屏幕输入。然而,重新居中按钮不会向引擎端报告任何内容,而只是重置传递给应用程序的姿势。

XR 控制器

Snapdragon Spaces 插件包含一组通用 XR 控制器,用于可视化 VR 耳机的连接设备。可视化 XR 控制器或设备指针之间的选择由引擎两侧的管理组件控制。

在 Unity 中,开关由控制器管理器组件管理,而在虚幻引擎中,它在指针控制器蓝图中完成。

在 Unity 的情况下,控制器实现使用混合形状来提供有关每个按钮状态的准确视觉反馈。Unity 还支持触觉反馈。

手部追踪

手部跟踪通过直接触摸或抓取 UI 元素(带或不带虚拟力反馈)、管理用于远距离与 UI 交互的射线指针或响应特定手势命令,提供更自然的前向输入选项。目前不支持自定义手势。

有关手部跟踪的更多详细信息,包括支持的手势和最佳实践,请参阅手部跟踪设计和用户体验。

有关如何集成手势追踪的示例文档,请参阅:

  • 扩展 Unity 手部跟踪示例
  • 基本 Unity 手部追踪示例
  • 基本虚幻引擎手部追踪示例

3.3 环境理解

Snapdragon Spaces 提供一系列环境理解功能,帮助开发者打造 XR 体验。

请注意,以下功能已针对包含中等照明的理想条件下的室内体验而构建和测试。由于当前硬件设计的性质,不同的环境和照明条件可能会提供不同程度的感知质量准确度。因此,目前不建议或支持使用当前硬件的户外用例,同时正在对未来的设计进行改进。

平面检测

平面检测能够识别物理环境中的水平和垂直表面。此功能使开发人员能够将其 AR 内容锚定到这些表面,包括墙壁、地板和桌子。

请参阅有关如何检测平面的示例文档:

  • Unity 平面检测示例
  • 虚幻引擎平面检测示例

图像追踪
图像跟踪能够识别和跟踪图像目标,以便虚拟地增强它们。

用于图像跟踪目的的当前图像目标位于此处。

如何识别图像目标请参考示例文档:

  • Unity 图像跟踪示例
  • 虚幻引擎图像跟踪示例

空间网格划分
空间网格划分可以创建近似物理环境的网格。

请参阅有关如何启用空间网格划分的示例文档:

  • Unity 空间网格划分示例
  • 虚幻引擎空间网格划分示例
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值