Добавьте этот новый метод
private void clearAllModel() {
List<Node> children = new ArrayList<Node>(arFragment.getArSceneView().getScene().getChildren());
for (Node node : children) {
if (node instanceof AnchorNode) {
AnchorNode tmp = (AnchorNode) node;
if (tmp.getAnchor() != null) {
tmp.getAnchor().detach();
}
}
}
}
Затем вызовите его на
arFragment.setOnTapArPlaneListener((hitResult, plane, motionEvent) -> {
clearAllModel();
placeModel(hitResult.createAnchor()));
}
Объяснение:
, как вы можете видеть, каждый раз, когда вы нажимаете и placeModel
в addNoteToScene
вызывается, есть эта строка кода
anchorNode.setParent(arFragment.getArSceneView().getScene());
вся ваша существующая модель (которая находится на узле привязки) находится под этим arFragment.getArSceneView().getScene()
как дочерний элемент
с мой метод предложения, в первый раз есть 0 дочерних (ноль). Так что он будет двигаться дальше и просто сделает placeModel
, а затем у него будет 1 ребенок. Во второй раз он удаляет этого 1 ребенка, и снова вызывается placeModel
, и снова делает его 1 ребенком. И так далее ... итак, будет только 1 ребенок (модель)