ARCore: 개념, 기능 및 증강 현실 기술

저자: IT Sectr 게시일: 2026-03-25 읽는 시간: 8 분

ARCore 플랫폼은 Android용 증강 현실을 위한 Google의 솔루션으로, 스마트폰의 카메라와 관성 센서를 사용하여 공간에서 위치를 추적합니다. Google AR Developers, 2025에 따르면, 이 플랫폼은 Motion Tracking, Environmental Understanding, Light Estimation — 실제 환경에 가상 객체를 배치하기 위한 세 가지 기본 기술을 지원합니다. 크로스플랫폼 아키텍처를 통해 개발자는 통합 코드베이스로 Android, iOS, Unity 및 Unreal Engine용 AR 앱을 만들 수 있습니다.

핵심 포인트

  • ARCore — 2018년에 발표된 Google의 Android용 증강 현실 플랫폼.
  • Motion Tracking — IMU 및 이미지 분석 기반 기기 움직임 추적 기술.
  • Environmental Understanding — 평면, 경계 및 표면 형상 인식.
  • Cloud Anchors — 클라우드를 통한 여러 기기 간 AR 객체 동기화 메커니즘.
  • ARCore SDK는 Android(Kotlin/Java), iOS, Unity 및 Unreal Engine에서 사용 가능.

ARCore란?

ARCore는 Google의 증강 현실 플랫폼으로, 2018년 Project Tango의 후속 제품으로 더 가볍고 접근하기 쉬운 형태로 발표되었습니다. 특수 깊이 센서가 필요했던 Tango와 달리, ARCore는 카메라와 관성 센서(IMU)만 사용하여 표준 Android 스마트폰에서 작동합니다.

ARCore는 세 가지 핵심 기술을 사용합니다: Motion Tracking(기기 위치 추적), Environmental Understanding(수평 및 수직 평면 감지), Light Estimation(가상 객체 조명을 실제 환경에 맞게 조정). 이 세 가지 기술을 통해 모든 표면에서 자연스럽게 보이는 AR 객체를 배치할 수 있습니다.

Google I/O 2024에 따르면, ARCore는 Samsung, Xiaomi, Huawei, OnePlus, Google Pixel 등을 포함한 10억 대 이상의 Android 기기에서 지원됩니다. 이 플랫폼은 Google Play Services for AR과 통합되어 Android 버전과 관계없이 Google Play Store를 통해 ARCore를 업데이트할 수 있습니다.

ARCore의 진화

6개 버전에 걸쳐 ARCore는 상당한 진화를 겪었습니다: ARCore 1.0 — 기본 추적 및 평면 감지; ARCore 1.2 — 수직 평면 및 Augmented Images; ARCore 1.7 — 멀티플레이어 세션용 Cloud Anchors; ARCore 1.10 — 표정 추적용 Augmented Faces.

ARCore 1.20+에는 Scene Semantic Understanding이 포함됩니다 — 기기에서 TensorFlow Lite ML 모델을 통한 객체 카테고리(바닥, 천장, 벽, 가구, 식물, 문) 인식. Street View Geometry API는 야외 AR 내비게이션을 위해 Google Street View의 깊이 맵을 사용할 수 있게 합니다.

kotlin
// ARCore 세션 초기화
val session = Session(context)
val config = Config(session)
config.lightEstimationMode =
    Config.LightEstimationMode.ENVIRONMENTAL_HDR
config.planeFindingMode =
    Config.PlaneFindingMode.HORIZONTAL_AND_VERTICAL
session.configure(config)

// 프레임 처리
val frame = session.update()
val pointCloud = frame.acquirePointCloud()
val planes = session.getAllTrackables(
    Plane::class.java
)

ARCore 작동 방식

ARCore는 하이브리드 방식을 사용합니다: IMU(관성 측정 장치)는 고주파수(최대 1000Hz)로 기기 위치를 예측하고, 시각적 주행 거리 측정법은 30–60Hz로 카메라의 특징점 분석을 기반으로 오류를 보정합니다. 이 방식은 정지 상태에서 약 1–2센티미터의 추적 정확도를 제공합니다.

Environmental Understanding 프로세스는 세 단계로 작동합니다: 먼저 ARCore가 카메라 이미지에서 특징점을 찾고, 동일한 평면에 있는 점들의 클러스터를 식별하여 다각형으로 근사화합니다. 평면 인식 후 ARCore는 새 프레임이 수신될 때마다 업데이트되는 Trackable 객체를 생성합니다.

Google에 따르면, ARCore는 카메라에서 최대 1미터 거리에서 10x10센티미터 크기의 평면을 감지합니다. 중간 크기 방(20m²)의 경우 전체 평면 스캔에 약 2~4초가 소요됩니다. ToF 센서 지원과 함께 Depth API를 사용하면 인식 정확도가 40% 향상됩니다.

Depth API 및 Scene Mesh

Depth API는 카메라 이미지의 스테레오 분석을 기반으로 장면의 깊이 맵을 구축하는 ARCore 기술입니다. ToF 센서(Time-of-Flight)가 장착된 기기에서는 최대 2cm 정확도로 깊이 맵이 즉시获取됩니다. 깊이 센서가 없는 기기에서는 Depth API가 기계 학습을 사용하여 단일 프레임에서 깊이를 추정하여 약 10cm의 정확도를 제공합니다.

Scene Mesh는 ARCore가 실시간으로 구축하는 환경의 3차원 메시입니다. 메시는 충돌 물리학, 가상 객체 폐색 및 그림자 렌더링에 사용됩니다. Scene Mesh는 OpenGL ES 3.1 및 Depth API 지원 기기에서 사용 가능하며, 프레임당 최대 50만 개의 폴리곤을 생성합니다.

kotlin
// 깊이 맵 가져오기
val depthImage = frame.acquireDepthImage16Bits()

// 감지된 평면에 객체 배치
val hitResult = frame.hitTest(x, y)
    .firstOrNull { it.trackable is Plane }

hitResult?.let { result ->
    val anchor = session.createAnchor(
        result.hitPose
    )
    val model = ModelRenderable.builder()
        .setSourceId(R.raw.my_model)
        .build()
        .exceptionally { null }

    AnchorNode(anchor).apply {
        this.renderable = model.get()
    }
}

ARCore vs ARKit: 비교

ARCore와 ARKit은 동일한 작업(위치 추적, 평면 감지, 조명 추정)을 해결하지만 접근 방식과 생태계가 다릅니다. ARCore는 크로스플랫폼 호환성을 우선시하는 반면, ARKit은 Apple 하드웨어와의 깊은 통합을 사용합니다.

주요 차이점: ARCore는 ARCore SDK를 통해 Android 및 iOS에서 작동하지만, ARKit은 iOS에서만 작동합니다. ARCore는 Firebase를 통한 동기화에 Cloud Anchors를 사용하는 반면, ARKit은 기기 간 직접 교환에 ARWorldMap을 사용합니다. Depth API가 있는 ARCore는 ToF 센서를 지원하고, LiDAR가 있는 ARKit은 최대 3cm 정확도의 레이저 스캐닝을 제공합니다.

Google 2024 벤치마크 테스트에 따르면, 자이로스코프와 ToF 센서가 있는 기기에서 ARCore의 추적 정확도는 LiDAR가 있는 iPhone의 ARKit과 비슷합니다 — 2미터 거리에서 오차가 2cm를 초과하지 않습니다. ToF가 없는 기기에서는 ARCore가 초기화 속도에서 ARKit에 뒤쳐집니다: 3초 대 0.5초.

ARCore와 ARKit 사이의 선택은 대상 사용자에 따라 다릅니다: 앱이 iOS 전용인 경우 ARKit이 더 나은 성능과 독점 LiDAR 기능에 대한 액세스를 제공합니다. 크로스플랫폼 지원이 필요한 경우 ArcoreiOS SDK가 있는 ARCore를 사용하면 각 플랫폼의 일부 하드웨어별 기능을 잃게 되지만, 최소한의 플랫폼 차이로 통합 코드베이스를 사용할 수 있습니다.

특징ARCoreARKit
플랫폼Android + iOS + Unity/UnrealiOS 전용
깊이 센서ToF(선택 사항)LiDAR(Pro 모델)
동기화Cloud Anchors(Firebase)ARWorldMap(Multipeer)
얼굴 추적Augmented FacesFace Tracking(TrueDepth)
VIO 정확도1–3cm0.5–1cm

애플리케이션에 ARCore 통합

ARCore 통합은 build.gradle에 Google Play Services for AR의 종속성 추가로 시작됩니다: com.google.ar:core. 앱은 ArCoreApk.checkAvailability()를 통해 기기에서 ARCore 사용 가능 여부를 확인해야 합니다 — ARCore가 설치되지 않은 경우, 사용자에게 Google Play Store에서 설치하도록 안내합니다.

기본 ARCore 프로젝트에는 다음이 포함됩니다: Session 및 Config 생성, 카메라 표시용 SurfaceView 설정, session.resume()을 통한 세션 시작, session.update()를 통한 프레임 처리. 3D 객체 렌더링에는 Sceneform SDK(Filament 기반 Google 라이브러리) 또는 복잡한 장면의 경우 Unity/Unreal이 사용됩니다.

Google은 Kotlin 앱에 Sceneform을 권장합니다 — 3D 모델(OBJ, glTF, FBX) 로드용 ModelRenderable, AR 장면에 Android View 삽입용 ViewRenderable, 터치 처리용 MotionEvent 등 즉시 사용 가능한 구성 요소를 제공합니다. Sceneform은 AR 세션 수명 주기와 리소스 해제를 자동으로 관리합니다.

추적 실패 처리

ARCore는 조명 부족, 단색 표면 또는 빠른 기기 움직임 시 추적을 잃을 수 있습니다. 추적 상태는 frame.getTrackingState()를 통해 확인할 수 있습니다 — 값은 TRACKING, PAUSED 및 STOPPED입니다. PAUSED로 전환 시, 렌더링을 일시 중지하고 사용자에게 안내를 표시하는 것이 좋습니다: “기기를 더 천천히 움직이세요” 또는 “더 밝은 곳으로 이동하세요.”

실패 후 자동 복구를 위해, ARCore는 저장된 특징점 맵을 기반으로 재위치 설정을 지원합니다. 개발자는 session.serialize()를 통해 맵을 저장하고 session.deserialize()를 통해 복원할 수 있습니다 — 사용자가 동일한 물리적 공간으로 돌아오는 장기 실행 AR 경험에 유용합니다. 환경이 크게 변하지 않았다면 맵 복원에 1~2초가 소요됩니다.

kotlin
class ARCoreActivity : AppCompatActivity() {

    private lateinit var session: Session

    override fun onResume() {
        super.onResume()
        when (ArCoreApk.getInstance()
            .checkAvailability(this)
        ) {
            ArCoreApk.Availability.SUPPORTED_INSTALLED -> {
                session = Session(this)
                session.resume()
            }
            else -> {
                showInstallPrompt()
            }
        }
    }
}

자주 묻는 질문

ARCore를 지원하는 기기는?

ARCore는 Google Pixel 2+, Samsung Galaxy S7+, Xiaomi Mi 8+, Huawei P20+, OnePlus 6+, Sony Xperia XZ2+ 등을 포함한 10억 대 이상의 Android 기기에서 지원됩니다. 인증된 기기의 전체 목록은 developers.google.com/ar/devices에서 확인할 수 있습니다.

ARCore 사용에 인터넷이 필요한가요?

ARCore의 기본 기능 — Motion Tracking 및 Environmental Understanding — 은 인터넷이 필요하지 않습니다. Cloud Anchors 및 클라우드 참조가 있는 Augmented Images는 연결이 필요합니다. Depth API와 Scene Mesh는 네트워크 연결 없이 기기에서 완전히 작동합니다.

Sceneform 없이 AR 앱을 만들 수 있나요?

네, ARCore는 OpenGL ES 3.1과 직접, Unity 또는 Unreal Engine과 함께 사용할 수 있습니다. Sceneform은 간단한 Kotlin 프로젝트에 권장되는 옵션이지만 필수는 아닙니다. 사실적인 물리학이 필요한 복잡한 3D 장면의 경우 ARCore SDK를 지원하는 게임 엔진을 사용하는 것이 좋습니다.

ARCore는 실내와 실외에서 어떻게 작동하나요?

ARCore는 충분한 조명(100–500lux)이 있는 실내 공간에 최적화되어 있습니다. 밝은 햇빛 아래 실외에서는 카메라 과다 노출로 인해 추적 정확도가 저하될 수 있습니다. 실외 사용을 위해 Google은 도시 위치에 대한 깊이 맵을 제공하는 Street View Geometry API를 권장합니다.

ARCore와 Scene Viewer의 차이점은?

Scene Viewer는 코드를 작성하지 않고 AR에서 3D 모델을 보기 위한 Google의 기성 UI 구성 요소로, WebXR을 통해 작동합니다. ARCore는 세션, 추적 및 렌더링의 모든 측면을 프로그래밍 방식으로 제어하는 맞춤형 AR 경험을 만들기 위한 완전한 기능의 SDK입니다.

요약

  • ARCore — Android 및 iOS에서 작동하는 Google의 크로스플랫폼 AR 플랫폼.
  • Motion Tracking은 정밀한 위치 결정을 위해 IMU와 시각적 주행 거리 측정법의 하이브리드를 사용.
  • Cloud Anchors는 Firebase를 통한 동기화로 다중 사용자 AR 세션을 가능하게 함.
  • Depth API는 장면의 깊이 맵을 구축 — 프로그래밍 방식 또는 ToF 센서를 통해.
  • Sceneform — 최소 코드로 Kotlin에서 AR 앱을 만들기 위한 권장 SDK.
  • 호환성 — ARCore 인증을 받은 10억 대 이상의 Android 기기.
  • 선택은 ARCore와 ARKit 사이에서 대상 플랫폼과 정확도 요구 사항에 따라 달라짐.

턴키 방식의 모바일 애플리케이션을 개발해 드립니다

IT Sectr는 2017년부터 스타트업과 기업을 위한 iOS 및 Android 애플리케이션을 만듭니다. 저희가 상담해 드리고 최적의 솔루션을 제안하겠습니다.

프로젝트 논의

더 읽어보기