Framework ARKit là nền tảng thực tế tăng cường của Apple cho phép các nhà phát triển tạo ứng dụng AR cho iOS mà không cần kiến thức sâu về thị giác máy tính. Theo Apple ARKit Documentation, 2025, framework sử dụng Visual-Inertial Odometry để theo dõi chính xác vị trí thiết bị trong không gian mà không cần đánh dấu bên ngoài. Hiểu ngữ nghĩa cảnh cho phép nhận dạng các mặt phẳng ngang và dọc, xác định ánh sáng và đặt các đối tượng ảo trong môi trường thực.
Những điểm chính
ARKit là framework thực tế tăng cường của Apple, được công bố tại WWDC 2017 cùng với iOS 11. Nó kết hợp khả năng của máy ảnh, bộ xử lý chuyển động dòng M và công cụ neural của chip A để mang đến trải nghiệm AR sâu sắc mà không cần phần cứng chuyên dụng — chỉ cần iPhone hoặc iPad.
ARKit sử dụng Visual-Inertial Odometry (VIO), kết hợp dữ liệu từ máy ảnh và cảm biến quán tính Core Motion để theo dõi chuyển động của thiết bị trong không gian một cách chính xác. VIO cho phép framework hiểu được vị trí của thiết bị so với môi trường xung quanh mà không cần sử dụng GPS hoặc đánh dấu bên ngoài.
Theo Apple WWDC 2024, ARKit 6 được hỗ trợ trên các thiết bị có chip A12 trở lên (iPhone XS, iPad Pro 2018+). Số lượng ứng dụng AR trên App Store đã vượt quá 15.000 và tổng diện tích các mặt phẳng được nhận dạng trong tất cả các phiên AR vượt quá 100 tỷ mét vuông.
Qua sáu phiên bản, ARKit đã nhận được những cải tiến đáng kể: ARKit 1.0 (iOS 11) — theo dõi cơ bản và nhận dạng mặt phẳng; ARKit 2.0 — phiên AR dùng chung qua ARWorldMap và phát hiện đối tượng 3D; ARKit 3.0 — theo dõi cơ thể người, phân đoạn người và camera trước và sau đồng thời.
ARKit 4.0 đã giới thiệu máy quét LiDAR để xác định độ sâu tức thì và che khuất đối tượng, cũng như Location Anchor để gắn nội dung AR vào tọa độ GPS. ARKit 6 đã thêm video 4K với HDR, Plane Estimation bằng LiDAR và cải thiện xử lý che khuất.
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 hoạt động thông qua một vòng lặp phiên AR, bắt đầu với cấu hình và liên tục phân tích luồng video từ máy ảnh. Mỗi khung hình, framework tính toán vị trí thiết bị (6 bậc tự do), cập nhật bản đồ các mặt phẳng được nhận dạng và điều chỉnh vị trí các đối tượng ảo — tất cả ở 60 khung hình mỗi giây.
Quy trình VIO bao gồm hai pipeline song song: thuật toán đo khoảng cách thị giác theo dõi chuyển động của các điểm đặc trưng giữa các khung hình, trong khi các cảm biến quán tính Core Motion dự đoán chuyển động trong các khoảng ngắn khi máy ảnh di chuyển nhanh hoặc hình ảnh bị mờ. Kết hợp cả hai phương pháp cho độ chính xác theo dõi lên tới 1 centimet.
Theo Apple, ARKit xử lý tới 500 điểm đặc trưng mỗi khung hình và bản đồ môi trường (ARWorldMap) có đường kính lên tới 100 mét. Việc quét môi trường và xây dựng bản đồ mất khoảng 2–3 giây sau khi bắt đầu phiên — trong thời gian này ARKit tích lũy dữ liệu từ máy ảnh và cảm biến.
ARAnchor là đối tượng chính để đặt nội dung. Khi ARKit nhận dạng một mặt phẳng, nó tạo ARPlaneAnchor chỉ rõ vị trí, kích thước và hướng của bề mặt. Nhà phát triển phản hồi với ủy quyền session(_:didAdd:) và đặt đối tượng 3D tại vị trí mặt phẳng được phát hiện bằng SceneKit hoặc RealityKit.
Để triển khai kéo đối tượng, ARHitTestResult được sử dụng: khi chạm vào màn hình, một hit-test được thực hiện qua khung hình ARKit, trả về điểm giao nhau của tia với các mặt phẳng được nhận dạng. Điểm tìm thấy được chuyển đổi thành ARAnchor và đối tượng được cố định tại vị trí đó.
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 cung cấp một tập hợp các công nghệ làm cho thực tế tăng cường trở nên chân thực và chức năng: theo dõi chuyển động với 6 bậc tự do, hiểu cảnh thông qua nhận dạng mặt phẳng và ranh giới, ước tính ánh sáng cho đổ bóng chính xác, che khuất người và bề mặt phản chiếu dựa trên bản đồ môi trường.
Motion Capture (ARKit 3+) — công nghệ theo dõi cơ thể người trong thời gian thực qua máy ảnh. Cho phép tạo hoạt ảnh nhân vật theo chuyển động của người dùng mà không cần cảm biến bên ngoài: 18 khớp được nhận dạng ở 60 Hz. Được sử dụng trong các ứng dụng thể dục và tạo mẫu hoạt ảnh.
Các phiên AR dùng chung (ARKit 2+) cho phép nhiều thiết bị nhìn thấy cùng một đối tượng ảo trong không gian chung. ARWorldMap lưu bản đồ môi trường, được truyền đến các thiết bị khác qua mạng. Apple đưa ra ví dụ về độ chính xác đồng bộ: hai iPhone 12 Pro trong cùng một phòng nhìn thấy đối tượng với độ lệch không quá 2 centimet.
Máy quét LiDAR, được tích hợp trong iPhone 12 Pro trở lên, thay đổi đáng kể khả năng của ARKit. Thay vì xác định độ sâu dựa trên phần mềm thông qua phân tích hình ảnh, LiDAR cung cấp ngay lập tức bản đồ độ sâu với độ chính xác lên tới 3 centimet trong phạm vi lên tới 5 mét. Điều này cho phép ARKit nhận dạng các mặt phẳng ngay lập tức mà không cần quét camera trước.
Với LiDAR, ARKit có thể xác định che khuất đối tượng: một đối tượng ảo có thể bị ẩn sau một chiếc ghế hoặc bàn thật. Ngoài ra, Scene Reconstruction xây dựng lưới 3D của môi trường trong thời gian thực — lên tới 10 triệu đa giác mỗi phòng, được sử dụng cho mô phỏng vật lý va chạm và ánh sáng chân thực.
// Cấu hình LiDAR
let lidarConfig = ARWorldTrackingConfiguration()
lidarConfig.planeDetection = [.horizontal]
lidarConfig.sceneReconstruction = .mesh
arView.session.run(lidarConfig)
// Phát hiện chạm trên mặt phẳng
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
)
}
Tích hợp ARKit bắt đầu với các yêu cầu tối thiểu: Xcode 15+, SDK iOS 17, thiết bị có chip A12 Bionic trở lên. Phải thêm khóa NSCameraUsageDescription vào Info.plist — ARKit sử dụng máy ảnh để theo dõi và hiển thị cảnh AR. Nếu không có khóa này, ứng dụng sẽ bị treo khi bắt đầu phiên AR.
Để hiển thị nội dung, iOS cung cấp ba framework: SceneKit cho đồ họa 3D độ phức tạp trung bình, RealityKit cho hiển thị chân thực với chất liệu PBR và Metal cho hiệu suất tối đa. RealityKit là lựa chọn được khuyến nghị cho các dự án mới vì nó bao gồm hỗ trợ tích hợp cho các tính năng ARKit, hoạt ảnh và vật lý.
Theo Apple, thời gian trung bình để tích hợp màn hình AR cơ bản vào ứng dụng hiện có là khoảng 2 giờ đối với nhà phát triển iOS có kinh nghiệm. Khó khăn chính phát sinh khi làm việc với lớp phủ phần tử UI trên cảnh AR và xử lý gián đoạn phiên AR — cuộc gọi, chuyển đổi ứng dụng hoặc mất theo dõi trong điều kiện ánh sáng yếu.
ARKit có thể mất theo dõi trong một số tình huống: ánh sáng không đủ (dưới 100 lux), thiếu các điểm đặc trưng (tường đơn sắc), di chuyển máy ảnh nhanh hoặc vật cản ống kính. ARSessionDelegate cung cấp các phương thức để xử lý các trạng thái này — nên hiển thị gợi ý cho người dùng: “Di chuyển thiết bị chậm hơn” hoặc “Bật đèn.”
Để phục hồi sau sự cố, ARKit tự động bắt đầu định vị lại — nó cố gắng khớp luồng video hiện tại với bản đồ môi trường đã lưu. Nếu không thể định vị lại, phiên sẽ khởi động lại với cấu hình mới. Nên lưu ARWorldMap khi thoát ứng dụng để khôi phục nhanh cảnh AR khi quay lại.
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("Phiên bị gián đoạn")
}
}
Câu hỏi thường gặp
ARKit hoạt động trên các thiết bị Apple có chip A12 Bionic trở lên: iPhone XS, XR, 11, 12, 13, 14, 15, 16 và SE (thế hệ thứ 2 và thứ 3), iPad Pro 2018+, iPad Air 2020+, iPad mini 2021+. Các tính năng LiDAR yêu cầu iPhone 12 Pro/Pro Max, iPhone 13 Pro/Pro Max, iPhone 14 Pro/Pro Max, iPhone 15 Pro/Pro Max và iPad Pro 2020+.
Có, ARKit có thể được sử dụng trực tiếp với Metal, nhưng điều này yêu cầu viết shader và kết xuất tùy chỉnh. SceneKit và RealityKit cung cấp các giải pháp có sẵn với tích hợp ARKit ở cấp độ framework. Đối với người mới bắt đầu, RealityKit là lựa chọn tối ưu vì nó tự động xử lý các chức năng ARKit.
ARKit tự động đánh giá ánh sáng cảnh qua máy ảnh và cung cấp dữ liệu về hướng, cường độ và nhiệt độ màu của nguồn sáng thông qua AREnvironmentProbeAnchor. Điều này cho phép các đối tượng ảo đổ bóng chính xác và phản chiếu môi trường, tạo ra sự hòa trộn chân thực với thế giới thực.
ARKit chỉ hoạt động trên iOS và sử dụng Visual-Inertial Odometry để theo dõi, trong khi ARCore của Google hoạt động trên Android và sử dụng Motion Tracking riêng dựa trên IMU và máy ảnh. ARKit có lợi thế nhờ tích hợp phần cứng với chip Apple, trong khi ARCore cung cấp khả năng đa nền tảng thông qua Cloud Anchors.
Có, ARKit lý tưởng cho trò chơi AR. SceneKit và RealityKit hỗ trợ vật lý (SCNPhysicsBody, PhysicsSimulation), hoạt ảnh, âm thanh và hạt. Các ví dụ nổi tiếng bao gồm Pokémon GO (sử dụng công cụ riêng với ARKit), Angry Birds AR và Lego AR Studio. ARKit cũng hỗ trợ các phiên nhiều người chơi qua ARWorldMap.
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