Я надеюсь, что это то, что вы ищете. Это сделает стрелку перед телефоном, как только сцена AR начнет отслеживать характерные точки.
// Добавить логическое значение, чтобы обеспечить отображение только 1 стрелки.
boolean placed = false;
// Добавить прослушиватель при обновлении в функции onCreate, так как для этого требуется se c или два для того, чтобы приложение получило позу камеры, и приложение может получить sh, если вы попытаетесь сделать привязку из нулевой позы.
arFragment.getArSceneView().getScene().addOnUpdateListener(this::onUpdateFrame);
// Вы можете получить положение камеры, чтобы сделать привязку перед камерой соответственно в функции обновления.
private void onUpdateFrame(FrameTime frameTime) {
Frame frame = arFragment.getArSceneView().getArFrame();
// If there is no frame, just return.
if (frame == null) {
return;
}
//Making sure ARCore is tracking some feature points, makes the augmentation little stable.
if(frame.getCamera().getTrackingState()==TrackingState.TRACKING && !placed) {
Pose pos = frame.getCamera().getPose().compose(Pose.makeTranslation(0, 0, -0.3f));
Anchor anchor = arFragment.getArSceneView().getSession().createAnchor(pos);
AnchorNode anchorNode = new AnchorNode(anchor);
anchorNode.setParent(arFragment.getArSceneView().getScene());
// Create the arrow node and add it to the anchor.
Node arrow = new Node();
arrow.setParent(anchorNode);
arrow.setRenderable(arrowRenderable);
placed = true; //to place the arrow just once.
}
}
Вам нужно будет внести изменения в преобразование стрелки, чтобы установить его точно в центре перед камерой и в правильной ориентации. Я надеюсь, это поможет вам начать. Ура!