Отрегулируйте фокусировку камеры в ARKit
Я хочу настроить фокусировку физической камеры устройства в режиме расширенной реальности. (Я не говорю об объекте SCNCamera
.)
В форуме форума Apple Dev, я читал, что автофокус будет мешать обнаружению объекта ARKit, что имеет смысл для меня.
Теперь я работаю над приложением, где пользователи будут близко к объекту, на который они смотрят. Фокусировка камеры по умолчанию делает все очень размытым, когда ближе к объекту, чем около 10 см.
Можно ли настроить фокусировку камеры перед инициализацией сцены или, желательно, на сцене?
20.01.2018
По-видимому, решения этой проблемы по-прежнему нет. Вы можете узнать больше об этом на этот пост reddit и этот форум разработчиков post для частных обходных API API и другой (не помогающей) информации.
25.01.2018
@AlexanderVasenin предоставил полезное обновление, указывающее на документацию Apple. Он показывает, что ARKit
сможет поддерживать не только фокусировку, но и автофокусировку с iOS 11.3.
См. Мой пример использования ниже.
Ответы
Ответ 1
Как заявленный Александром, iOS 11.3 приносит автофокус в ARKit.
соответствующий сайт документации показывает, как это объявлено:
var isAutoFocusEnabled: Bool { get set }
Вы можете получить к нему доступ таким образом:
var configuration = ARWorldTrackingConfiguration()
configuration.isAutoFocusEnabled = true // or false
Однако, поскольку по умолчанию это true
, вам не нужно даже устанавливать его вручную, если вы не решите отказаться.
Ответ 2
UPDATE: Начиная с iOS 11.3 ARKit поддерживает автофокусировку, и по умолчанию она включена (подробнее). Ручная фокусировка по-прежнему недоступна.
До iOS 11.3 ARKit не поддерживал настройку ручной фокусировки и автофокусировку.
Вот ответ Apple на эту тему (октябрь 2017):
ARKit не запускается с включенной автофокусом, так как это может отрицательно повлиять на определение плоскости. Существует существующий запрос функции для поддержки автофокусировки и нет необходимости запрашивать дополнительные запросы. Любые другие несоответствия фокуса должны быть представлены как отчеты об ошибках. Обязательно включите модель устройства и версию ОС. (источник)
Существует другой поток на форумах Apple, на которых разработчик утверждает, что он смог настроить автофокус, вызывая метод AVCaptureDevice.setFocusModeLocked(lensPosition:completionHandler:)
на private AVCaptureDevice
, используемый ARKit, и похоже, что это не влияет на отслеживание. Хотя сам метод является публичным, ARKit AVCaptureDevice
нет, поэтому использование этого взлома в производстве скорее всего приведет к отказу в App Store.