מדד וחקירה
בניית חוויות מציאות מורחבות עם מציאות ערכת Ios
Table of Contents
מבוא לבניית חוויות מציאות מורחבות עם מציאות
מציאות מורחבת (AR) מעכבת תוכן דיגיטלי על העולם הפיזי, יצירת חוויות אינטראקטיביות המשלבות מציאות עם אובייקטים וירטואליים. מסגרת המציאות של אפל מספקת מפתחים עם ממשק גבוה, ביצועים API לבניית יישומי AR עבור iOS. מאמר זה מתרחב על היסודות, כיסוי, אדריכלות של ישות-שותף, אינטראקציה משתמשים, אנימציה, פיזיקה, שיתוף פעולה, אופטימיזציה על ידי הסוף, יש לך הבנה מעשית של חוויות ARKit כדי ליצור באמצעות חוויות ליבה.
תחילתו: Project Setup and Conditions
כדי לפתח יישומי AR עם המציאותKit, אתה צריך Xcode 13 או מאוחר יותר, מכשיר iOS פיזי עם שבב A9 או חדש יותר (iPhone SE, 6s, ולאחר מכן; iPads 5th gen ולאחר מכן), וחשבון מפתח Apple עבור בדיקות. iOS סימולטור אינו תומך מצלמה או חיישן נתונים, כך בדיקות device אמיתי הוא חיוני.
יצירת פרויקט Xcode חדש ובחירת ה-FLT:0 (Augmented Reality AppFillo:1 תבנית.בחר SwiftUI או UIKit בהתאם להעדפות שלך - המציאות פועל בצורה חלקה עם שניהם.
לחלופין, באפשרותך להוסיף באופן ידני את המציאות לפרוייקט הקיים על ידי ייבוא המסגרת:
import RealityKit
import ARKit
(ה) ,0) NSCameraUsage DescriptionFLT (הראשונה ל-FLT:2) - מחרוזת ידידותית למשתמש המסבירה מדוע האפליקציה זקוקה לגישה למצלמה.
(ב) לפרטים נוספים, קרא ל-Apple's FLT:0 ריאליות, תיעוד של אפל: 1 ו-FLT:2ARKit RecordFLT 3:2ARKit
הבנת מערכת ה-Entity-Component
(הופנה מהדף [[1924]]]] [[1924]]]]]], [[1924]]]]]], [[1924]]]], [[1924]]]], [[1924]]]]]], [[1924]]]]]], [[1924]]]]]], [[1924]]]]]]]], [[1924]]]]]]]], [[1924]]]]]], [[1924]]]]]], [[1924]]]]]]]]]], [[1924]]]], [[1924]], [[1924]]]]]]]]]], [[1924]]]]]]]]]], [[1924]]]]]]]], [[1924]]]]]]]], [[1966]], [[1924]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]], [[1966]], [[1966]], [[1966]], [[1924]], [[1966]], [[1966]], [[1966]], [[1966]]]]]]]], [[1966]], [[1966]], [[1966]], [[1966]]]]]], [[1966]], [[1966]], [[[[1966]]]]
גישה מודולרית זו מקלה על יצירת אובייקטים מורכבים, ליצור ישויות, לצרף רכיבים, ולארגן אותם בהיררכיה.שורש הסצנה הוא רצף 7 (בדרך כלל AFLT:8), אשר מקשר תוכן וירטואלי למיקום בעולם האמיתי שזוההה על ידי ARKit.
יצירת תוכן של אנקורג' והוספת
העוגן הנפוץ ביותר הוא עוגן מטוס, אשר מצמיד תוכן אל משטחים אופקיים או אנכיים.כאן ניתן להציב מודל 3D על כל מטוס מוכר:
// 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)
ניתן גם ליצור עיגוןים בעמדות עולם ספציפיות באמצעות 10-10 או לצרף תוכן לדימויים מזוהים או לפרצופים באמצעות קודקוד 11 או .
בניית סצנת AR בסיסית עם המציאות
מעבר לדגם פשוט מיקום, עליך לנהל את מחזור החיים של AR. באפליקציית UIKit, להוסיף ההרחבה 13:13 לבקר התצוגה שלך:
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
}
}
ל"ויילדי" (בתרגום חופשי: "ב"ד) "[[1924]]" (ב[[1924]], [[1924]], [[1924]]
אינטראקציה בין המשתמשים: Gestures and Hit-Testing
כדי להפוך את אפליקציית AR שלך אינטראקטיבי, אתה צריך לטפל ברזים משתמשים, גרגרים, וסיבובים. RealityKit מספק הוכחה כדי לזהות איזה ישות המשתמש נגע.
עקבו אחרי Place or Interact
(ב) בפרשת [[המאה ה-20]], [[1924]], [[1924]]]], [[1924]]]], [[1924]]]], [[1924]]]]
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)
}
משיכת פני השטח בעולם האמיתי היא אמינה יותר מאשר הישות שנפגעת כאשר אתה רוצה להציב תוכן על מטוס. השתמש ב-FLT:21 עבור זה.
דרגו ורוטטים עם ג'ים
כדי לאפשר לגרור, לצרף את עמדת הישות לאורך המטוס, להשתמש ב-FLT:23:
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)
}
(ב) יישום חזק, מומלץ להשתמש ב-FLT:25 מתוך חבילת ה-VIP של המציאות (RealKit'sחבילה) או ב-FLT:27 מחווה נכסים ב- iOS 16+.
תכונות מתקדמות: Animations, Physics, and Collaboration
אנימציהs
המציאותKit תומך הן אנימציה של השלד (מקבצים USDZ) והן אנימציה מבוסס רכוש.כדי לעורר אנימציה מובנה על מודל עם משאבי אנימציה:
guard let model = try? ModelEntity.load(named: "dancing_character") else { return }
model.playAnimation(model.availableAnimations[0].repeat(duration: .infinity), transitionDuration: 0.5, startsPaused: false)
ניתן גם לשנות את השפע, את האיכויות, את המידות או את הפרמטרים המותאמים אישית באמצעות שיטת ה-FLT:29 (ה-FLT:30 או FLT:31).
פיזיקה Simulation
כרך 2 (בשיתוף: ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇
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)
הקופסה תופל על המטוס ותגיב להתנגשות.יש צורך באובייקטים סטטיים (כמו קירות) ל-FLT:34.
מושבות AR
עם מפגשים שיתופיים של ARKit, מכשירים מרובים יכולים לשתף את אותו עולם AR. שיתוף פעולה ניתן על ידי הגדרת אפשרויות שיתוף הפעולה של הפגישה:
config.collaborationEnabled = true
arView.session.run(config)
שלח את ה-FLT:36 לעמיתים אחרים באמצעות מסגרת רשת (למשל, Multipeer Connectivity) סצנת המציאות של כל מכשיר נשאר מסונכרן.זה אידיאלי עבור משחקים מרובי משתתפים או ביקורות עיצוב משותפות.
אופטימיזציה של חוויות Smooth AR
יישומי AR דורשים שיעורי מסגרת גבוהה (60 fps) כדי למנוע מחלות תנועה.עקוב אחר שיטות אלה:
- (FLT:0)Use low-poly Models 1FLT: ו-Switched קבצי USDZ. Keep vertex ספירה נמוכה ולהשתמש במרקמים דחוסים (KTX או PNG).
- (ב) ב[[1924]], [[1924]]]], [[1924]]]]]], [[1924]]]]
- (ב) ,0) ,5 ,5 ,5 , שתף את אותו מודל על פני מספר גופים.
- (ב) ויקרא י"ד: "ה' י"ד: "ה', ב'"ה', ב'"ה', ב'"ה', ב'"ה', ב'"ה', ב'"ה', ב'"ד'" (בראשית כ"ד).
- (ב) [ה]] ב[[1924]], [[1924]], [[1924]]]], [[1924]]]], [[1924]]]], [[1924]]]]]]]], [[1924]]]]]]]], [[1924]]]]]]]], [[1924]]]]]]]]]]
- (ב) ויקרא (ב) בפרשת [[המאה ה': "ה', כ"ד): "וְהִנָּעָשָׂה לְךָ מְשֶׂה לָעָשָׂה" (בראשית כ"ד).
(ב) ב[[1924]], [[1924]]]], [[1924]]]]]] ו[[1924]]]]]], [[1924]]]]]], [[1924]]]]]]
עיצוב ממשקי AR אינסטינקטיים
ניסיון המשתמש ב- AR שונה מהאפליקציות המסורתיות.עקוב אחר עקרונות אלה:
- (ב) ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇
- (ב) ⁇ :0) ,Gestures צריך להרגיש טבעי FLT: השתמש במניפולציה ישירה (tap, גרר, צובט) ולא בשליטה מופשטת.
- (ב) ,0) ,הרמזים החזותיים של ה-FLT:1: ישויות אינטראקטיביות גבוהות אור או מציגות צו צלב כאשר המשתמש מצביע על מטוס תקף.
- (ב) ,0) ,Handle תאורהFLT:1: המציאות יכולה באופן אוטומטי להעריך אור בעולם האמיתי וליישם אותו על אובייקטים וירטואליים.
- (בסביבות שונות) (בסביבות שונות: תאורה, מרקמים וגודלי חדר משפיעים על מעקב AR. Optimize עבור תנאים ממוצעים.
דיון ובדיקה של AR Apps
בדיקה אחרונה ב-6 ביולי 2008. ^ "U Xcode's Non-NGOable.com
- ניתן להציג נקודות תכונה, מקור עולמי, ותבניות פיסיקה.
- השתמש בגליונים כדי לראות מתי התגלו משטחים.
- הוסף ההרחבה "FLT:44" כדי לפקח על מצב וטעויות.
- מבחן על דורות מרובים של מכשירים (למשל, אייפון 8 לעומת אייפון 14 Pro) כדי למדוד ביצועים.
עבור בדיקות UI אוטומטיים, אתה יכול ללעג נתונים AR, אבל בדיקות ידניות נשאר חיוני עבור דיוק.
מסקנה
המציאות היא מופשטת הרבה מהמורכבות של פיתוח AR, אבל בניית חוויה מלוטשת דורשת תשומת לב לאדריכלות של ישות, אינטראקציה למשתמש, ביצועים ועיצוב. על ידי שילוב הטכניקות מכוסה - מהגדרת סצינה ומחווה טיפול לפיזיקה ושיתוף פעולה - אתה יכול ליצור יישומי AR העוסקים משתמשים וממנף את מלוא הפוטנציאל של חומרת iOS. תישאר הנוכחי עם מסגרות AR המתפתחות של אפל ולבחון תמיד על מכשירים אמיתיים כדי להבטיח חוויה חלקה, immerive.