ARKit مع Swift: الدليل الشامل للواقع المعزز
1. ما هو ARKit ولماذا تحتاجه؟
ARKit هو إطار عمل (Framework) للواقع المعزز (AR) طورته شركة Apple لمنصتي iOS و iPadOS. يتيح للمطورين إنشاء تطبيقات AR غامرة تدمج كائنات ثلاثية الأبعاد ورسوم متحركة ومعلومات افتراضية مع العالم الحقيقي الذي تلتقطه كاميرا الجهاز. يستخدم ARKit تقنيات الرؤية الحاسوبية ومعالجة بيانات المستشعرات (مقياس التسارع، الجيروسكوب، الكاميرا) والتعلم الآلي لتتبع موقع الجهاز بدقة في الفضاء، واكتشاف الأسطح المستوية (طاولات، أرضيات، جدران)، والتعرف على الصور والأشياء.
لماذا تحتاج ARKit؟ يفتح هذا الإطار آفاقًا لا حدود لها في مجالات متنوعة: من الألعاب (مثل Pokémon GO) والتعليم (الكتب التفاعلية) إلى التجارة الإلكترونية (تجربة الأثاث في تطبيق IKEA Place) والصناعة (تصور الآلات المعقدة). بدلاً من كتابة خوارزميات رؤية حاسوبية معقدة من الصفر، يحصل المطور على أداة جاهزة ومحسّنة وقوية تتولى كل "العمل الشاق" لتحليل الفيديو والتتبع.
في هذا المقال، سنشرح بالتفصيل كيفية البدء مع ARKit باستخدام لغة Swift، وسنستعرض أهم الكلاسات والدوال، بالإضافة إلى كتابة مثال تطبيقي كامل. ستتعلم كيفية إضافة وظائف الواقع المعزز بسرعة إلى مشروعك وتجنب الأخطاء الشائعة.
2. الإعداد والتثبيت
ARKit ليس مكتبة خارجية، بل هو إطار عمل مدمج من Apple. لا تحتاج إلى تثبيته عبر مديري الحزم (CocoaPods, Swift Package Manager) أو pip. كل ما عليك فعله هو استيراده في مشروع Xcode الخاص بك.
ملاحظة مهمة: يعمل ARKit فقط على الأجهزة المزودة بمعالج A9 أو أحدث (iPhone 6s فما فوق، iPad 2017 فما فوق) ويتطلب iOS 11.0 أو أحدث. دعم ARKit في محاكي Xcode محدود (الكاميرا لا تعمل)، لذا يُنصح باستخدام جهاز فعلي للتطوير والاختبار.
خطوات البدء:
- افتح Xcode وأنشئ مشروعًا جديدًا (File → New → Project).
- اختر قالب "Augmented Reality App". سيقوم Xcode تلقائيًا بإعداد المشروع باستخدام SceneKit (أو RealityKit) و ARKit.
- إذا كنت تضيف ARKit إلى مشروع قائم، ما عليك سوى استيراد الإطار في الملف المطلوب.
أمر الاستيراد (في الكود):
import ARKit
لا حاجة لأي أوامر تثبيت إضافية. إذا كنت تستخدم RealityKit (إطار عمل أكثر حداثة للواقع المعزز)، قم باستيراده:
import RealityKit
3. بداية سريعة — مثال عملي مصغر
لنقم بإنشاء تطبيق AR بسيط يعرض مكعبًا ثلاثي الأبعاد على سطح أفقي يتم اكتشافه.
1. إعداد ViewController:
تأكد من أن ViewController الخاص بك يرث من ARSCNViewDelegate (لـ SceneKit) أو ARViewDelegate (لـ RealityKit). في هذا المثال، سنستخدم SceneKit لأنه أبسط لفهم الأساسيات.
import UIKit
import ARKit
class ViewController: UIViewController, ARSCNViewDelegate {
@IBOutlet var sceneView: ARSCNView!
override func viewDidLoad() {
super.viewDidLoad()
sceneView.delegate = self
sceneView.showsStatistics = true // يعرض FPS وإحصائيات أخرى
sceneView.debugOptions = [ARSCNDebugOptions.showFeaturePoints] // يعرض النقاط التي تراها الكاميرا
}
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
let configuration = ARWorldTrackingConfiguration()
configuration.planeDetection = [.horizontal] // تفعيل اكتشاف الأسطح الأفقية
sceneView.session.run(configuration)
}
override func viewWillDisappear(_ animated: Bool) {
super.viewWillDisappear(animated)
sceneView.session.pause()
}
}
2. إضافة الكائن ثلاثي الأبعاد:
سنستخدم دالة renderer(_:didAdd:for:) من ARSCNViewDelegate لإضافة مكعب عند اكتشاف سطح أفقي.
func renderer(_ renderer: SCNSceneRenderer, didAdd node: SCNNode, for anchor: ARAnchor) {
// التأكد من أن الـ anchor هو سطح أفقي
guard let planeAnchor = anchor as? ARPlaneAnchor else { return }
// إنشاء مكعب ثلاثي الأبعاد
let cube = SCNBox(width: 0.1, height: 0.1, length: 0.1, chamferRadius: 0)
let material = SCNMaterial()
material.diffuse.contents = UIColor.blue // لون المكعب أزرق
cube.materials = [material]
let cubeNode = SCNNode(geometry: cube)
cubeNode.position = SCNVector3(planeAnchor.center.x, planeAnchor.center.y + 0.05, planeAnchor.center.z)
node.addChildNode(cubeNode)
}
النتيجة: عند تشغيل التطبيق على جهاز فعلي، سيظهر مكعب أزرق على أي سطح أفقي تكتشفه الكاميرا (طاولة، أرضية). هذا هو أساس أي تطبيق واقع معزز!
4. الدوال الأساسية في ARKit
إليك أهم الدوال والكلاسات التي ستستخدمها باستمرار:
ARWorldTrackingConfiguration: التهيئة الأساسية لتتبع العالم الحقيقي بست درجات حرية (6DOF).ARPlaneAnchor: يمثل سطحًا مستويًا تم اكتشافه (أفقي أو عمودي).ARImageAnchor: يستخدم لتتبع الصور المعروفة مسبقًا.ARSCNViewDelegate: بروتوكول لإدارة أحداث SceneKit مع ARKit.session(_:didUpdate:): دالة تُستدعى عند تحديث الـ anchors (مثلاً، توسع السطح المكتشف).hitTest(_:types:): طريقة لتحديد الكائنات في المشهد بناءً على لمسة المستخدم.
للمزيد من التفاصيل، راجع الوثائق الرسمية من Apple.
5. نصائح للمبتدئين
- استخدم جهازًا فعليًا: المحاكي لا يدعم الكاميرا، لذا لن تتمكن من اختبار AR بشكل صحيح.
- الإضاءة مهمة: تأكد من أن الغرفة مضاءة جيدًا لتحسين أداء التتبع.
- ابدأ بـ SceneKit: إذا كنت جديدًا في ARKit، ابدأ بـ SceneKit لأنه أبسط، ثم انتقل إلى RealityKit لاحقًا.
- اختبر على أسطح مختلفة: جرب التطبيق على طاولات وأرضيات مختلفة لترى كيف يتعامل ARKit مع الأسطح المختلفة.
الآن أنت جاهز لبدء رحلتك في عالم الواقع المعزز مع ARKit و Swift! ابدأ بمشاريع صغيرة وقم بتوسيعها تدريجيًا.