Snapdragon Spaces 开发指南(14)
- 6.4 已知的问题
- 6.5 变更日志
- 虚幻引擎变更日志
- [0.15.0] - 2023-07-31
- [0.14.0] - 2023-05-31
- [0.13.0] - 2023-05-04
- [0.12.1] - 2023-04-03
- [0.11.1] - 2023-02-14
- [0.9.0] - 2022-11-24
- [0.8.0] - 2022-10-13
- [0.7.0] - 2022-08-31
- [0.6.1] - 2022-07-22
- [0.6.0] - 2022-07-21
- [0.5.0] - 2022-06-01
- [0.4.1] - 2022-04-28
- [0.4.0] - 2022-04-28
- [0.3.0] - 2022-03-15
- [0.2.0] - 2022-02-01
6.3.7 空间网格划分(实验性)
6.3.7.1 空间网格划分示例
警告
空间网格功能被标记为实验性的,因为软件包和 Snapdragon Spaces Services 方面的优化目前正在破坏各个版本的向后兼容性。网格法线也尚未实现。
此示例演示了如何生成和可视化近似现实世界环境的空间网格。有关自定义可跟踪对象更新以及虚幻引擎的 AR Trackable Notify
组件功能的基本信息,请参阅虚幻引擎文档(打开新窗口)。为了使用此功能,必须在项目设置 > Snapdragon Spaces 插件下的插件设置中启用它。
6.3.7.1.1 示例如何运行
默认情况下,当打开样本时,它会生成几何图形,其多边形适合检测到的环境。启用“计算法线”选项后,示例会考虑网格法线来生成几何图形,以避免视觉伪影。尽管会产生较高的计算成本,但出于可视化目的,这是推荐的选项。用户还可以使用 UI 的滑块更改空间网格的不透明度。
6.3.7.1.2 空间网格 AR 管理器
BP_SpatialMeshingARManager
蓝图文件(位于 SnapdragonSpacesSamples Content > SnapdragonSpaces > Samples > Spatial Meshing > Placeable 下)通过事件系统集中创建和销毁网格作为增强几何体的操作。此蓝图绑定来自 AR Trackable Notify 组件(打开新窗口)的事件,以对 AR 可跟踪几何形状变化做出反应。当系统不使用法线来检测几何图形时,它会调用“添加/更新/删除跟踪几何图形”事件。与其他情况相反,不同类型的对象可以注册为 UARTrackedGeometry
,以验证它是否是空间网格,其对象分类必须为 EARObjectClassification::Unknown
。 GetObjectClassification
函数可用于检查分类。
Render Spatial Mesh
节点返回一个 actor,其中包含检测到的几何体以及应用的法线。虚幻引擎通过引用将参数显示为返回值a,因此,必须传递表示几何体的参与者的引用以及表示先前索引数量的变量。否则,将多次创建多个参与者。可以监听 On Spatial Mesh Normals Computed
委托,以避免不必要的调用,并仅在法线计算完成时更新网格的可视化(使用Render Spatial Mesh
节点)。此计算在异步线程中完成,以获得更好的性能,并在完成后调用委托。
Set Spatial Meshing Normals Calculation State
节点对于启用或禁用 CPU 法线计算非常有用。此外,如果启用了法线计算,则Get Spatial Meshing Normals Calculation State
将返回 true。
在示例蓝图中,要开始检测,请将Toggle AR Capture
设置为ON。要停止检测,请将其设置为 OFF。停止检测将破坏所有生成的 AR 几何体。此外,必须将场景理解设置为该节点的捕获类型。
6.3.7.1.3 空间网格 AR 会话配置
系统开始使用 D_SpacesSessionConfig_SpatialMeshing
资源(位于 SnapdragonSpacesSamples Content > SnapdragonSpaces > Samples > Spatial Meshing > Core 下)来检测几何图形。该资产是从 SpacesSessionConfig
类派生的数据资产。
会话配置文件提供了一个用于添加边界的字段。每个边界代表一个体积,并且完全在该体积之外的几何图形不会显示。边界数必须大于零才能跟踪网格。
6.4 已知的问题
6.4.1 虚幻引擎的已知问题
目前有几个已知问题可能会影响开发工作流程。这些都是已知问题,将在虚幻引擎插件或 Snapdragon Spaces Services
运行时的未来版本中得到解决。
如果不存在问题,请检查整体 SDK 已知问题
6.4.1.1 空间锚点向后兼容性问题
对于使用插件版本 0.12.1 及更低版本构建的应用程序,锚点与 Snapdragon Spaces Services 版本 0.13.0 及更高版本不兼容。您需要使用插件版本 0.13.0 或更高版本来编译您的应用程序,以避免销毁锚点时发生崩溃。
6.4.1.2 重置位置
在地图加载时重置地图位置当前无法按预期工作。
6.4.1.3 虚幻编辑器启动问题
某些防火墙可能会阻止虚幻编辑器正确启动。解决该问题的一种方法是将 CrashReportClientEditor.exe 重命名为虚幻编辑器安装路径中 Engine/Binaries/Win64
下的其他名称。
6.4.1.4 渲染问题
6.4.1.4.1 小控件性能问题
当应用程序在选择默认开发配置的情况下部署时,在查看器上查看世界空间 UI(小控件)时,帧速率和性能会大幅下降。不幸的是,这个问题的根本原因尚不清楚。当遇到小控件问题时,应选择运输配置。
6.4.1.4.2 将 Vulkan 与 Mipmapping 结合使用时发生崩溃
构建使用 mipmapping 和 Vulkan 的 Snapdragon Spaces 应用程序将导致崩溃。通过在细节级别下的纹理设置中将 Mip Gen Settings 下拉列表设置为 NoMipmaps 来禁用生成 mipmap。
6.4.1.5 AR系统问题
6.4.1.5.1 应用程序启动时崩溃
在应用程序的第一帧上启动 AR 会话(例如,在初始地图的开始播放时)将在虚幻引擎 5.0 中崩溃。在运输配置中构建应用程序或使用不同的引擎版本来防止这种情况。
6.4.1.5.2 解锁手机时崩溃
在虚幻引擎 5.0 中,运行 AR 会话时解锁手机会崩溃。在运输配置中构建应用程序或使用不同的引擎版本来防止这种情况。\
6.5 变更日志
虚幻引擎变更日志
[0.15.0] - 2023-07-31
新增
- 对相机帧访问纹理的下采样支持。
- 示例支持手部跟踪和控制器之间的自动切换。
- 用于手部跟踪的远端交互框。
- 新的空间工具模块用于托管已从主模块移至此处的有用工具。
- 在空间网格示例中添加了不透明度滑块以设置渲染的空间网格的不透明度。
变更
- 示例的注视控制器已更改为利用虚幻引擎的立体图层(打开新窗口)组件。这将导致更稳定的注视指针,因为不会对元素应用任何移动引起的后处理。
- 相机帧访问 OpenXR 调用支持最新的 OpenXR 运行时规范。
- VRX 上阻止了相机帧访问,以进一步改进设备的实现。
- 手部追踪示例已被修改。
- 图像跟踪示例的目标增强已更改。
- 示例的浮动面板距离已更改。
修正
- 手部交互也可以在不显示网格且仅显示关节的情况下进行。
- 图像跟踪模式之间的切换应该没有任何问题。
- 手将不再在地图更改时消失(如果它们在新地图中也处于活动状态)。
- 从示例中的纹理中删除了 mip 贴图设置,以避免与 Vulkan 相关的崩溃。
[0.14.0] - 2023-05-31
新增
- 通过扩展 空间手部交互组件 和 空间手部互动角色 来扩展手部交互的可能性,以支持近端交互。
- 启动主应用程序活动之前的启动过程包括检查 Snapdragon Spaces 服务的
Display over other app
设置。如果运行时未授予相机权限或未启用该设置,则会显示一条提示,将用户转发至 Snapdragon Spaces 服务的配置页面。 - 空间网格可以处理来自运行时端的可能的
EHMDTrackingOrigin::Stage
或EHMDTrackingOrigin::Floor
相关的摄像机高度偏移。以前,网格会出现在错误的位置。 - 用于访问 YUV 相机帧数据的新 API,如示例描述中所述。
变更
- 示例 UI 面板现在始终跟随视线。
- 示例内容的路径已更改,如虚幻引擎设置指南中所述。
- 手部光线将始终保持可见,而不是在没有交互时被禁用。
- 增加了凝视交互标线距离。
修正
- 使用 Export Headless 选项构建应用程序时,清单修改错误。
- 通过 DefaultDistance 设置注视交互标线距离现在可以按预期工作。
- 抓取与手部跟踪的交互已得到改进。
[0.13.0] - 2023-05-04
新增
- 手部追踪已作为示例中的默认输入模式启用。
- 用于远端交互的新手部跟踪组件。
- 可以设置可选的图像跟踪模式,以便更好地控制底层图像跟踪算法的计算周期。有关此更改的更多信息,请访问图像跟踪部分。
- 用于防止应用程序屏幕超时的附加项目设置。
- 相机帧访问功能正在异步计算 RGB 帧以获得更好的性能。
- 新的自定义节点“切换空间功能”启动感知功能,作为“切换 AR 捕获”的替代方案。
变更
- 改变了所有样品的外观。
- 再次添加屏幕方向“横向左”作为强制设置。
- “点”手势被标记为已弃用。
- 包内 SpacesLauncher.aar 和 ServicesHelper.aar 档案的代码改进和更新。
- 使用凝视时,信息面板中的箭头滚动方向会反转。
- 命中测试和平面检测生命周期的改进和变化:
- 删除了内部为 AR 光线投射设置的距离限制。
- 平面范围的计算已更改,可能会破坏向后兼容性。
- 当场景理解后端被禁用时,平面检测、图像跟踪和命中测试子系统将请求运行时相机权限,而不是应用程序相机权限。
修正
- 修复了在编辑器中运行手部跟踪时的崩溃问题。
- 修复了在应用程序进程外部调用
std::join
时发生的崩溃,例如在 Snapdragon Spaces Services 进程或第三方库中。 - 修复了感知功能加载,以便仅在需要时加载它们。
- 如果不再需要,底层的命中测试、平面检测和空间网格划分提供程序将正确停止。在较旧的运行时中,此行为可能会破坏预期的应用程序功能,因为提供程序无法在 20-40 秒内启动。因此,此修复可能会破坏向后兼容性。
- 修复了使用空间网格划分时的内存泄漏。
[0.12.1] - 2023-04-03
新增
- 手部跟踪网格已作为 AR 捕捉模式添加,并且获取手部网格的旧方法已被弃用。
- 支持UE5.0。
变更
- 命中测试可视化已得到改进。
修正
- ARAnchor 和 Raycast 的提及已从蓝图中删除。
- 凝视指针始终绘制在 3D 内容之上。
- 如果命中距离设置为无穷大,则命中测试不再引起问题。
- 相机框架访问改进可防止在某些情况下崩溃。
[0.11.1] - 2023-02-14
新增
- ⚠ 实验空间网格子系统支持和新的示例场景。
- ⚠ 实验性相机框架访问支持和新的示例场景。
- 对 MR 设备的直通支持。
- 插件设置中的其他选项:
- 导出 Headless:启用此选项将导出不带启动器标签的 apk,并使其在应用程序启动器中不可见。
- 备用启动活动:该值允许设置虚幻引擎默认活动之外的另一个活动,该活动应从 SpacesLauncherActivity 启动。
- 跳过权限检查:启用此选项将跳过应用程序启动时进行的权限检查。
- 新的 XR 控制器模型,包括按钮和操纵杆动画。
- 添加了控制器触觉。
变更
- 如果感知子系统尚未启动或相机权限未启用,示例中的 UI 会显示警告消息。
- 主机控制器射线将在切换到它后在样本中重置。
- 默认的命中测试后端已从运行时更改为 XR_APILAYER_QTI_scene_understanding 层。
- 默认的平面检测后端已从运行时更改为 XR_APILAYER_QTI_scene_understanding 层。
修正
- 修复了 OpenXR 功能中错误的 OpenXR 结构初始化。
[0.9.0] - 2022-11-24
新增
- 支持 Oculus Touch 控制器交互配置文件
- 输入控制器根据可用的输入配置文件(指针控制器)而变化。
- 添加了手部网格划分以实现手部跟踪的可视化。
- 向 API 添加了启动和停止功能,用于管理手部跟踪并防止后台执行。
- 在构建之前添加了强制项目设置。
- 添加了用于创建图像跟踪器的异步线程。
- 添加了一个委托,以在跟踪器准备就绪时发出通知。
变更
- 主机控制器的重新居中按钮将光线重置为头部姿势向前而不是会话原点。
- 在锚点示例中添加了针对锚点放置的命中测试。
- 将示例渲染模式更改为转发。
- 更改了输入命名并需要在项目设置中再次设置输入绑定。
修正
- 修复了 pawn 实时传送时的命中测试偏移。
- 修复了显示重叠问题。
[0.8.0] - 2022-10-13
新增
- 锚点示例场景中的新图例面板可阐明不同小工具可视化的含义。
变更
- 应用程序生命周期改进允许按顺序启动 Spaces 应用程序,而无需强制停止 Snapdragon Spaces 服务。
- ⚠ 实验
Spaces Anchor Store
存储加载和保存调用现在是多线程的。加载保存的锚点不会再阻塞主线程。 - 主机控制器存档已更新,具有更好的触摸板视觉效果。
修正
- 删除了有关缺少引擎版本的警告
- 删除了示例项目中未使用的 SteamVR 引用
- 当 Pawn 位置移动时,命中测试表现正确
[0.7.0] - 2022-08-31
新增
变更
- 主机控制器存档已更新,具有亮/暗模式设置和触觉反馈切换。
- Raycast 子系统支持使用更新的示例场景进行连续命中测试。
- 组件版本面板现在包含一个滚动视图,以便将来显示更多组件。
- 更新的 Snapdragon Spaces 服务包含在开发者包中。
修正
- 增量构建的构建问题已得到修复。
[0.6.1] - 2022-07-22
新增
- 在应用程序启动时添加了 Snapdragon Spaces Services 的相机权限检查,并提示在 Snapdragon Spaces Services Android 设置中启用它(如果之前未给出)。
[0.6.0] - 2022-07-21
新增
变更
- 主机控制器存档已更改,现在属于 Microsoft 混合现实运动控制器配置文件(打开新窗口)类型,与上一个版本相比,带有额外的触摸板。
- 更新的 Snapdragon Spaces 服务包含在开发者包中。
[0.5.0] - 2022-06-01
新增
- 平面检测支持和新的示例场景。
- 添加到插件设置中的
Launch Spaces Controller
和Use Custom Controller
选项。 - 添加了带有 Android Studio 项目的
Custom Controller Package
文件夹,用于将自定义 Android 存档构建到开发人员包中。
变更
- 主机控制器已从 Snapdragon Spaces 服务中移出,并作为 Android 存档移至虚幻引擎插件中。
- 更新的 Snapdragon Spaces 服务包含在开发者包中。
修正
- 头部锁定内容的抖动问题。
- 示例修复:
- 当浮动 UI 面板向它们移动时,它们可以正确保持距离。
- 精炼
GazeInteractor
计算以获得独立于平台的水平半部分。、
[0.4.1] - 2022-04-28
修正
- 更新了开发人员包中包含的 Snapdragon Spaces 服务,修复了从 ThinkReality A3 配置中读取错误值的问题。
[0.4.0] - 2022-04-28
新增
- 添加了对 Motorola Edge+、motorola Edge 30 Pro 的支持。
- 主菜单中添加了退出按钮以退出应用程序。
- 应用程序可以在查看器设备上正确启动,无需使用 adb launch 命令。
变更
- 主机控制器更新了新的 UI。
- 不再支持以前的 SM8450 QRD 设备。
- 使用平面检测跟踪层更新了 OpenXR 运行时。
修正
- 凝视指针尺寸减小。
[0.3.0] - 2022-03-15
新增
- ARPin 支持和新的示例地图。
- 主机控制器支持。
- 通过
ControlScreensaver
节点在BP_Pawn
中禁用屏幕超时。 - 每次地图更改时都会重置跟踪原点。这是一个可以在
BP_Pawn
组件中设置的值。
变更
- 使用锚层更新了 OpenXR 运行时。
- 交互示例地图再次启用。
头部跟踪示例
已重命名为位置跟踪示例
。
修正
位置跟踪示例
中使用的玩家网格已修复。- 额外的外观改进。
[0.2.0] - 2022-02-01
新增
Snapdragon Spaces
插件(需要 OpenXR 插件)。- 用于演示 6DoF 头部运动的主菜单和示例图。
- (已禁用)用于演示与 3D 对象和 2D UI 交互的示例地图。