【问题标题】:How to remove all planes in ARCore如何删除 ARCore 中的所有平面
【发布时间】:2019-01-18 04:57:06
【问题描述】:

如何在 ARCore 中删除所有检测到的平面并重新开始检测它们?这甚至可能吗?我用 arcore remove/delete all planes 在 Google 和 Stackoverflow 上进行了搜索,但没有发现任何有用的东西。

/Edit:我希望在启动版本检查后让 ARCore 处于相同状态,显示灰色的手部运动动画并且没有检测到平面(因此必须先删除它们)并且 ARCore 正在尝试检测新飞机。

【问题讨论】:

  • 最简单的方法是重新启动活动,还是销毁会话并创建一个新的?
  • 具有正确意图标志的魅力。谢谢!
  • 你是怎么解决这个问题的?使用意图标志的正确方法是什么?

标签: arcore removeall


【解决方案1】:

Clayton Wilkinson 所说的方式重新启动应用程序,我使用以下代码完成了它:

Intent i = new Intent(context, Main.class);
i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK|Intent.FLAG_ACTIVITY_CLEAR_TASK);
context.startActivity(i);

【讨论】:

  • 也许重启活动可以解决您的问题,但总体上不是正确的解决方案
【解决方案2】:

也许如果你提供一些代码,我可以更好地解释你的情况,但你只需要:

frame.getUpdatedTrackables(Plane.class).clear();

编辑(保留以前的答案以供将来研究)

现在我知道你正在使用sceneform,你必须重新启动活动。 对于这个库,我们还没有像 .onPause、.onResume、.clear 等这样的调用。

所以现在你可以做的是重新启动活动。

Button btn = findViewById(R.id.button);
    btn.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            finish();
            startActivity(new Intent(HelloSceneformActivity.this, HelloSceneformActivity.class));
        }
    });

【讨论】:

  • 坏主意,导致您提供的代码行出现java.lang.UnsupportedOperationException at java.util.Collections$UnmodifiableCollection.clear(Collections.java:1116) at at.mts.arnatomy.controller.ar.renderable.RestartView.lambda$viewBehaviour$1$RestartView 异常。请检查我更新的问题。
  • 要重新启动应用程序,您必须添加 Intent 标志,请参阅stackoverflow.com/a/51820095/10030695
  • 我在没有标志的情况下做了。 @ManuelTS
猜你喜欢
  • 2018-03-15
  • 2019-12-15
  • 1970-01-01
  • 2018-02-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多