我在从场景中删除锚点时遇到问题。
在删除它们之后,我的框架仍然保存了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");
}
}
}
}
我尝试实现处理程序以使其等待,直到将其从集合中删除为止,但我不知道它需要多长时间,并且我可以添加其他模型。
有人可以帮忙吗?
非常感谢您。