ARKit 프레임워크는 Apple의 증강 현실 플랫폼으로, 개발자가 컴퓨터 비전에 대한 깊은 지식 없이 iOS용 AR 애플리케이션을 만들 수 있게 해줍니다. 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+). App Store의 AR 앱 수는 15,000개를 넘었으며, 모든 AR 세션에서 인식된 평면의 총 면적은 1,000억 제곱미터를 초과합니다.
6개 버전을 거치며 ARKit은 상당한 개선을 이루었습니다: ARKit 1.0(iOS 11) — 기본 추적 및 평면 인식; ARKit 2.0 — ARWorldMap을 통한 공유 AR 세션 및 3D 객체 감지; ARKit 3.0 — 인체 추적, 사람 분할, 전면 및 후면 카메라 동시 사용.
ARKit 4.0은 즉각적인 깊이 및 객체 폐색 판단을 위한 LiDAR 스캐너와 AR 콘텐츠를 GPS 좌표에 연결하는 Location Anchor를 도입했습니다. ARKit 6은 HDR이 포함된 4K 비디오, 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:)에 응답하여 SceneKit 또는 RealityKit을 사용해 감지된 평면 위치에 3D 객체를 배치합니다.
객체 끌기를 구현하려면 ARHitTestResult를 사용합니다: 화면을 터치하면 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자유도 모션 트래킹, 평면 및 경계 인식을 통한 장면 이해, 적절한 그림자 렌더링을 위한 조명 추정, 사람 폐색, 환경 맵 기반 반사 표면.
모션 캡처(ARKit 3+) — 카메라를 통해 인체를 실시간으로 추적하는 기술입니다. 외부 센서 없이 사용자의 움직임으로 캐릭터를 애니메이션화할 수 있습니다: 60Hz에서 18개의 관절이 인식됩니다. 피트니스 앱 및 애니메이션 프로토타이핑에 사용됩니다.
공유 AR 세션(ARKit 2+)은 여러 기기가 공유 공간에서 동일한 가상 객체를 볼 수 있게 합니다. ARWorldMap은 환경 맵을 저장하고 네트워크를 통해 다른 기기로 전송됩니다. Apple은 동기화 정확도의 예를 제시합니다: 같은 방에 있는 두 대의 iPhone 12 Pro가 2센티미터 이하의 편차로 객체를 표시합니다.
iPhone 12 Pro 이상에 내장된 LiDAR 스캐너는 ARKit의 기능을 극적으로 변화시킵니다. 이미지 분석을 통한 소프트웨어 기반 깊이 판단 대신, LiDAR는 최대 5미터 범위에서 최대 3센티미터 정확도의 깊이 맵을 즉시 제공합니다. 이를 통해 ARKit은 사전 카메라 스캔 없이 즉시 평면을 인식할 수 있습니다.
LiDAR를 사용하면 ARKit이 객체 폐색을 판단할 수 있습니다: 가상 객체가 실제 의자나 테이블 뒤에 숨을 수 있습니다. 또한 Scene Reconstruction은 실시간으로 환경의 3D 메시를 구축합니다 — 방당 최대 1,000만 폴리곤으로, 충돌 물리 시뮬레이션과 사실적인 조명에 사용됩니다.
// 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는 세 가지 프레임워크를 제공합니다: 중간 복잡도의 3D 그래픽용 SceneKit, PBR 재질을 사용한 포토리얼리스틱 렌더링용 RealityKit, 최대 성능용 Metal. RealityKit은 ARKit 기능, 애니메이션 및 물리학에 대한 내장 지원을 포함하므로 신규 프로젝트에 권장되는 선택입니다.
Apple에 따르면, 기존 앱에 기본 AR 화면을 통합하는 평균 시간은 숙련된 iOS 개발자의 경우 약 2시간입니다. 주요 어려움은 AR 장면에 UI 요소 오버레이를 작업하고 AR 세션 중단(전화, 앱 전환, 저조도에서 추적 손실)을 처리할 때 발생합니다.
ARKit은 여러 상황에서 추적을 잃을 수 있습니다: 불충분한 조명(100lux 미만), 특징점 부족(단색 벽), 빠른 카메라 움직임, 렌즈 차단. ARSessionDelegate는 이러한 상태를 처리하는 메서드를 제공합니다 — 사용자에게 “기기를 천천히 움직이세요” 또는 “조명을 켜세요”와 같은 힌트를 표시하는 것이 좋습니다.
장애 후 복구를 위해 ARKit은 자동으로 재위치 설정을 시작합니다 — 현재 비디오 스트림을 저장된 환경 맵과 일치시키려고 시도합니다. 재위치 설정이 불가능하면 세션이 새 구성으로 다시 시작됩니다. 돌아올 때 빠른 AR 장면 복원을 위해 앱 종료 시 ARWorldMap을 저장하는 것이 좋습니다.
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은 A12 Bionic 칩 이상의 Apple 기기에서 작동합니다: 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 통합이 포함된 기성 솔루션을 제공합니다. 초보자에게는 ARKit 기능을 자동으로 처리하는 RealityKit이 최적의 선택입니다.
ARKit은 카메라를 통해 장면 조명을 자동으로 평가하고 AREnvironmentProbeAnchor를 통해 광원의 방향, 강도 및 색온도에 대한 데이터를 제공합니다. 이를 통해 가상 객체가 정확하게 그림자를 드리우고 환경을 반사하여 현실 세계와 사실적인 융합을 만들어냅니다.
ARKit은 iOS에서만 작동하며 추적에 Visual-Inertial Odometry를 사용하는 반면, Google의 ARCore는 Android에서 작동하며 IMU와 카메라 기반의 자체 Motion Tracking을 사용합니다. 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는 2017년부터 스타트업과 기업을 위한 iOS 및 Android 애플리케이션을 만듭니다. 저희가 상담해 드리고 최적의 솔루션을 제안하겠습니다.