ARKit — какво е, ключови понятия и AR технология

Автор: IT Sectr Публикувано: 2026-03-25 Време за четене: 8 мин

ARKit рамката — платформа за разширена реалност от Apple, която позволява на разработчиците да създават AR приложения за iOS без задълбочени познания по компютърно зрение. Според Apple ARKit Documentation, 2025, рамката използва Visual-Inertial Odometry за точно проследяване на позицията на устройството в пространството без външни маркери. Семантичното разбиране на сцената позволява разпознаване на хоризонтални и вертикални равнини, определяне на осветлението и поставяне на виртуални обекти в реалната среда.

Основни точки

  • ARKit — рамка на Apple за разширена реалност на iOS, представена през 2017 г. с iOS 11.
  • Motion Tracking — технология за проследяване на позицията на устройството в пространството без външни маяци.
  • Scene Understanding — разпознаване на равнини, граници и обекти в реалната среда на потребителя.
  • ARAnchor — обект, който фиксира позицията на виртуалното съдържание в реалната сцена.
  • ARSCNView — основен клас за рендериране на 3D съдържание на базата на SceneKit.

Какво е ARKit?

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 получи значителни подобрения: ARKit 1.0 (iOS 11) — основно проследяване и разпознаване на равнини; ARKit 2.0 — споделени AR сесии чрез ARWorldMap и откриване на 3D обекти; ARKit 3.0 — проследяване на човешкото тяло, сегментиране на хора и едновременни предни и задни камери.

ARKit 4.0 представи LiDAR Scanner за незабавно определяне на дълбочина и непрозрачност на обекти, както и Location Anchor за свързване на AR съдържание с GPS координати. ARKit 6 добави 4K видео с HDR, Plane Estimation с LiDAR и подобрена обработка на оклузия.

swift
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

ARKit работи чрез цикъл на AR сесия, която се стартира с конфигурация и непрекъснато анализира видео потока от камерата. Всеки кадър рамката изчислява позицията на устройството (6 степени на свобода), актуализира картата на разпознатите равнини и коригира позицията на виртуалните обекти — всичко това с честота от 60 кадъра в секунда.

Процесът VIO се състои от два паралелни потока: алгоритъмът за визуална одометрия проследява движението на характерни точки (feature points) между кадрите, а инерциалните сензори Core Motion предсказват движение в кратки интервали, когато камерата се движи бързо или изображението е размазано. Комбинирането на двата метода дава точност на проследяване до 1 сантиметър.

Според Apple, ARKit обработва до 500 характерни точки на кадър, а размерът на картата на околната среда (ARWorldMap) може да достигне 100 метра в диаметър. Сканирането на околната среда и изграждането на карта отнема около 2-3 секунди след стартиране на сесията — през цялото това време ARKit събира данни от камерата и сензорите.

ARAnchor и поставяне на обекти

ARAnchor — ключов обект за поставяне на съдържание. Когато ARKit разпознае равнина, създава ARPlaneAnchor с посочване на позицията, размера и ориентацията на повърхността. Разработчикът реагира на делегата session(_:didAdd:) и поставя 3D обекта на мястото на откриване на равнината чрез SceneKit или RealityKit.

За реализиране на влачене на обекти се използва ARHitTestResult: при докосване на екрана се изпълнява hit-test през кадъра на ARKit, който връща точката на пресичане на лъча с разпознатите равнини. Намерената точка се преобразува в ARAnchor и обектът се фиксира в тази позиция.

swift
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

ARKit предоставя набор от технологии, които правят разширената реалност реалистична и функционална: проследяване на движение с 6 степени на свобода, разбиране на сцената чрез разпознаване на равнини и граници, оценка на осветлението за правилно хвърляне на сенки, оклузия на хора и отразяващи повърхности на базата на карти на околната среда.

Motion Capture (ARKit 3+) — технология за проследяване на човешкото тяло в реално време чрез камера. Позволява анимиране на герои с движенията на потребителя без външни сензори: разпознават се 18 стави с честота 60 Hz. Използва се във фитнес приложения и за прототипиране на анимации.

Споделените AR сесии (ARKit 2+) позволяват на множество устройства да виждат едни и същи виртуални обекти в споделено пространство. ARWorldMap запазва картата на околната среда, която се предава на други устройства по мрежата. Apple дава пример за точност на синхронизация: два iPhone 12 Pro в една стая виждат обект с отклонение не повече от 2 сантиметра.

Работа с LiDAR

LiDAR скенерът, инсталиран на iPhone 12 Pro и по-нови, коренно променя възможностите на ARKit. Вместо софтуерно определяне на дълбочина чрез анализ на изображения, LiDAR незабавно предоставя карта на дълбочината с точност до 3 сантиметра в обхват до 5 метра. Това позволява на ARKit да разпознава равнини моментално, без предварително сканиране с камера.

С помощта на LiDAR, ARKit може да определи непрозрачността на обекти: виртуален обект може да се скрие зад истински стол или маса. Освен това Scene Reconstruction изгражда 3D мрежа на околната среда в реално време — до 10 милиона полигона на стая, използвана за симулация на физика на сблъсъци и реалистично осветление.

swift
// Конфигурация за 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 в приложението

Интегрирането на 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 сцената при връщане.

swift
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?

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 без SceneKit или RealityKit?

Да, ARKit може да се използва директно с Metal, но това изисква писане на собствен шейдър и рендериране. SceneKit и RealityKit предоставят готови решения с интеграция на ARKit на ниво рамка. За начинаещи RealityKit е оптималният избор, тъй като автоматично обработва ARKit функциите.

Как ARKit обработва промяната на осветлението?

ARKit автоматично оценява осветлението на сцената чрез камерата и предоставя данни за посоката, интензитета и цветната температура на светлинния източник чрез AREnvironmentProbeAnchor. Това позволява на виртуалните обекти да хвърлят правилно сенки и да отразяват околната среда, създавайки реалистично сливане с реалния свят.

По какво се различава ARKit от ARCore?

ARKit работи само на iOS и използва Visual-Inertial Odometry за проследяване, докато ARCore на Google работи на Android и използва собствен Motion Tracking на базата на IMU и камера. ARKit има предимство благодарение на хардуерната интеграция с чиповете на Apple, а ARCore — мултиплатформеност чрез Cloud Anchors.

Може ли да се използва ARKit за създаване на игри?

Да, ARKit е идеален за AR игри. SceneKit и RealityKit поддържат физика (SCNPhysicsBody, PhysicsSimulation), анимация, звук и частици. Известни примери — Pokémon GO (използва собствен двигател с ARKit), Angry Birds AR и Lego AR Studio. ARKit също поддържа мултиплейър сесии чрез ARWorldMap.

Обобщение

  • ARKit — рамка за разширена реалност на Apple, базирана на Visual-Inertial Odometry от 2017 г.
  • 6 степени на свобода — точно проследяване на позицията на устройството в триизмерното пространство.
  • SceneKit и RealityKit — две рамки за рендериране на AR съдържание с различни нива на сложност.
  • LiDAR осигурява незабавно определяне на дълбочина и реконструкция на околната среда на Pro устройства.
  • Споделени сесии позволяват на множество потребители да виждат едни и същи AR обекти.
  • Motion Capture проследява 18 стави на тялото за анимиране на герои в реално време.

Ще разработим мобилно приложение под ключ

IT Sectr създава iOS и Android приложения за стартъпи и бизнеси от 2017 г. Ще ви консултираме и ще предложим най-доброто решение.

Обсъдете проекта

Прочетете също