已知问题

目前存在几个已知问题可能会影响开发工作流程。这些问题已知,并将在未来的Unity包或Snapdragon Spaces服务运行时版本中得到解决。

 

如果问题不存在,请检查SDK的整体已知问题

 

Gradle构建问题

在某些情况下,添加自定义控制器存档可能导致Gradle缓存错误。这种情况下,删除项目文件夹中Temp > gradleOut目录下生成的临时Gradle项目文件夹可能会解决问题。

 

从Snapdragon Spaces SDK 0.15.0升级的项目

 

在0.15.0版本之后,Think Reality A3在将应用程序置于后台时处理生命周期的TRIM_MEMORY标志已被移除。如果开发者在其项目中使用了0.15.0版本的SDK,然后将Snapdragon Spaces插件更新到较新版本,Unity可能会缓存0.15.0版本的设置,导致后续构建时可能出现崩溃或黑屏的问题。为避免此问题,请执行干净的构建而非增量构建,或者删除项目的库文件夹。

 

手部跟踪问题

一般问题:

● 头部移动可能会导致手部移动。

 

用户体验限制:

● 只能使用张开手势释放物体。

● 在某些情况下,手部之间的遮挡可能导致左右手反转。

● 如果显示手部虚拟形象,指尖可能会出现轻微抖动。一般不建议在AR环境中显示虚拟形象。

 

与AR Foundation相关的问题:

 

AR射线投射命中时,成功后返回的AR射线命中对象的trackableId可能会错误报告。

如果在平面检测功能设置中启用了使用场景理解的平面检测,AR射线命中对象的ARRaycastHit.trackableId字段将始终返回0-0作为会话唯一标识符。如果禁用了使用场景理解的平面检测,则AR射线命中对象的ARRaycastHit.trackableId将返回射线命中的平面的trackableId。

 

AR Mesh Manager 属性

AR Mesh Manager 组件具有一些属性,这些属性在 Snapdragon Spaces Unity 插件的子系统实现中不受支持。如果在启用了空间网格化(实验性)功能的构建中尝试使用任何不支持的属性,将会显示警告。建议按照感知样例描述中所述,使用 Spaces AR Mesh Manager Config。

 

AR Camera Manager 和 AR Camera Background 问题

在场景中启用 AR Camera Manager 将会与物理摄像头建立连接,以获取其可用性信息。在启用 AR Camera Manager 的场景之间频繁切换可能会对连接产生负面影响,并导致应用程序冻结等意外结果。如非必要,建议在不需要时禁用 AR Camera Manager。

 

从 Snapdragon Spaces SDK 版本 0.20.0 开始,如果启用了 AR Camera Background 组件,在某些设备上可能会在调用 ARCameraManager.frameReceived 事件后出现渲染问题,如图像冻结等。为确保在所有设备上正确处理摄像头帧访问,请建议禁用此组件。

 

同时使用视频捕获或流媒体服务与摄像头帧访问功能可能会导致渲染图像异常或未处理异常。建议在应用程序中处理 YUY2 和 Y'UV420sp 帧格式,因为在这些情况下可能会提供 YUY2 而不是 Y'UV420sp。

 

双重渲染融合已知问题

应用程序后台运行问题

使用Dual Render Fusion构建的应用程序默认情况下不会在后台运行。这是已知行为,因为Dual Render Fusion应用程序在智能手机设备上前台运行,当运行其他应用程序时会被置于后台。

 

智能手机屏幕显示黑屏

如果尝试运行Fusion应用时智能手机屏幕显示黑屏,请确保在OpenXR设置中启用了Dual Render Fusion功能,并且智能手机设备运行的是Snapdragon Spaces Services 0.13.0或更高版本。另外,请验证项目是否是使用了OpenXR 1.6.0或更高版本构建的。

即使启用了Dual Render Fusion功能,伴随控制器仍自动启动


启动

如果伴随控制器仍然自动启动,请确保在OpenXR设置中启用了Dual Render Fusion功能,并且在基本运行时功能设置中未勾选“在查看器上启动应用程序”和“在主机上启动控制器”的选项。

 

眼镜中的渲染以分屏模式显示

这可能是由于Snapdragon Spaces Services中未启用的Android权限导致的。如果应用程序处于这种状态,请卸载并重新安装Snapdragon Spaces Services。执行此操作后,打开Snapdragon Spaces Services应用并确保已启用“在其他应用程序上方显示”权限,然后重新启动智能手机,并再次尝试运行应用程序。


图片50.png


眼镜中的渲染显示在有限的水平视场内

如果在使用Dual Render Fusion功能的应用程序运行时,眼镜中的渲染以分屏模式显示,这可能是因为Snapdragon Spaces Services未启用所需的Android权限。在这种情况下,需要卸载并重新安装Snapdragon Spaces Services应用程序。执行完此操作后,请确保打开Snapdragon Spaces Services应用程序,并确保已启用“在其他应用程序上方显示”的权限。然后重新启动您的智能手机,并再次尝试运行应用程序。


图片51.png


使用动态光照的应用程序导致崩溃

在某些情况下,运行使用动态光照的应用程序可能导致应用程序崩溃。在这种情况下,一些人发现离开动态光照可以获得更好的结果。此外,某些后处理效果可能与智能手机屏幕兼容,但与眼镜不兼容。

 

眼镜中的渲染表现出不同的性能问题

默认情况下,Unity中的游戏渲染摄像机会根据游戏摄像机的姿态渲染整个场景。由于双重渲染融合会向多个摄像机进行渲染,如果场景过于复杂,即使智能手机屏幕上只有2D画布,也可能会导致性能开销较高。当只渲染画布时,可以通过将渲染到智能手机的摄像机组件中的Culling Mask值设置为Nothing来优化性能。而当渲染世界空间中的对象时,则需在Culling Mask字段中移除除了对象层之外的所有内容。

 

手部跟踪在眼镜断开连接时会冻结。

使用手部跟踪时,如果眼镜断开连接,并且在OpenXR设置中手部跟踪的自动启动开关被禁用,手部跟踪将不会在重新连接眼镜时自动重新启动。将此开关设置为true将会在重新连接眼镜时重新启动子系统,并应重新启用手部跟踪功能。

 

图片52.png


强制屏幕方向为竖屏在未启用双重渲染融合(实验性功能)特性时,可能导致眼镜的渲染显示不正确。

 

当直接将应用程序启动到眼镜上时,应用程序的默认方向必须设置为“横向左”。

 

请在 Project Settings > Player > Resolution and Presentation > Orientation > Default Orientation 中进行设置。

 

在脚本代码中设置Screen.orientation = ScreenOrientation.Portrait; 可能会导致眼镜上的渲染显示不正确,特别是在未启用双重渲染融合(实验性功能)特性时。不正确的渲染表现为眼镜显示黑屏或每只眼睛呈现出非立体视觉。

 

请查看SDK中提供的Fusion Screen Setup组件示例,了解如何仅在启用双重渲染融合(实验性功能)特性时才调用此类设置。