Обновлено .
ARKit 2.0
Фронтальная камера TrueDepth iPhone X
/ Xr
/ Xs
обеспечивает канал глубины с частотой кадров 15 кадров в секунду, а камера с фронтальным изображением обеспечивает каналы RGB с частотой кадров 60 кадров в секунду.
Принцип работы : Это похоже на систему измерения глубины в MS Xbox Kinect, но более мощное. Инфракрасный излучатель проецирует более 30 000 точек по известному шаблону на лицо пользователя. Затем эти точки фотографируются специальной инфракрасной камерой для анализа. Есть датчик приближения, предположительно, чтобы система знала, когда пользователь достаточно близко, чтобы активировать. Датчик внешнего освещения помогает системе устанавливать уровни выходного освещения .
В настоящий момент только модели iPhone X
/ Xr
/ Xs
имеют камеру TrueDepth. Если в вашем iPhone нет TrueDepth Camera
и Sensor System
(как, например, iPhone SE, iPhone 6s, iPhone 7 и iPhone 8), вы не сможете использовать гаджет для таких функций, как Animoji
, * 1029. * или Depth Occlusion Effects
.
В платформе ARKit 2.0 в конфигурации, которая отслеживает движение и выражения лица пользователя с помощью камеры TrueDepth, используется специальный класс ARFaceTrackingConfiguration
.
Итак, ответ НЕТ , вы можете использовать фронтальную камеру iPhone с чипсетом A11 и A12 (или более поздней версией) или iPhone с TrueDepth Camera
и Sensor System
.
ARKit 3.0 (дополнение)
Теперь ARKit позволяет вам одновременно отслеживать окружающую среду с задней камерой и отслеживать ваше лицо с передней камерой. Кроме того, вы можете отслеживать до 3 лиц одновременно.
Вот два фрагмента кода, как настроить вашу конфигурацию.
Первый сценарий:
let configuration = ARWorldTrackingConfiguration()
if configuration.supportsUserFaceTracking {
configuration.userFaceTrackingEnabled = true
}
session.run(configuration)
func session(_ session: ARSession, didAdd anchors: [ARAnchor]) {
for anchor in anchors where anchor is ARFaceAnchor {
// you code here...
}
}
Второй сценарий:
let configuration = ARFaceTrackingConfiguration()
if configuration.supportsWorldTracking {
configuration.worldTrackingEnabled = true
}
session.run(configuration)
func session(_ session: ARSession, didUpdate frame: ARFrame) {
let transform = frame.camera.transform
// you code here...
}