תארו לעצמכם שאתם בונים מאמן כושר במציאות רבודה (AR). המשתמש מבצע תרגיל, ודמות וירטואלית חייבת לשקף את התנועה. אם המעקב אינו מדויק, האנימציה מתנתקת והמשתמש מאבד מוטיבציה. המהנדסים שלנו נתקלו בכך בזמן פיתוח אפליקציית סקווש: עיכוב של 3 פריימים הפך את המשחק לבלתי ניתן למשחק. הפתרון היה לייעל את צינור המעקב עבור המכשיר הספציפי. כתבנו מחדש את ה-handler באמצעות Metal, והעיכוב ירד לפריים אחד.
אנו משתמשים ב-ARKit ב-iOS (A12+) וב-MediaPipe ב-Android. לכל פלטפורמה מאפיינים משלה: ARKit מפיק 91 מפרקי שלד עם דיוק ברמת סנטימטר, בעוד MediaPipe נותן 33 נקודות מפתח עם שגיאה של 5–10 ס"מ. הבחירה תלויה בקהל היעד ובתקציב שלכם. בחירת הפלטפורמה הנכונה יכולה לחסוך עד 30% מתקציב האב-טיפוס.
במאמר זה נסקור: כיצד להשיג תנוחה בזמן אמת, לחבר מודל תלת-ממדי לשלד, לנתח זוויות מפרקים לכושר, ולהשוות בין פלטפורמות. כל קטעי הקוד מוכנים לשילוב. אנו עובדים עם ARKit 6, RealityKit, MediaPipe 2.0 ו-Flutter. עבור לקוחות הדורשים דיוק מרבי, אנו ממליצים על iOS עם LiDAR — הוא מוסיף מידע עומק.
השוואת טכנולוגיות
ARKit מול MediaPipe
iOS מציעה ARBodyTrackingConfiguration (דורש A12+). השלד כולל 91 מפרקים במבנה היררכי. קוד לקבלת מיקום פרק כף היד:
func session(_ session: ARSession, didUpdate anchors: [ARAnchor]) {
guard let bodyAnchor = anchors.first as? ARBodyAnchor else { return }
let skeleton = bodyAnchor.skeleton
if let wristTransform = skeleton.modelTransform(for: .rightHand) {
let worldTransform = bodyAnchor.transform * wristTransform
// Привязать объект к запястью
}
}מגבלות: מרחק 1.5–5 מ'; אדם אחד בפריים; תנועות מהירות גורמות לעיכוב של 2–4 פריימים. עבור מספר אנשים אנו משתמשים בפתרונות ML של צד שלישי.
עבור Android אנו משתמשים ב-MediaPipe Pose Landmarker (33 נקודות מפתח). הדיוק נמוך יותר מ-ARKit (5–10 ס"מ לעומת 1–3 ס"מ), אך מספיק לניתוח כושר. הערכת תנוחת אדם במציאות רבודה חיונית למעקב כושר מדויק. השוואה:
| פרמטר | ARKit (iOS) | MediaPipe (Android) |
|---|---|---|
| נקודות | 91 מפרקים | 33 נקודות ציון |
| דיוק | 1–3 ס"מ | 5–10 ס"מ |
| דרישות | A12+, Neural Engine | כל מצלמת RGB |
| קצב פריימים | 60 fps | 30–60 fps |
ARKit מדויק פי 3 מ-MediaPipe במיקום מפרקים. ARKit עולה על MediaPipe פי 3 בשגיאת מיקום מפרקים. ARKit משתמש ב-Neural Engine ובנתוני LiDAR (בדגמי Pro) לעומק יציב. MediaPipe מסתמך רק על תמונות RGB, כך שהדיוק יורד עם רקעים מורכבים או תאורה חלשה. אנו משתמשים בקינמטיקה הפוכה כדי לחדד מיקומי מפרקים. טרנספורמציות מחושבות באמצעות קווטרניונים לדיוק.
השוואת ביצועים
| מכשיר | FPS | RAM (MB) | שימוש במעבד (%) | |--------|-----|----------|---------------| | iPhone 14 Pro | 60 | 150 | 25 | | Samsung Galaxy S22 | 45 | 200 | 35 | | Google Pixel 7 | 30 | 180 | 40 |יישום
חיבור דמות תלת-ממדית
בצעו את השלבים הבאים:
- צרו סצנת USDZ עם שלד תואם להיררכיית המפרקים של ARKit.
- השתמשו ב-
func session(_ session: ARSession, didUpdate anchors: [ARAnchor]) { guard let bodyAnchor = anchors.first as? ARBodyAnchor else { return } let skeleton = bodyAnchor.skeleton if let wristTransform = skeleton.modelTransform(for: .rightHand) { let worldTransform = bodyAnchor.transform * wristTransform // Привязать объект к запястью } }של RealityKit כדי להחיל טרנספורמציות שלד. - ודאו ששמות המפרקים תואמים באמצעות Reality Composer Pro.
אם שמות המפרקים אינם תואמים, הדמות "מתפוצצת". אנו בודקים זאת באמצעות Reality Composer Pro. אנימציית שלד במציאות רבודה מביאה דמויות לחיים.
ניתוח תנועה לכושר
זווית מפרק באמצעות מכפלה סקלרית:
func jointAngle(joint1: simd_float3, vertex: simd_float3, joint2: simd_float3) -> Float {
let v1 = normalize(joint1 - vertex)
let v2 = normalize(joint2 - vertex)
return acos(dot(v1, v2)) * (180 / .pi)
}זווית ברך בסקוואט: 80–110° תקין. מתחת ל-60° עמוק מדי. אנו מיישמים משוב בזמן אמת עם הנחיות קוליות.
תכונות מתקדמות
מעקב אחר מספר אנשים
ARKit הסטנדרטי אינו תומך במעקב אחר מספר אנשים. לשם כך, אנו משתמשים ב-MediaPipe Pose עם גלאי נפרד לכל אדם, מותאם עם GPU. ב-iPhone 15 Pro אנו משיגים 30 fps לשני אנשים. ב-Android עם NNAPI, אנו מקבלים 20–25 fps לשני אנשים. BlazePose הוא מודל הערכת תנוחה בזמן אמת.
אופטימיזציית ביצועים
- הורידו קצב פריימים ל-30 fps אם הדיוק מאפשר.
- השתמשו ב-LOD למודלים תלת-ממדיים: הפחיתו מספר פוליגונים כשהדמות רחוקה.
- שמרו תוצאות זיהוי במטמון כשהתנוחה סטטית.
- ב-Android, השתמשו ב-NNAPI או ב-MediaPipe GPU delegate.
- ב-iOS, השתמשו ב-Metal לחישובי GPU — זה מפחית עומס על המעבד. ב-iOS, אנו מנצלים compute shaders של GPU דרך Metal.
שירותים ומחירים
מה כלול
- SDK עם תיעוד ודוגמאות קוד ל-iOS/Android.
- אב-טיפוס מוכן עם מעקב בסיסי וחיבור אובייקט תלת-ממדי.
- שילוב ניתוח כושר (זוויות, חזרות, קלוריות שנשרפו).
- ריגינג ואנימציה של דמות תלת-ממדית לשלד.
- אופטימיזציית ביצועים למכשירים ספציפיים.
- תמיכה לאחר השחרור: חודש אחד בחינם.
לוחות זמנים ועלות
מעקב גוף בסיסי עם חיבור אובייקט תלת-ממדי: 1–2 שבועות. ריגינג דמות + שילוב: 3–4 שבועות. ניתוח כושר: 4–6 שבועות. גרסת Android (MediaPipe): 2–3 שבועות נוספים. עלות הפיתוח נעה בין $5,000 ל-$20,000 בהתאם לתכונות. קבעו פגישת ייעוץ — נמצא את הפתרון האופטימלי לתקציב שלכם.
למה לבחור בנו
- 10+ שנות ניסיון בפיתוח מובייל
- 50+ פרויקטי AR מוצלחים
- עמידה בלוחות זמנים מובטחת ו-NDA
- מומחים מוסמכים ב-ARKit ו-MediaPipe
צריכים מעקב גוף מדויק לפרויקט שלכם? צרו קשר להערכה — נציע את הפתרון הטוב ביותר. מעקב גוף במציאות רבודה ב-iOS ו-Android משתמש בטכניקות שונות.







