Nền tảng ARCore — giải pháp của Google cho thực tế tăng cường trên Android, sử dụng camera và cảm biến quán tính của điện thoại thông minh để theo dõi vị trí trong không gian. Theo Google AR Developers, 2025, nền tảng này hỗ trợ Motion Tracking, Environmental Understanding và Light Estimation — ba công nghệ cơ bản để đặt các đối tượng ảo trong môi trường thực. Kiến trúc đa nền tảng cho phép các nhà phát triển tạo ứng dụng AR cho Android, iOS, Unity và Unreal Engine với một mã nguồn thống nhất.
Những điểm chính
ARCore là nền tảng thực tế tăng cường của Google, được công bố vào năm 2018 như một phiên bản kế thừa của Project Tango với định dạng nhẹ hơn và dễ tiếp cận hơn. Không giống như Tango yêu cầu cảm biến độ sâu chuyên dụng, ARCore hoạt động trên các điện thoại thông minh Android tiêu chuẩn chỉ sử dụng camera và cảm biến quán tính (IMU).
ARCore sử dụng ba công nghệ chính: Motion Tracking để theo dõi vị trí thiết bị, Environmental Understanding để phát hiện các mặt phẳng ngang và dọc, và Light Estimation để điều chỉnh ánh sáng của đối tượng ảo phù hợp với môi trường thực. Ba công nghệ này cho phép đặt các đối tượng AR trông tự nhiên trên mọi bề mặt.
Theo Google I/O 2024, ARCore được hỗ trợ trên hơn 1 tỷ thiết bị Android, bao gồm điện thoại thông minh Samsung, Xiaomi, Huawei, OnePlus, Google Pixel và nhiều hãng khác. Nền tảng này được tích hợp với Google Play Services for AR, cho phép cập nhật ARCore qua Google Play Store độc lập với phiên bản Android.
Qua sáu phiên bản, ARCore đã trải qua quá trình phát triển đáng kể: ARCore 1.0 — theo dõi cơ bản và phát hiện mặt phẳng; ARCore 1.2 — mặt phẳng dọc và Augmented Images; ARCore 1.7 — Cloud Anchors cho phiên nhiều người chơi; ARCore 1.10 — Augmented Faces để theo dõi biểu cảm khuôn mặt.
ARCore 1.20+ bao gồm Scene Semantic Understanding — nhận dạng danh mục đối tượng (sàn, trần, tường, đồ nội thất, cây, cửa) thông qua mô hình ML TensorFlow Lite trên thiết bị. API Street View Geometry cho phép sử dụng bản đồ độ sâu của Google Street View để điều hướng AR ngoài trời.
// Khởi tạo phiên 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)
// Xử lý khung hình
val frame = session.update()
val pointCloud = frame.acquirePointCloud()
val planes = session.getAllTrackables(
Plane::class.java
)
ARCore sử dụng phương pháp kết hợp: IMU (mô-đun đo quán tính) dự đoán vị trí thiết bị ở tần số cao (lên đến 1000 Hz), trong khi thị giác đo đạc (visual odometry) hiệu chỉnh lỗi dựa trên phân tích điểm đặc trưng từ camera ở tần số 30–60 Hz. Phương pháp này cung cấp độ chính xác theo dõi khoảng 1–2 cm trong điều kiện tĩnh.
Quá trình Environmental Understanding hoạt động theo ba bước: đầu tiên, ARCore tìm điểm đặc trưng trong hình ảnh từ camera, sau đó xác định các cụm điểm nằm trên cùng một mặt phẳng và xấp xỉ chúng thành một đa giác. Sau khi nhận dạng mặt phẳng, ARCore tạo đối tượng Trackable loại Plane, được cập nhật khi có khung hình mới.
Theo Google, ARCore phát hiện mặt phẳng có kích thước 10x10 cm ở khoảng cách lên đến 1 mét từ camera. Đối với phòng cỡ trung bình (20 m²), quá trình quét toàn bộ mặt phẳng mất khoảng 2–4 giây. Khi sử dụng Depth API với hỗ trợ cảm biến ToF, độ chính xác nhận dạng tăng 40%.
Depth API là công nghệ ARCore xây dựng bản đồ độ sâu của cảnh dựa trên phân tích lập thể hình ảnh từ camera. Trên các thiết bị có cảm biến ToF (Time-of-Flight), bản đồ độ sâu được lấy ngay lập tức với độ chính xác lên đến 2 cm. Trên các thiết bị không có cảm biến độ sâu, Depth API sử dụng máy học để ước tính độ sâu từ một khung hình đơn, cung cấp độ chính xác khoảng 10 cm.
Scene Mesh là lưới ba chiều của môi trường mà ARCore xây dựng trong thời gian thực. Lưới này được sử dụng cho vật lý va chạm, che khuất đối tượng ảo và tạo bóng. Scene Mesh khả dụng trên các thiết bị có OpenGL ES 3.1 và hỗ trợ Depth API, tạo ra tới 500 nghìn đa giác mỗi khung hình.
// Lấy bản đồ độ sâu
val depthImage = frame.acquireDepthImage16Bits()
// Đặt đối tượng trên mặt phẳng đã phát hiện
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()
}
}
Mặc dù ARCore và ARKit giải quyết các tác vụ giống nhau — theo dõi vị trí, phát hiện mặt phẳng và ước tính ánh sáng — cách tiếp cận và hệ sinh thái của chúng khác nhau. ARCore ưu tiên khả năng tương thích đa nền tảng, trong khi ARKit sử dụng tích hợp sâu với phần cứng Apple.
Sự khác biệt chính: ARCore hoạt động trên Android và iOS thông qua ARCore SDK, trong khi ARKit chỉ hoạt động trên iOS. ARCore sử dụng Cloud Anchors để đồng bộ hóa qua Firebase, trong khi ARKit sử dụng ARWorldMap để trao đổi trực tiếp giữa các thiết bị. ARCore với Depth API hỗ trợ cảm biến ToF, trong khi ARKit với LiDAR cung cấp quét laser với độ chính xác lên đến 3 cm.
Theo các bài kiểm tra điểm chuẩn của Google 2024, độ chính xác theo dõi của ARCore trên thiết bị có con quay hồi chuyển và cảm biến ToF tương đương với ARKit trên iPhone có LiDAR — sai số không vượt quá 2 cm ở khoảng cách 2 mét. Trên thiết bị không có ToF, ARCore chậm hơn ARKit về tốc độ khởi tạo: 3 giây so với 0,5 giây.
Việc lựa chọn giữa ARCore và ARKit phụ thuộc vào đối tượng mục tiêu: nếu ứng dụng chỉ dành cho iOS, ARKit mang lại hiệu suất tốt hơn và quyền truy cập vào các tính năng độc quyền của LiDAR. Nếu cần hỗ trợ đa nền tảng, ARCore với SDK ArcoreiOS cho phép sử dụng một mã nguồn thống nhất với sự khác biệt tối thiểu giữa các nền tảng, mặc dù mất một số khả năng phần cứng cụ thể của mỗi nền tảng.
| Đặc điểm | ARCore | ARKit |
|---|---|---|
| Nền tảng | Android + iOS + Unity/Unreal | Chỉ iOS |
| Cảm biến độ sâu | ToF (tùy chọn) | LiDAR (dòng Pro) |
| Đồng bộ hóa | Cloud Anchors (Firebase) | ARWorldMap (Multipeer) |
| Theo dõi khuôn mặt | Augmented Faces | Face Tracking (TrueDepth) |
| Độ chính xác VIO | 1–3 cm | 0,5–1 cm |
Việc tích hợp ARCore bắt đầu bằng thêm phụ thuộc Google Play Services for AR vào build.gradle: com.google.ar:core. Ứng dụng cần kiểm tra khả năng khả dụng của ARCore trên thiết bị qua ArCoreApk.checkAvailability() — nếu ARCore chưa được cài đặt, yêu cầu người dùng cài đặt từ Google Play Store.
Một dự án ARCore cơ bản bao gồm: tạo Session và Config, thiết lập SurfaceView để hiển thị camera, bắt đầu phiên qua session.resume() và xử lý khung hình qua session.update(). Để hiển thị đối tượng 3D, sử dụng Sceneform SDK (thư viện Google dựa trên Filament) hoặc Unity/Unreal cho các cảnh phức tạp.
Google khuyến nghị Sceneform cho ứng dụng Kotlin — nó cung cấp các thành phần sẵn có: ModelRenderable để tải mô hình 3D (OBJ, glTF, FBX), ViewRenderable để nhúng Android View vào cảnh AR và MotionEvent để xử lý chạm. Sceneform tự động quản lý vòng đời phiên AR và giải phóng tài nguyên.
ARCore có thể mất theo dõi khi ánh sáng yếu, bề mặt đơn điệu hoặc thiết bị di chuyển nhanh. Trạng thái theo dõi có sẵn qua frame.getTrackingState() — các giá trị là TRACKING, PAUSED và STOPPED. Khi chuyển sang PAUSED, nên tạm dừng kết xuất và hiển thị hướng dẫn cho người dùng: “Di chuyển thiết bị chậm hơn” hoặc “Di chuyển đến nơi có ánh sáng tốt hơn.”
Để tự động phục hồi sau lỗi, ARCore hỗ trợ định vị lại dựa trên bản đồ điểm đặc trưng đã lưu. Nhà phát triển có thể lưu bản đồ qua session.serialize() và khôi phục qua session.deserialize() — hữu ích cho trải nghiệm AR dài hạn khi người dùng quay lại cùng một không gian vật lý. Việc khôi phục bản đồ mất 1–2 giây với điều kiện môi trường không thay đổi đáng kể.
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()
}
}
}
}
Câu hỏi thường gặp
ARCore được hỗ trợ trên hơn 1 tỷ thiết bị Android, bao gồm Google Pixel 2+, Samsung Galaxy S7+, Xiaomi Mi 8+, Huawei P20+, OnePlus 6+, Sony Xperia XZ2+ và nhiều thiết bị khác. Danh sách đầy đủ các thiết bị được chứng nhận được công bố tại developers.google.com/ar/devices.
Các chức năng cơ bản của ARCore — Motion Tracking và Environmental Understanding — không yêu cầu internet. Cloud Anchors và Augmented Images với tham chiếu đám mây yêu cầu kết nối. Depth API và Scene Mesh hoạt động hoàn toàn trên thiết bị mà không cần kết nối mạng.
Có, ARCore có thể được sử dụng trực tiếp với OpenGL ES 3.1, với Unity hoặc Unreal Engine. Sceneform là tùy chọn được khuyến nghị cho các dự án Kotlin đơn giản, nhưng không bắt buộc. Đối với cảnh 3D phức tạp với vật lý thực tế, tốt hơn nên sử dụng công cụ trò chơi có hỗ trợ ARCore SDK.
ARCore được tối ưu hóa cho không gian trong nhà với ánh sáng đủ (100–500 lux). Ngoài trời dưới ánh nắng mạnh, độ chính xác theo dõi có thể giảm do camera bị phơi sáng quá mức. Khi sử dụng ngoài trời, Google khuyến nghị sử dụng API Street View Geometry, cung cấp bản đồ độ sâu cho các vị trí đô thị.
Scene Viewer là thành phần giao diện người dùng có sẵn của Google để xem mô hình 3D trong AR mà không cần viết mã, hoạt động qua WebXR. ARCore là một SDK đầy đủ tính năng để tạo trải nghiệm AR tùy chỉnh với khả năng kiểm soát lập trình mọi khía cạnh của phiên, theo dõi và kết xuất.
Tổng kết
Chúng tôi sẽ phát triển ứng dụng di động chìa khóa trao tay
IT Sectr tạo các ứng dụng iOS và Android cho các công ty khởi nghiệp và doanh nghiệp từ năm 2017. Chúng tôi sẽ tư vấn và đề xuất giải pháp tốt nhất cho bạn.
Đọc thêm