Как получить положение объектива на ARKit 1.5 - PullRequest
0 голосов
/ 10 мая 2018

До ARKit 1.5 у нас не было возможности отрегулировать фокусировку камеры, и получение положения объектива всегда возвращало бы одно и то же значение.Однако в ARKit 1.5 теперь мы можем использовать автофокусировку, установив ARWorldTrackingConfiguration.isAutoFocusEnabled.Мой вопрос заключается в том, есть ли способ получить текущее положение объектива от ARKit, чтобы я мог применить эффект не в фокусе на своих виртуальных объектах?Я посмотрел на некоторые классы, где эта информация может храниться, например ARFrame или ARSession, но у них, похоже, нет такого поля.

Я наткнулся на этонить , где ОП говорит, что ему удалось установить положение объектива с помощью некоторых частных API, но это было до выпуска ARKit 1.5 и надежного способа отклонить ваше приложение в App Store.

Существуют ли какие-либо законные способы определения положения объектива от ARKit?

1 Ответ

0 голосов
/ 11 мая 2018

Я думаю, что, вероятно, нет, но есть вещи, которые вы можете попробовать.

Матрица intrinsics, обозначенная ARCamera, определяется для выражения фокусного расстояния в пиксельных единицах.Но я не уверен, что с этим измерением вы могли бы (вместе с другими, например, диафрагмой) определить эффект размытия глубины.Не меняется ли он и во время автофокуса (эту часть вы можете проверить, по крайней мере).

API-интерфейсы AVCapture, лежащие в основе ARKit, предлагают индикатор lensPosition, но это общее значение с плавающей запятой.Ноль - это минимальное фокусное расстояние, одно - максимальное, и при отсутствии реальных измерений это соответствует тому, что вы не знали бы, какое размытие применить (или какие физически основанные настройки камеры в SceneKit, настройки Unity использовать) для каждого возможного положения объектива.

Даже если бы вы могли использовать lensPosition, API для получения устройства захвата, используемого ARSession, не существует.Вы, вероятно, можете смело предположить, что это задняя (широкая) камера.

...