ARCore - изображение из arFragment отличается от отображения фрагмента - PullRequest
0 голосов
/ 18 октября 2018

Я работаю с ARCore в одном из моих проектов.Я использую arFragment в представлении.Исходя из этого, я использую

arFragment.getArSceneView().getArFrame().acquireCameraImage()

, который возвращает image.Это изображение и предварительный просмотр на фрагментах отображаются отличается .Я думал, что то, что я вижу через фрагмент AR, это то, что захватывается с помощью acquireCameraImage, но похоже, что полученное изображение имеет большую часть, чем отображение фрагментов, а также ориентация в альбомной ориентации (портретное представление в отображении фрагмента).

Мне нужен объект изображения, аналогичный предварительному просмотру на дисплее фрагмента.
Есть ли способ получить это?

1 Ответ

0 голосов
/ 25 октября 2018

Как вы правильно написали - публичный метод .acquireCameraImage() получает изображение с камеры, соответствующее текущему кадру:

public Image acquireCameraImage()

Чтобы получить тот же объект изображения, что и при предварительном просмотре во фрагментеДля отображения просто используйте:

public Frame update()

Документация для разработчиков Google ARCore :

Метод update () обновляет состояниеARCore система.Это включает в себя: получение нового кадра камеры , обновление местоположения устройства, обновление местоположения якорей отслеживания, обновление обнаруженных самолетов и т. Д. Этот вызов может вызвать работу OpenGL за пределами экрана.Из-за этого, чтобы избежать ненужных сбросов и перезагрузок буфера кадра, этот вызов не должен выполняться в середине рендеринга кадра или буфера за пределами экрана.Этот вызов может обновить позу всех созданных якорей и обнаруженных самолетов.Набор обновленных объектов доступен через getUpdatedTrackables(Class).Этот вызов в режиме блокировки (см. Config.UpdateMode) будет ожидать до тех пор, пока не будет доступно новое изображение с камеры, или пока не будет достигнут встроенный тайм-аут (в настоящее время 66ms).Если изображение с камеры не поступает по встроенному тайм-ауту, update() вернет самый последний объект Frame.Для некоторых приложений может быть важно знать, был ли фактически получен новый кадр (например, чтобы избежать перерисовки, если камера не создала новый кадр).Для этого сравните временную метку текущего кадра, полученную через getTimestamp(), с ранее записанной временной меткой кадра.Если они разные, это новый кадр.

...