Фреймворк ARKit — платформа доповненої реальності від Apple, яка дозволяє розробникам створювати AR-застосунки для iOS без глибоких знань комп’ютерного зору. За даними Apple ARKit Documentation, 2025, фреймворк використовує Visual-Inertial Odometry для точного відстеження положення пристрою в просторі без зовнішніх маркерів. Семантичне розуміння сцени дозволяє розпізнавати горизонтальні та вертикальні площини, визначати освітлення та розміщувати віртуальні об’єкти в реальному оточенні.
Головне
ARKit — це фреймворк доповненої реальності від Apple, анонсований на WWDC 2017 разом з iOS 11. Він об’єднує можливості камери, співпроцесора руху M-серії та нейронного рушія A-чіпів для надання імерсивного AR-досвіду без необхідності спеціалізованого обладнання — лише iPhone або iPad.
ARKit використовує Visual-Inertial Odometry (VIO), який об’єднує дані з камери та інерційних датчиків Core Motion для точного відстеження руху пристрою в просторі. VIO дозволяє фреймворку розуміти, де знаходиться пристрій відносно свого оточення без використання GPS або зовнішніх маркерів.
За даними Apple WWDC 2024, ARKit 6 підтримується на пристроях з чіпом A12 та новіших (iPhone XS, iPad Pro 2018+). Кількість AR-застосунків в App Store перевищила 15 тисяч, а загальна площа розпізнаних площин у всіх AR-сесіях перевищує 100 мільярдів квадратних метрів.
За шість версій ARKit отримав значні покращення: ARKit 1.0 (iOS 11) — базове відстеження та розпізнавання площин; ARKit 2.0 — спільні AR-сесії через ARWorldMap та виявлення 3D-об’єктів; ARKit 3.0 — відстеження тіла людини, сегментація людей та одночасні передня і задня камери.
ARKit 4.0 представив LiDAR-сканер для миттєвого визначення глибини та оклюзії об’єктів, а також Location Anchor для прив’язки AR-контенту до GPS-координат. ARKit 6 додав 4K-відео з HDR, Plane Estimation за допомогою LiDAR та покращену обробку оклюзії.
import ARKit
let configuration = ARWorldTrackingConfiguration()
configuration.planeDetection = [.horizontal, .vertical]
configuration.environmentTexturing = .automatic
let arView = ARSCNView(frame: view.bounds)
arView.session.run(configuration)
arView.debugOptions = [.showFeaturePoints]
view.addSubview(arView)
ARKit працює через цикл AR-сесії, яка запускається з конфігурацією та безперервно аналізує відеопотік з камери. Кожен кадр, фреймворк обчислює положення пристрою (6 ступенів вільності), оновлює мапу розпізнаних площин та коригує положення віртуальних об’єктів — все з частотою 60 кадрів на секунду.
Процес VIO складається з двох паралельних конвеєрів: алгоритм візуальної одометрії відстежує рух характерних точок між кадрами, а інерційні датчики Core Motion прогнозують рух на коротких інтервалах, коли камера швидко рухається або зображення нечітке. Об’єднання двох методів дає точність відстеження до 1 сантиметра.
За даними Apple, ARKit обробляє до 500 характерних точок на кадр, а розмір карти оточення (ARWorldMap) може досягати 100 метрів у діаметрі. Сканування оточення та побудова карти займає близько 2–3 секунди після запуску сесії — весь цей час ARKit накопичує дані з камери та датчиків.
ARAnchor — ключовий об’єкт для розміщення контенту. Коли ARKit розпізнає площину, він створює ARPlaneAnchor із зазначенням положення, розміру та орієнтації поверхні. Розробник реагує на делегат session(_:didAdd:) та розміщує 3D-об’єкт у місці виявленої площини через SceneKit або RealityKit.
Для реалізації перетягування об’єктів використовується ARHitTestResult: при дотиканні до екрану виконується hit-test через кадр ARKit, який повертає точку перетину променя з розпізнаними площинами. Знайдена точка перетворюється на ARAnchor, і об’єкт фіксується в цьому положенні.
func renderer(
_ renderer: SCNSceneRenderer,
didAdd node: SCNNode,
for anchor: ARAnchor
) {
guard let planeAnchor = anchor
as? ARPlaneAnchor else { return }
let boxNode = SCNNode(
geometry: SCNBox(
width: planeAnchor.extent.x,
height: 0.01,
length: planeAnchor.extent.z,
chamferRadius: 0
)
)
node.addChildNode(boxNode)
}
ARKit надає набір технологій, які роблять доповнену реальність реалістичною та функціональною: відстеження руху з 6 ступенями вільності, розуміння сцени через розпізнавання площин та меж, оцінка освітлення для правильного накладання тіней, оклюзія людей та відбивні поверхні на основі карт оточення.
Motion Capture (ARKit 3+) — технологія відстеження тіла людини в реальному часі через камеру. Дозволяє анімувати персонажів рухами користувача без зовнішніх датчиків: розпізнається 18 суглобів з частотою 60 Гц. Використовується в фітнес-застосунках та для прототипування анімації.
Спільні AR-сесії (ARKit 2+) дозволяють кільком пристроям бачити одні й ті самі віртуальні об’єкти в спільному просторі. ARWorldMap зберігає карту оточення, яка передається іншим пристроям через мережу. Apple наводить приклад точності синхронізації: два iPhone 12 Pro в одній кімнаті бачать об’єкт з відхиленням не більше ніж 2 сантиметри.
LiDAR-сканер, встановлений на iPhone 12 Pro та новіших, кардинально змінює можливості ARKit. Замість програмного визначення глибини через аналіз зображень, LiDAR миттєво надає карту глибини з точністю до 3 сантиметрів в діапазоні до 5 метрів. Це дозволяє ARKit миттєво розпізнавати площини, без попереднього сканування камерою.
За допомогою LiDAR ARKit може визначати оклюзію об’єктів: віртуальний об’єкт може ховатися за реальним кріслом або столом. Крім того, Scene Reconstruction будує 3D-сітку оточення в реальному часі — до 10 мільйонів полігонів на кімнату, що використовується для симуляції фізики зіткнень та реалістичного освітлення.
// Конфігурація для LiDAR
let lidarConfig = ARWorldTrackingConfiguration()
lidarConfig.planeDetection = [.horizontal]
lidarConfig.sceneReconstruction = .mesh
arView.session.run(lidarConfig)
// Виявлення дотику на площині
override func touchesBegan(
_ touches: Set<UITouch>,
with event: UIEvent?
) {
let location = touches.first?.location(in: arView)
guard let hitPoint = location else { return }
let results = arView
.raycastQuery(
from: hitPoint,
allowing: .existingPlaneInfinite,
alignment: .horizontal
)
}
Інтеграція ARKit починається з мінімальних вимог: Xcode 15+, iOS 17 SDK, пристрій з чіпом A12 Bionic та новіших. У Info.plist необхідно додати ключ NSCameraUsageDescription — ARKit використовує камеру для відстеження та відображення AR-сцени. Без цього ключа застосунок аварійно завершиться при запуску AR-сесії.
Для рендерингу контенту iOS пропонує три фреймворки: SceneKit для 3D-графіки середньої складності, RealityKit для фотореалістичного рендерингу з PBR-матеріалами та Metal для максимальної продуктивності. RealityKit — рекомендований вибір для нових проектів, оскільки він містить вбудовану підтримку функцій ARKit, анімації та фізики.
За даними Apple, середній час інтеграції базового AR-екрану в існуючий застосунок становить близько 2 годин для досвідченого iOS-розробника. Основні складнощі виникають при накладанні UI-елементів на AR-сцену та при обробці переривів AR-сесії — дзінків, перемикання застосунків або втрати відстеження при слабкому освітленні.
ARKit може втрачати відстеження в ряді ситуацій: недостатнє освітлення (менше 100 люкс), відсутність характерних точок (однокольорні стіни), швидкі рухи камери або перекриття об’єктива. ARSessionDelegate надає методи для обробки цих станів — рекомендується показувати користувачеві підказки: «Рухайте пристрій повільніше» або «Увімкніть освітлення.»
Для відновлення після збою ARKit автоматично запускає релокалізацію — намагається зіставити поточний відеопотік із збереженою картою оточення. Якщо релокалізація неможлива, сесія перезапускається з новою конфігурацією. Рекомендується зберігати ARWorldMap при виході з застосунка для швидкого відновлення AR-сцени при поверненні.
class ARViewController: UIViewController {
let arView = ARSCNView()
override func viewDidLoad() {
super.viewDidLoad()
arView.session.delegate = self
let config = ARWorldTrackingConfiguration()
config.planeDetection = [.horizontal]
config.frameSemantics = .personSegmentation
arView.session.run(config)
}
func sessionWasInterrupted(
_ session: ARSession
) {
showAlert("Сесію перервано")
}
}
Часто запитувані питання
ARKit працює на пристроях Apple з чіпом A12 Bionic та новіших: iPhone XS, XR, 11, 12, 13, 14, 15, 16 та SE (2-го та 3-го поколінь), iPad Pro 2018+, iPad Air 2020+, iPad mini 2021+. Для LiDAR-функцій потрібні iPhone 12 Pro/Pro Max, iPhone 13 Pro/Pro Max, iPhone 14 Pro/Pro Max, iPhone 15 Pro/Pro Max та iPad Pro 2020+.
Так, ARKit можна використовувати безпосередньо з Metal, але це вимагає написання власних шейдерів та рендерингу. SceneKit та RealityKit надають готові рішення з інтеграцією ARKit на рівні фреймворку. Для початківців RealityKit — оптимальний вибір, оскільки він автоматично обробляє функції ARKit.
ARKit автоматично оцінює освітлення сцени через камеру та надає дані про напрям, інтенсивність та кольорову температуру джерела світла через AREnvironmentProbeAnchor. Це дозволяє віртуальним об’єктам правильно відкидати тіні та відбивати оточення, створюючи реалістичне злиття з реальним світом.
ARKit працює лише на iOS та використовує Visual-Inertial Odometry для відстеження, тоді як ARCore від Google працює на Android та використовує власний Motion Tracking на основі IMU та камери. ARKit має перевагу завдяки апаратній інтеграції з чіпами Apple, тоді як ARCore пропонує кросплатформенні можливості через Cloud Anchors.
Так, ARKit ідеально підходить для AR-ігор. SceneKit та RealityKit підтримують фізику (SCNPhysicsBody, PhysicsSimulation), анімацію, звук та частки. Відомі приклади включають Pokémon GO (використовує власний рушій з ARKit), Angry Birds AR та Lego AR Studio. ARKit також підтримує багатокористувацькі сесії через ARWorldMap.
Підсумки
Ми розробимо мобільний застосунок під ключ
IT Sectr створює застосунки для iOS та Android для стартапів і бізнесу з 2017 року. Ми проконсультуємо вас і запропонуємо найкраще рішення.
Читайте також