如何使用Sceneform对每个帧进行处理?

时间:2018-05-08 20:44:29

标签: arcore sceneform

我想更新与每帧更新的锚点相关联的数据。如何从每个帧的ArSceneView获取帧?

1 个答案:

答案 0 :(得分:5)

ArSceneView在绘制场景之前更新ARCore Frame对象。您可以通过从getArFrame()注册的方法调用setOnUpdateListener()来访问该框架。

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...
    }
}