Как получить Frame (). Камера ARCore - PullRequest
0 голосов
/ 03 апреля 2019

Я пытаюсь поставить якорь прямо перед камерой на расстоянии 1 м.

Я нашел код, чтобы сделать это.

mAnchors.add(session.createAnchor(
frame.getCamera().getPose()
    .compose(Pose.makeTranslation(0, 0, -1f))
    .extractTranslation()))

Мой код выглядит следующим образом:

val anchor =Session(this).createAnchor(
Frame().camera.pose.compose(Pose.makeTranslation(0f,0f,-1f)))

Проблема в конструкторе Frame (). Компилятор приходит с ошибкой:

«Невозможно получить доступ»: оно защищено / защищено и упаковано / в Кадр '

Есть ли способ инициализации камеры Frame (). Или я делаю что-то не так?

1 Ответ

0 голосов
/ 04 апреля 2019

вы не инициализируете фрейм. Вы получаете это от сеанса

ты делаешь что-то вроде этого

@ Override

  public void onDrawFrame(GL10 gl) {

    // Clear screen to notify driver it should not load any pixels from previous frame.

    GLES20.glClear(GLES20.GL_COLOR_BUFFER_BIT | GLES20.GL_DEPTH_BUFFER_BIT);



    if (session == null) {

      return;

    }

    // Notify ARCore session that the view size changed so that the perspective matrix and

    // the video background can be properly adjusted.

    displayRotationHelper.updateSessionIfNeeded(session);



    try {

      session.setCameraTextureName(backgroundRenderer.getTextureId());



      // Obtain the current frame from ARSession. When the configuration is set to

      // UpdateMode.BLOCKING (it is by default), this will throttle the rendering to the

      // camera framerate.

      Frame frame = session.update();
    } catch (Throwable t) {

      // Avoid crashing the application due to unhandled exceptions.

      Log.e(TAG, "Exception on the OpenGL thread", t);

    }
}
...