Arcore-移除锚点后,框架会保持UpdatedTrackables

时间:2019-06-05 20:56:10

标签: java android augmented-reality arcore

我在从场景中删除锚点时遇到问题。

在删除它们之后,我的框架仍然保存了updatedTrackables,并且在调用onUpdates时,因为它仍然具有updatedTrackables,因此会自动再次插入节点。 (看起来它永远不会被移除)。

在这里我删除模型

private void removeAnchorNode(AnchorNode nodeToremove) {
    //Remove an anchor node
    if (nodeToremove != null) {
        arFragment.getArSceneView().getScene().removeChild(nodeToremove);
        nodeToremove.getAnchor().detach();
        nodeToremove.setParent(null);
        nodeToremove = null;
        Toast.makeText(this, "Test Delete - anchorNode removed", Toast.LENGTH_SHORT).show();
        modelsIn.remove(0);


    } else {
        Toast.makeText(this, "Test Delete - markAnchorNode was null", Toast.LENGTH_SHORT).show();
    }
}

但是在此帧之后调用onUpdate时。getUpdatedTrackables(AugmentedImage.class);仍然返回相同的集合,这使得再次创建模型。

@Override
public void onUpdate(FrameTime frameTime) {

    Frame frame = arFragment.getArSceneView().getArFrame();
    Collection<AugmentedImage> images = frame.getUpdatedTrackables(AugmentedImage.class);
        for (AugmentedImage image : images){
            if (image.getTrackingState().equals(TrackingState.TRACKING)){
                oldImages = images;
                if (image.getName().equals("fox.jpg") && !modelsIn.contains("fox")){
                    Anchor anchor = image.createAnchor(image.getCenterPose());
                    addingModel = true;
                    createModel(anchor, "fox");
                    modelsIn.add("fox");

                } else if (image.getName().equals("ghost.jpg") && !modelsIn.contains("ghost")){
                    Anchor anchor = image.createAnchor(image.getCenterPose());
                    addingModel = true;
                    createModel(anchor, "ghost");
                    modelsIn.add("ghost");

                }
            }
        }
}

我尝试实现处理程序以使其等待,直到将其从集合中删除为止,但我不知道它需要多长时间,并且我可以添加其他模型。

有人可以帮忙吗?

非常感谢您。

0 个答案:

没有答案