У меня проблема с удалением якорей со сцены.
После их удаления мой фрейм все еще сохраняет 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 получает вызов после этого frame.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");
}
}
}
}
Я пытался реализовать обработчики, чтобы заставить его ждать, пока он не удалит его из коллекции, но я не знаю, сколько времени это займет, и у меня есть другие модели, которые можно добавить.
Может кто-нибудь помочь, пожалуйста?
Заранее большое спасибо.