Sceneform SDK可以访问ARCore SDK的所有功能吗?

时间:2018-05-16 13:58:41

标签: arcore sceneform

我浏览了ARCore SDK和Sceneform SDK中提供的所有示例。但在Sceneform示例中,它只检测平面而不是Walls。但它适用于ARCore SDK中提供的示例。 那么Sceneform中没有可用的墙壁检测?是否有使用Sceneform无法访问的ARCore功能?

1 个答案:

答案 0 :(得分:1)

使用Sceneform时,可以使用Android上的ARCore的所有功能。最常见的用例非常简单,例如在地板平面上处理对象。

要访问ARCore会话,您可以致电ArSceneView.getSession()

您可以通过调用Scene.setOnUpdateListener()然后在侦听器调用ArSceneView.getArFrame()中设置Scene侦听器来执行每帧操作。

例如

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    this.sceneView = (ArSceneView) findViewById(R.id.scene_view);
    sceneView.getScene().setOnUpdateListener((this::onSceneUpdate));
}

private void onSceneUpdate(FrameTime updatedTime) {
    Frame frame = sceneView.getArFrame();
    Collection<Anchor> updatedAnchors = frame.getUpdatedAnchors();
    for (Anchor anchor : updatedAnchors) {
        // Handle updated anchors...
    }
}

对于需要会话配置的ARCore功能,您可以在自己的代码中创建会话并调用ArSceneView.setupSession()或者如果您使用ArFragment,您可以扩展ArFragment可以实现getSessionConfiguration(),在创建后立即调用会议。

请记住,如果直接配置会话以将更新模式设置为LATEST_CAMERA_IMAGE。