فریمورک ARKit — پلتفرم واقعیت افزوده از اپل است که به توسعهدهندگان امکان میدهد بدون دانش عمیق بینایی کامپیوتر، برنامههای AR را برای iOS ایجاد کنند. به گفته Apple ARKit Documentation, 2025، این فریمورک از Visual-Inertial Odometry برای ردیابی دقیق موقعیت دستگاه در فضا بدون نشانگرهای خارجی استفاده میکند. درک معنایی صحنه امکان تشخیص سطوح افقی و عمودی، تعیین نورپردازی و قرار دادن اشیاء مجازی در محیط واقعی را فراهم میکند.
نکات اصلی
ARKit — فریمورک واقعیت افزوده از اپل است که در 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 از ۱۵ هزار فراتر رفته و مساحت کل سطوح تشخیصدادهشده در تمام جلسات AR از ۱۰۰ میلیارد متر مربع فراتر رفته است.
در طی شش نسخه، ARKit پیشرفتهای قابل توجهی دریافت کرد: ARKit 1.0 (iOS 11) — ردیابی پایه و تشخیص سطوح؛ ARKit 2.0 — جلسات AR مشترک از طریق ARWorldMap و تشخیص اشیاء سهبعدی؛ 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 کار میکند که با یک پیکربندی راهاندازی میشود و به طور مداوم جریان ویدیویی دوربین را تحلیل میکند. در هر فریم، فریمورک موقعیت دستگاه (۶ درجه آزادی) را محاسبه میکند، نقشه سطوح تشخیصدادهشده را بهروز میکند و موقعیت اشیاء مجازی را تصحیح میکند — همه اینها با فرکانس ۶۰ فریم در ثانیه.
فرآیند VIO از دو جریان موازی تشکیل شده است: الگوریتم اودومتری بصری حرکت نقاط مشخصه (feature points) بین فریمها را ردیابی میکند و حسگرهای اینرسی Core Motion حرکت در فواصل کوتاه را زمانی که دوربین سریع حرکت میکند یا تصویر تار است پیشبینی میکنند. ترکیب دو روش دقت ردیابی تا ۱ سانتیمتر را فراهم میکند.
به گفته اپل، ARKit تا ۵۰۰ نقطه مشخصه در هر فریم را پردازش میکند و اندازه نقشه محیط (ARWorldMap) میتواند به ۱۰۰ متر قطر برسد. اسکن محیط و ساخت نقشه حدود ۲-۳ ثانیه پس از شروع جلسه طول میکشد — در این مدت ARKit دادهها را از دوربین و حسگرها جمعآوری میکند.
ARAnchor — شیء کلیدی برای قرار دادن محتوا. وقتی ARKit یک سطح را تشخیص میدهد، ARPlaneAnchor با مشخص کردن موقعیت، اندازه و جهت سطح ایجاد میکند. توسعهدهنده به delegate session(_:didAdd:) واکنش نشان میدهد و شیء سهبعدی را در محل تشخیص سطح از طریق 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 مجموعهای از فناوریها را ارائه میدهد که واقعیت افزوده را واقعگرا و کاربردی میکند: ردیابی حرکت با ۶ درجه آزادی، درک صحنه از طریق تشخیص سطوح و مرزها، تخمین نور برای سایهاندازی صحیح، انسداد افراد و سطوح بازتابنده بر اساس نقشههای محیط.
Motion Capture (ARKit 3+) — فناوری ردیابی بدن انسان در زمان واقعی از طریق دوربین. امکان انیمیت کردن شخصیتها با حرکات کاربر بدون حسگرهای خارجی را فراهم میکند: ۱۸ مفصل با فرکانس ۶۰ هرتز تشخیص داده میشود. در برنامههای تناسب اندام و نمونهسازی انیمیشن استفاده میشود.
جلسات AR مشترک (ARKit 2+) به چندین دستگاه اجازه میدهد اشیاء مجازی یکسانی را در فضای مشترک ببینند. ARWorldMap نقشه محیط را ذخیره میکند که از طریق شبکه به دستگاههای دیگر منتقل میشود. اپل نمونهای از دقت همگامسازی را ارائه میدهد: دو iPhone 12 Pro در یک اتاق شیء را با اختلاف حداکثر ۲ سانتیمتر میبینند.
اسکنر LiDAR نصبشده بر روی iPhone 12 Pro و جدیدتر، قابلیتهای ARKit را به طور اساسی تغییر میدهد. به جای تعیین نرمافزاری عمق از طریق تحلیل تصاویر، LiDAR بلافاصله نقشه عمق با دقت تا ۳ سانتیمتر در محدوده تا ۵ متر ارائه میدهد. این به ARKit اجازه میدهد سطوح را فوراً و بدون اسکن اولیه با دوربین تشخیص دهد.
با LiDAR، ARKit میتواند تیرگی اشیاء را تعیین کند: یک شیء مجازی میتواند پشت یک صندلی یا میز واقعی پنهان شود. علاوه بر این، Scene Reconstruction یک مش سهبعدی از محیط در زمان واقعی میسازد — تا ۱۰ میلیون چندضلعی برای یک اتاق که برای شبیهسازی فیزیک برخورد و نورپردازی واقعگرا استفاده میشود.
// پیکربندی برای 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 برای گرافیک سهبعدی سطح متوسط، RealityKit برای رندر فوتورئالیستیک با مواد PBR و Metal برای حداکثر عملکرد. RealityKit — انتخاب توصیهشده برای پروژههای جدید است، زیرا شامل پشتیبانی داخلی از توابع ARKit، انیمیشن و فیزیک است.
به گفته اپل، زمان متوسط ادغام صفحه AR پایه در یک برنامه موجود — حدود ۲ ساعت برای یک توسعهدهنده iOS با تجربه. مشکلات اصلی هنگام کار با لایهبندی عناصر UI روی صحنه AR و هنگام پردازش وقفههای جلسه AR — تماسها، تغییر برنامهها یا از دست رفتن ردیابی در نور کم — ایجاد میشود.
ARKit ممکن است در شرایط مختلف ردیابی را از دست بدهد: نور ناکافی (کمتر از ۱۰۰ لوکس)، عدم وجود نقاط مشخصه (دیوارهای یکدست)، حرکات سریع دوربین یا پوشاندن لنز. delegate 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 (نسل دوم و سوم)، 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 راهحلهای آماده با ادغام 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 از سال 2017 برنامههای iOS و Android را برای استارتاپها و کسبوکارها ایجاد میکند. ما به شما مشاوره میدهیم و بهترین راهحل را پیشنهاد خواهیم کرد.
همچنین بخوانید