当前位置: 首页 > 知识库问答 >
问题:

为什么ARCore中在“空气”中创建的锚不是静态的

殷安顺
2023-03-14

我使用ARCore和Sceneform实现了一个应用程序,它将AR标记放置在现实世界中的特定gps位置。为了在现实世界中保持标记静态,我使用在“空中”中创建的锚点(与飞机等可跟踪对象无关):

mAnchor=session.createAnchor(
    frame.getCamera().getPose()
        .compose(Pose.makeTranslation(xrotated,y,zrotated))
        .extractTranslation());

其中xrotated、y、zrotated是相机gps位置和目标gps位置之间的相对距离。

但我发现用这种方式创建的锚不是静态的,也就是说,当我移动手机时,标记会与手机平行移动,甚至可以漂移到10米甚至更高。

我试图通过点击屏幕来创建锚点,连接到锚点的渲染节点工作正常。当手机移动时,它会保持静止,就像是现实世界中的一个真实标记。

我发现这样的描述放置一个与可跟踪对象无关的锚点通常不是一个好的体验。可跟踪对象(平面、增强图像、定向点)由ARCore更新,以表示真实世界图像和增强虚拟图像之间的连接。如果你在“空中”放置一个锚,它将相对于真实世界漂移和移动 在https://github.com/google-ar/sceneform-android-sdk/issues/185.

我想知道原因是否只是在空中创建的锚,与可跟踪对象无关,还是其他因素导致标记与摄像机平行移动,但我没有找到。在阿基特,我没有发现这样的问题,所以这是因为阿科尔没有处理GeoAR?

共有1个答案

谭昊乾
2023-03-14

由于您提到的原因,锚点应该连接到现有的可跟踪设备上,以确保跟踪的一致质量。在世界的理解中,不附着任何东西的锚很难保持在固定位置,并且会出现漂移和不稳定的位置。

 类似资料:
  • 问题内容: 在Java中,外部类可以是public,final,default或abstract。为什么不像静态 问题答案: 外部类已经是隐式静态的。 非静态嵌套类(=内部类)意味着内部类隐式对其父类具有引用。 这就是为什么对于嵌套类,您可以区分静态和非静态。对于外部类来说,这是没有意义的。 这是一个了解静态/非静态嵌套类之间的区别的示例。您应该了解为什么在外部类中它没有意义。

  • 记录器应该始终是最终的和静态的吗? 我意识到基本上是必需的,所以我想知道在非静态上下文中使用SLF4J的开销实际上有多高。 问:

  • 问题内容: 为什么我的内部类中没有接口?为什么是天生的?抱歉,如果这是一个愚蠢的问题,我已经尽力一遍又一遍地用Google搜索,但似乎无法将其包裹在脑海中。如为什么不能在内部类/局部类中声明这些? 同样作为一个确认,我们在接口中可以包含静态最终变量的原因是因为它们未指定状态或任何此类实现权?如果我们输了而只使用了final,那么我们需要一个没有意义的实例,因为您无法实例化接口。抱歉,我真的很困惑,

  • 本文向大家介绍你知道什么是锚点吗?它的作用是什么?怎么创建一个锚点?相关面试题,主要包含被问及你知道什么是锚点吗?它的作用是什么?怎么创建一个锚点?时的应答技巧和注意事项,需要的朋友参考一下 这里name="ss" 的a标签、id="ss" 的任意标签都是锚点,简单创建用id就可以,绝大多数标签又可以有id属性,而name仅在a标签中才可以作为锚点

  • 问题内容: 当我发现它是一个接口时,我正在阅读接口。我不太了解什么是静态接口,它与常规接口有何不同? 这是接口的定义。此处的文档: Map.Entry 。 问题答案: 我对它不是内部接口的情况感到好奇。 所述改性剂只允许在嵌套类或接口。在您的示例中,嵌套在接口内部。 对于接口,修饰符实际上是可选的。对于接口来说,这种区别是没有意义的,因为它们不包含任何仍然可以访问外部接口的代码。

  • 问题内容: 作为Java的初学者,我仍然不确定它的含义。有人精通Java 问题答案: 静态表示标记为此类的变量或方法在类级别可用。换句话说,你无需创建类的实例即可访问它。 因此,与其创建一个Foo实例,然后doStuff像这样调用: 你只需直接针对该类调用该方法,如下所示: