بناء تجارب حقيقية مبشرة في مجال ريالتيت في إيوس

مقدمة إلى بناء تجارب حقيقية مبشرة بملكية الواقع

ويزيد الواقع المزدحم المحتوى الرقمي في العالم المادي، ويخلق تجارب تفاعلية تختلط بالأشياء الافتراضية، ويوفر إطار " التطبيق " للمطورين تدريباً عالي المستوى وقابلاً للتنفيذ لبناء أجهزة قياسية تعمل بالشبكة الدولية للمحاسبة، وتتوسع هذه المادة في الأساس، وتغطية التركيب، والهيكل المكون للكيانات، والتفاعل بين المستعملين، والتصوير، والفيزياء، والتعاون، والتفاؤل النهائي.

بدء التشغيل: مشروع إنشاء ومتطلبات

(ب) تطوير تطبيقات (آر آر) مع ( 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 ف ف ف ف ف ف ف ف ف ف) لتجنب مرض الحركة.

For detailed guidance, see Apple’s Creating an Immersive AR Experience and ] testing and troubleubleshooting your AR Experience.

تصميم واجهات غير ملائمة

وتختلف تجربة المستعملين في مجال البحث والتطوير عن تطبيقات تقليدية، وتتابع هذه المبادئ:

عمليات تقييم وتقييم

اختبارات التوليد الحقيقي غير قابلة للتفاوض، استخدام الرمز Xcode ARKit Debugging Features:]

لاختبارات الأشعة المقطعية الآلية يمكنك أن تسخر من بيانات الأشعة المقطعية لكن الاختبار اليدوي يظل أساسياً للدقة

خاتمة

إن الواقع الحقيقي يستخلص الكثير من تعقيد تطوير البحث والتطوير، ولكن بناء تجربة مهذبة يتطلب الاهتمام بهيكل الكيان، وتفاعل المستخدمين، والأداء، والتصميم، وبجمع التقنيات التي تغطيها - من تجهيز المشاهد ومناولة اللفت إلى الفيزياء والتعاون - يمكن أن تخلق أجهزة قياسية تعمل على استخدام أجهزة الإيوس وتستفيد من كامل إمكاناتها، وتظل في طور التشغيل مع الأجهزة المتطوّرة المتطورة في آبل، وتؤمن دائما اختبارا حقيقيا بشأن الوسائل البحرية.