ARCore + Unity:在SessionConfig上设置PlaneFindingMode对平面检测无效

时间:2019-02-06 13:13:16

标签: unity3d arcore

在我的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,它仍会在墙壁和地板上找到飞机。

配置肯定分配给了会话,所以我不确定其他地方。我在这里想念其他东西吗?

0 个答案:

没有答案