在我的AR应用程序中,我希望某些内容只能放置在墙壁上,而某些内容只能放置在地板上。我试图通过在分配给会话的ARCoreSessionConfig对象上设置PlaneFindingMode,然后重新设置会话来实现此目的,但是无论我选择什么应用程序,该应用程序仍然可以检测到水平和垂直表面。
public void SetVertical(bool vertical)
{
if (vertical)
{
config.PlaneFindingMode = DetectedPlaneFindingMode.Vertical;
}
else
{
config.PlaneFindingMode = DetectedPlaneFindingMode.Horizontal;
}
StartCoroutine(ResetSession());
}
private IEnumerator ResetSession()
{
ARCoreSession session = goARCoreDevice.GetComponent<ARCoreSession>();
ARCoreSessionConfig myConfig = session.SessionConfig;
DestroyImmediate(session);
yield return null;
session = goARCoreDevice.AddComponent<ARCoreSession>();
session.SessionConfig = myConfig;
session.enabled = true;
}
我还发现,即使删除此代码并手动设置PlaneFindingMode,也会出现相同的结果。即使将PlaneFindingMode设置为Disabled,它仍会在墙壁和地板上找到飞机。
配置肯定分配给了会话,所以我不确定其他地方。我在这里想念其他东西吗?