Отрегулируйте фокус камеры в ARKit

Я хочу настроить фокус физической камеры устройства в режиме дополненной реальности. (Я не говорю об объекте SCNCamera.)
В сообщении на форуме Apple Dev, я читал, что автофокус может помешать обнаружению объектов ARKit, что для меня имеет смысл.

Сейчас я работаю над приложением, в котором пользователи будут приближаться к объекту, на который они смотрят. Фокус камеры по умолчанию делает все очень размытым, когда объект находится ближе, чем на 10 см.

Могу ли я отрегулировать фокусировку камеры перед инициализацией сцены или, желательно, находясь в ней?


20.01.2018
Судя по всему, решения этой проблемы до сих пор нет. Вы можете узнать больше об этом в этом сообщении Reddit и это сообщение на форуме разработчиков для частных обходных путей API и другой (не помогающей) информации.


25.01.2018
@AlexanderVasenin предоставил полезное обновление, указав на документацию Apple. Это показывает, что ARKit сможет поддерживать не только фокусировку, но и автофокусировку начиная с iOS 11.3.
См. Мой пример использования ниже.


person LinusGeffarth    schedule 10.09.2017    source источник
comment
Вам удалось найти какое-либо решение для этого?   -  person Adam Roszyk    schedule 20.01.2018
comment
Неа. За сообщение продолжают голосовать, но пока никто не ответил и даже не прокомментировал, поэтому я предполагаю, что на данный момент нет решения.   -  person LinusGeffarth    schedule 20.01.2018
comment
Всем хорошие новости: developer.apple.com/documentation/arkit/   -  person Alexander Vasenin    schedule 25.01.2018


Ответы (2)


Как заявил Александр, iOS 11.3 обеспечивает автофокусировку в ARKit.
На соответствующем сайте документации показано, как это объявлено:

var isAutoFocusEnabled: Bool { get set }

Вы можете получить к нему доступ следующим образом:

var configuration = ARWorldTrackingConfiguration()
configuration.isAutoFocusEnabled = true // or false

Однако, поскольку это true по умолчанию, вам даже не нужно устанавливать его вручную, если вы не решите отказаться.

person LinusGeffarth    schedule 25.01.2018

ОБНОВЛЕНИЕ: Начиная с iOS 11.3 ARKit поддерживает автофокусировку, и она включена по умолчанию (подробнее). Ручная фокусировка по-прежнему недоступна.


До iOS 11.3 ARKit не поддерживал ни ручную настройку фокуса, ни автофокусировку.

Вот ответ Apple на эту тему (октябрь 2017 г.):

ARKit не работает с включенной автофокусировкой, так как это может отрицательно повлиять на обнаружение плоскости. Существует существующий запрос функции для поддержки автофокуса, и нет необходимости отправлять дополнительные запросы. Любые другие расхождения в фокусе следует регистрировать как отчеты об ошибках. Обязательно укажите модель устройства и версию ОС. (исходный код)

На форумах Apple есть еще одна ветка, где разработчик утверждает, что ему удалось настроить автофокус с помощью вызывает AVCaptureDevice.setFocusModeLocked(lensPosition:completionHandler:) метод в закрытом AVCaptureDevice, используемом ARKit, и, похоже, он не влияет на отслеживание. Хотя сам метод является общедоступным, AVCaptureDevice ARKit - нет, поэтому использование этого хака в продакшене, скорее всего, приведет к отказу в App Store.

person Alexander Vasenin    schedule 23.01.2018
comment
Ммм спасибо? Я имею в виду 1) мой вопрос не об автофокусе и 2) я уже связал этот обходной путь. - person LinusGeffarth; 23.01.2018
comment
@LinusGeffarth Я просто обобщил ваши выводы в ответе, чтобы упростить задачу другим разработчикам. Вы можете сделать это сами, если хотите. - person Alexander Vasenin; 24.01.2018
comment
Спасибо, что держали нас в курсе! - person LinusGeffarth; 25.01.2018