Sony ToFAR:ToFARToFManager与XR Origin主相机共存问题
解决方案:ToFARToFManager与XR Origin共存时的黑屏问题
可以同时使用ToFARToFManager和XR Origin,黑屏问题大多源于两者的相机渲染冲突或配置重叠,以下是具体解决步骤:
调整相机渲染优先级与清除设置
ToFARToFManager默认会生成独立相机用于采集ToF数据,这个相机可能会覆盖XR Origin的AR背景相机渲染。- 找到场景中ToFAR生成的相机(通常命名为
ToFARCamera),在Inspector面板中将其Depth值设为低于XR Origin下AR Camera的Depth(比如AR Camera设为0,ToFAR相机设为-1),确保AR背景优先渲染。 - 将ToFAR相机的Clear Flags改为
Depth Only,避免它清空AR相机已渲染的背景画面。
- 找到场景中ToFAR生成的相机(通常命名为
复用现有AR相机作为ToF数据源
部分ToFAR版本支持复用现有相机,无需新建相机:
在ToFARToFManager的Inspector面板中,找到Camera Source选项,选择Use Existing Camera,然后指定XR Origin下的AR Camera作为数据源,从根源避免相机冲突。检查XR Origin相机状态
确认XR Origin的Camera Offset下的相机未被ToFAR脚本意外禁用,保持Enabled状态为勾选;同时关闭该相机的Background设置中的Solid Color,保留默认Skybox或设为透明,确保AR背景正常显示。分离点云与AR背景的渲染图层
将ToFAR点云的渲染图层设为单独的PointCloud图层,在XR Origin的相机设置中确保该图层可见,但让AR背景所在图层(如Default或ARBackground)的渲染优先级更高,避免点云覆盖背景。控制初始化顺序
确保AR Session先于ToFARToFManager启动,避免初始化冲突。可以通过自定义脚本控制:public ARSession arSession; public ToFARToFManager tofarManager; void Start() { arSession.enabled = true; StartCoroutine(StartToFARAfterAR()); } IEnumerator StartToFARAfterAR() { yield return new WaitUntil(() => arSession.subsystem != null && arSession.subsystem.running); tofarManager.enabled = true; }
内容的提问来源于stack exchange,提问作者yuuki
相关产品推荐
相关产品推荐

