我浏览了ARCore SDK和Sceneform SDK中提供的所有示例 . 但在Sceneform示例中,它只检测平面而不是Walls . 但它适用于ARCore SDK中提供的示例 . 那么Sceneform中没有可用的墙检测?是否有使用Sceneform无法访问的ARCore功能?
使用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 .
1 回答
使用Sceneform时,Android上的ARCore的所有功能都可用 . 最常见的用例非常简单,例如在地板平面上处理对象 .
要访问ARCore会话,您可以调用ArSceneView.getSession()
您可以通过调用Scene.setOnUpdateListener()然后在侦听器调用ArSceneView.getArFrame()中设置Scene侦听器来执行每帧操作 .
例如
对于需要会话配置的ARCore功能,您可以在自己的代码中创建会话并调用ArSceneView.setupSession()或者如果使用ArFragment,则可以扩展ArFragment可以实现getSessionConfiguration(),在创建会话后立即调用 .
请记住,如果直接配置会话以将更新模式设置为LATEST_CAMERA_IMAGE .