【问题标题】:ARCore will recognize the floor and try to stop the plane recognition after creating the objectARCore 将识别地板并在创建对象后尝试停止平面识别
【发布时间】:2018-10-31 11:35:29
【问题描述】:

在 ARCore 教程中,如果你用相机识别一个平面并触摸它,你将创建一个对象,如果你识别另一个平面,你可以在那里创建另一个对象。 但是,我想识别一个平面并创建一个对象,然后停止平面识别并同时隐藏已经识别的范围。

算法如下: 识别地板 -> 通过触摸识别范围创建对象 -> 停止平面识别,隐藏第一个识别范围,只留下对象。

我只成功地创建了一个对象并阻止了其他对象的创建。 但我不知道我应该如何触摸代码了......请帮助我。

【问题讨论】:

    标签: c# augmented-reality arcore


    【解决方案1】:

    要停止平面识别,您必须访问 ARCore 会话配置

    // If you are using ARCore 1.2
    FindObjectOfType<ARCoreSession>().SessionConfig.PlaneFindingMode = DetectedPlaneFindingMode.Disabled;
    
    // If you are using a previous ARCore version
    FindObjectOfType<ARCoreSession>().SessionConfig.EnablePlaneFinding = false;
    

    要隐藏已经跟踪的平面,您需要找到它们并禁用它们的网格渲染器。在 ARCore 中,你可以做这样的事情(我没有测试过)

    DetectedPlaneVisualizer[] detectedPlanes = FindObjectsOfType<DetectedPlaneVisualizer>();
    for(int i = 0; i < detectedPlanes.Length; i++)
    {
        detectedPlanes[i].transform.GetComponent<MeshRenderer>().enabled = false;
    }
    

    但是,您可以使用我写的ARCore plugin 来简化开发。这样,您只需使用一行代码即可禁用跟踪飞机

    EazyARCoreInterface.VisualizeDetectedPlanes = false;
    

    【讨论】:

    • 感谢您的回复!但是,我停止了平面识别,之前创建的对象出现了一会儿,然后消失了。 DontDestroyOnLoad 似乎也没有效果。有什么办法吗?
    • 您到底尝试了什么?这似乎是一种奇怪的行为。还有,DontDestroyOnLoad 和这个没有关系,所以肯定没用。
    • Desired algorithm 使用 ARCore 进行平面识别 -> 在已识别空间中通过触摸创建对象 -> 删除创建一个对象后创建的原始识别范围(对象保留)-> 不识别额外楼层。当前状态算法 使用 ARCore 进行平面识别 -> 在已识别空间中通过触摸创建对象 -> 已识别的平面和对象立即消失 -> 没有识别到​​额外的楼层。
    • 我想做的就是拥有第一个被识别的对象,但这不起作用。 DontDestroyOnLoad 旨在防止对象被擦除,但这并不合适。如果我删除感知范围,在其上创建的对象似乎也会消失。如果我是对的,我可以在创建对象后隐藏识别的范围吗?
    • 您是否尝试过我在回答中提出的建议?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-10-18
    • 2016-08-13
    • 2011-02-11
    • 1970-01-01
    • 1970-01-01
    • 2018-02-27
    • 1970-01-01
    相关资源
    最近更新 更多