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 Scanner за тренутно одређивање дубине и непрозирности објеката, као и 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 процес се састоји од два паралелна тока: алгоритам визуелне одометрије прати кретање карактеристичних тачака (feature points) између оквира, а инерцијални сензори 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 Hz. Користи се у фитнес апликацијама и за прототиповање анимација.
Заједничке 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-ом, али то захтева писање сопственог shader-а и рендеровања. SceneKit и RealityKit пружају готовa решења са интеграцијом 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. године. Саветоваћемо вас и предложити најбоље решење.
Прочитајте такође