【问题标题】:Sceneform SDK can access all features of ARCore SDK?Sceneform SDK 可以访问 ARCore SDK 的所有功能吗?
【发布时间】:2026-01-19 19:25:01
【问题描述】:

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

【问题讨论】:

    标签: arcore sceneform


    【解决方案1】:

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

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

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

    例如

    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。

    【讨论】: