Как отслеживать мою текущую позицию в ARCore и Sceneform? - PullRequest
0 голосов
/ 10 декабря 2018

В приложении с ARCore и Sceneform мне нужно каким-то образом контролировать мое (устройство, действительно) движение в пространстве ARCore?

В результате я хочу нарисовать луч из выбранной точки (Anchor / AnchorNode)через мою текущую позицию, или чтобы рассчитать расстояние от выбранной точки до здесь, и обновить их во время движения.У меня есть идеи, как рассчитать или нарисовать, но как получить обновления?

Ответы [ 2 ]

0 голосов
/ 26 декабря 2018

Сначала настройте прослушиватель при обновлении

fragment.getArSceneView().getScene().addOnUpdateListener(frameTime -> {
        fragment.onUpdate(frameTime);
        onUpdate();
    });

В OnUpdate () вызовите Camera.getDisplayOrientedPose ()

Frame frame = fragment.getArSceneView().getArFrame();

    Camera camera = frame.getCamera();

    if (camera.getTrackingState() == TrackingState.TRACKING){
        Pose CameraPose = camera.getDisplayOrientedPose();
    }

При перемещении поза камеры будет обновляться.

0 голосов
/ 12 декабря 2018

В методе BaseArFragment # onUpdate () вы можете получить объект Camera , вызвав ArFragment # getArSceneView () , ArSceneView # getArFrame () и Frame # getCamera () .

override fun onUpdate(frameTime: FrameTime?) {
    super.onUpdate(frameTime)
    doSomething(arSceneView.arFrame?.camera?.pose)
}

Этот Camera является объектом Node, который отслеживает положение устройства просмотра и имеет Pose объект, который содержит необходимую вам информацию о положении и повороте.

...