بناء تجارب حقيقية مبشرة في مجال ريالتيت في إيوس
مقدمة إلى بناء تجارب حقيقية مبشرة بملكية الواقع
ويزيد الواقع المزدحم المحتوى الرقمي في العالم المادي، ويخلق تجارب تفاعلية تختلط بالأشياء الافتراضية، ويوفر إطار " التطبيق " للمطورين تدريباً عالي المستوى وقابلاً للتنفيذ لبناء أجهزة قياسية تعمل بالشبكة الدولية للمحاسبة، وتتوسع هذه المادة في الأساس، وتغطية التركيب، والهيكل المكون للكيانات، والتفاعل بين المستعملين، والتصوير، والفيزياء، والتعاون، والتفاؤل النهائي.
بدء التشغيل: مشروع إنشاء ومتطلبات
(ب) تطوير تطبيقات (آر آر) مع ( RealityKit) تحتاج إلى (Xcode 13) أو بعد ذلك، جهاز إيوس الفيزيائي برقاقة أو أحدث (أي فينس س، 6، ثم لاحقاً؛ (آيبادس 5) وحساب لمطور آبل للاختبارات، ولا يدعم جهاز جهاز التحكم بالأجهزة التصويرية أو بيانات الاستشعار، لذا فإن اختبارات التليف الحقيقي أمر أساسي.
إنشاء مشروع جديد للزجاجة (Xcode) واختيار نموذج () الواقع المحظوظ () والاختبار (SwiiftUI) أو UIKit) حسب تفضيلكم - تعمل شركة RealityKit ببطء مع كليهما، ويوفر النموذج ومسرحا أساسيا.
وكبديل لذلك، يمكنك أن تضيفي ريالتيكيت يدويا إلى مشروع قائم باستيراد الإطار:
import RealityKit
import ARKit
Ensure the NSCameraUsage Description is set in your ] — a user-friendly string explaining why the app needs camera access.
For more details, refer to Apple’s RealityKit documentation] and ARKit documentation].
فهم النظام الميسر للكيانين
(ب) استخدام نظام " ريالتي كيت " Entity-Component]، وهو هيكل أساسي لتشييد المشاهد.() () هو حاوية تحتوي على مكونات.() وتحدد المكونات سلوك الكيان ومثوله وفيزياءه وممتلكاته الأخرى، على سبيل المثال، تحدد مقبضاً من 3D
وهذا النهج النموذجي يجعل من السهل تكوين أجسام معقدة، وتنشئ كيانات، وتربط المكونات، وترتبها في ترتيب هرمي، وقاعدة الموقع هي [(FLT:7]) [الشكل المعتاد هو [()]) التي تربط المحتوى الافتراضي بموقع عالم حقيقي اكتشفه أركيت.
إنشاء وحدة طرفية وضم وحدة
وأكثر المرساات شيوعا هي مركب للطائرات يعلق محتوى على السطح الأفقي أو الرأسي، وهنا كيف يمكن وضع نموذج ثلاثي الأبعاد على أي طائرة معترف بها:
// Load a USDZ model
guard let model = try? ModelEntity.load(named: "robot") else { return }
// Create an anchor on any horizontal plane
let anchor = AnchorEntity(plane: .horizontal, classification: .any, minimumBounds: [0.2, 0.2])
// Attach the model to the anchor
anchor.addChild(model)
// Add the anchor to the ARView’s scene
arView.scene.addAnchor(anchor)
ويمكنك أيضاً أن تنشئ مرساً في مواقع عالمية محددة باستخدام أو أن ترفق محتوى الصور المكتشفة أو الوجوه باستخدام أو .
بناء مشهد أساسي من طراز آر آر مع ريالتيكيت
بالإضافة إلى وضع النموذج البسيط، عليك إدارة دورة الحياة في برنامج (أوكيت)
class ViewController: UIViewController {
@IBOutlet var arView: ARView!
override func viewDidLoad() {
super.viewDidLoad()
arView.session.delegate = self
// Configure session
let config = ARWorldTrackingConfiguration()
config.planeDetection = [.horizontal, .vertical]
arView.session.run(config)
loadContent()
}
func loadContent() {
// Create and add anchors
}
}
For SwiftUI, embed an ] that bridges into the SwiftUI hierarchy.
تفاعل المستعملين: الجيولوجيا والتجارب الهتنغارية
لكي تجعلي جهازكِ يتفاعل، عليكِ التعامل مع هواتف المستخدمين، وسحبهم، وتناوبهم، (حقيقة كيت) توفر اختباراً للتعرف على أيّ كيان لمسه المستخدم
Tap to Place or Interact
يضاف إلى . وفي معالج اللفتات، يدعو إلى استرداد الكيان تحت الإصبع:
arView.addGestureRecognizer(UITapGestureRecognizer(target: self, action: #selector(handleTap(_:))))
@objc func handleTap(_ sender: UITapGestureRecognizer) {
let location = sender.location(in: arView)
if let entity = arView.entity(at: location) {
// Scale the entity
var transform = entity.transform
transform.scale *= 1.2
entity.move(to: transform, relativeTo: entity.parent, duration: 0.3, timingFunction: .easeInOut)
} else {
// Place a new object at the tapped location
placeObject(at: location)
}
}
func placeObject(at screenPoint: CGPoint) {
let results = arView.raycast(from: screenPoint, allowing: .estimatedPlane, alignment: .any)
guard let result = results.first else { return }
let anchor = AnchorEntity(world: result.worldTransform)
let box = ModelEntity(mesh: .generateBox(size: 0.1), materials: [SimpleMaterial(color: .blue, isMetallic: false)])
anchor.addChild(box)
arView.scene.addAnchor(anchor)
}
التلقيح ضد سطح العالم الحقيقي أكثر موثوقية من الكيان الذي يضرب عندما تريد وضع المحتوى على متن طائرة
درّاج وروتة مع اللفتات
ولتمكين السحب، يرفق ويستكمل موقف الكيان على طول الطائرة، وللتناوب، يستخدم :
let panGesture = UIPanGestureRecognizer(target: self, action: #selector(handlePan(_:)))
arView.addGestureRecognizer(panGesture)
@objc func handlePan(_ sender: UIPanGestureRecognizer) {
let location = sender.location(in: arView)
guard let entity = arView.entity(at: location) else { return }
guard let parent = entity.parent as? HasAnchoring else { return }
// Translate the entity in the anchor’s local plane
let translation = sender.translation(in: arView)
// ... (convert to 3D movement)
}
For a robust implementation, consider using from RealityKit’s ] package, or the gesture property in iOS 16+.
المعالم المتقدمة: التقديرات والفيزياء والتعاون
التقديرات
وتدعم شركة RealityKit كلا من المحاكاة الهيكلية (من ملفات الولايات المتحدة الأمريكية) والتقديرات المستندة إلى الملكية، ولبدء عملية ترميم مبنية على نموذج بموارد تقديرية:
guard let model = try? ModelEntity.load(named: "dancing_character") else { return }
model.playAnimation(model.availableAnimations[0].repeat(duration: .infinity), transitionDuration: 0.5, startsPaused: false)
ويمكنك أيضاً أن تُحيّز التحولات أو الظلم أو المعايير العرفية باستخدام أسلوب الذي سبق رؤيته، وبالنسبة للتسلسلات المعقدة، يُستخدم أو .
محاكاة الفيزياء
Attach a to enable gravity, collisions, and forces:
let box = ModelEntity(mesh: .generateBox(size: 0.1), materials: [SimpleMaterial(color: .red, isMetallic: false)])
box.position = [0, 0.5, 0] // above a plane
let physicsBody = PhysicsBodyComponent(
massProperties: .default,
material: .generate(staticFriction: 0.8, dynamicFriction: 0.5, restitution: 0.3),
mode: .dynamic
)
box.components.set(physicsBody)
let collision = CollisionComponent(shapes: [.generateBox(size: [0.1, 0.1, 0.1])])
box.components.set(collision)
// Add box to anchor
anchor.addChild(box)
وسيقع الصندوق على الطائرة ويستجيب للاصطدامات.
الدورات التعاونية في مجال البحث والتطوير
ويمكن للأجهزة المتعددة، مع عقد دورات تعاونية لرابطة أركيت، أن تتقاسم نفس العالم الذي يُعرف باسم " آر " ، ويمكن التعاون من خلال تحديد خيارات التعاون التي تتيحها الدورة:
config.collaborationEnabled = true
arView.session.run(config)
إرسال ][ إلى أقران آخرين عن طريق إطار شبكة )مثلا، الانتقائية المتعددة الأطراف( - لا يزال موقع كل جهاز من مواقع ريالتيكيت متزامنا، وهذا مثالي للألعاب المتعددة الأطراف أو استعراضات التصميم المشتركة.
تحقيق الأداء الأمثل للخبرات المكتسبة في مجال البحث والتطوير
(أ) تطبيق نظام تقييم الأداء على معدلات الإطار المرتفع (60 ف ف ف ف ف ف ف ف ف ف) لتجنب مرض الحركة.
- (ه) استخدام نماذج منخفضة جداً وكمّلت ملفات الولايات المتحدة الأمريكية إلى أقصى حد، والحفاظ على عدد اللافيكس منخفض واستخدام النسيج المضغط (KTX أو PNG).
- ] لترهيب عدد الكيانات ] في الموقع، استخدام في حسابات الديّة.
- Minimize draw calls] by using instancing – share the same model across multiple entities.
- Adjust rendering quality] with on older devices.
- Usese model loading]] to prevent blocking the main thread. Load models in a background queue and present them when ready.
- إدارة دورة الحياة للدورة البحثية : دعوة عندما يذهب التطبيق إلى الخلفية، وإعادة تشغيل التشكيلة على سطح الأرض.
For detailed guidance, see Apple’s Creating an Immersive AR Experience and ] testing and troubleubleshooting your AR Experience.
تصميم واجهات غير ملائمة
وتختلف تجربة المستعملين في مجال البحث والتطوير عن تطبيقات تقليدية، وتتابع هذه المبادئ:
- Surface detection feedback]: Visualize detected planes with a grid or outline so users know where to place objects.
- Gestures should feel natural]: Use direct manipulation (tap, drag, fatch) rather than abstract controls.
- Provide visual hints: Highlight interactive entities or show a crosshair when the user points at a valid plane.
- Handle lighting]: RealityKit can automatically estimate real-world light and apply it to virtual objects. Use to adjust intensity.
- testing in various environments]: Different lighting, textures, and room sizes affect AR tracking. Optimize for average conditions.
عمليات تقييم وتقييم
اختبارات التوليد الحقيقي غير قابلة للتفاوض، استخدام الرمز Xcode ARKit Debugging Features:]
- Enable to show feature points, world origin, and physics wireframes.
- Use logs to see when surfaces are detected.
- يضاف لرصد حالة التتبع والأخطاء.
- اختبار على أجيال متعددة من الأجهزة (مثلاً، iPhone 8 ضد iPhone 14 Pro) لقياس الأداء.
لاختبارات الأشعة المقطعية الآلية يمكنك أن تسخر من بيانات الأشعة المقطعية لكن الاختبار اليدوي يظل أساسياً للدقة
خاتمة
إن الواقع الحقيقي يستخلص الكثير من تعقيد تطوير البحث والتطوير، ولكن بناء تجربة مهذبة يتطلب الاهتمام بهيكل الكيان، وتفاعل المستخدمين، والأداء، والتصميم، وبجمع التقنيات التي تغطيها - من تجهيز المشاهد ومناولة اللفت إلى الفيزياء والتعاون - يمكن أن تخلق أجهزة قياسية تعمل على استخدام أجهزة الإيوس وتستفيد من كامل إمكاناتها، وتظل في طور التشغيل مع الأجهزة المتطوّرة المتطورة في آبل، وتؤمن دائما اختبارا حقيقيا بشأن الوسائل البحرية.