הצבת אובייקטים ב-AR: מ-Raycast לייצוב

הצבת אובייקטים תלת-ממדיים ב-AR הופכת פעמים רבות למאבק עם מודלים 'צפים' והתנהגות לא יציבה בזמן תנועת המצלמה. אנחנו מיישמים הצבת AR במפתח מלא, החל מבחירת פורמט המודל ועד לאינטגרציה הסופית באפליקציה שלך. הצוות שלנו מבטיח עיגון יציב של אובייקטים על משטחים ותמיכה מתמשכת, כך שהתוצאה משמחת משתמשים בכל תנאי.

פיתוח ותמיכה בכל סוגי היישומים הניידים:

יישומים ניידים למידע ובידור
אפליקציות חדשות, משחקים, מדריכים, קטלוגים מקוונים, אפליקציות מזג אוויר, אפליקציות כושר ובריאות, אפליקציות נסיעות, אפליקציות חינוכיות, רשתות חברתיות ומסנג'רים, חידונים, בלוגים ופודקאסטים, פורומים, אגרגטורים
יישומים ניידים למסחר אלקטרוני
חנויות מקוונות, אפליקציות B2B, מרקטפלייסים, בורסות מקוונות, שירותי קאשבק, בורסות, פלטפורמות דרופשיפינג, תוכניות נאמנות, משלוחי מזון ומוצרים, מערכות תשלום.
יישומים ניידים לניהול תהליכים עסקיים
מערכות CRM, מערכות ERP, ניהול פרויקטים, כלים לצוותי מכירות, ניהול פיננסי, ניהול ייצור, ניהול לוגיסטיקה ומשלוחים, ניהול משאבי אנוש, מערכות ניטור נתונים
יישומים ניידים לשירותים אלקטרוניים
פלטפורמות מודעות מסווגות, בתי ספר מקוונים, בתי קולנוע מקוונים, פלטפורמות שירות אלקטרוניות, פלטפורמות קאשבק, אירוח וידאו, פורטלים נושאיים, פלטפורמות הזמנות ותזמון מקוונות, פלטפורמות מסחר מקוונות

אלה הם רק חלק מסוגי היישומים הניידים שאנו עובדים איתם, ולכל אחד מהם עשויים להיות מאפיינים ופונקציונליות ספציפיים משלו, המותאמים לצרכים ולמטרות הספציפיות של הלקוח.

השירותים שאנו מציעים
מציג 1 מתוך 1כל 1734 השירותים
הצבת אובייקטים ב-AR: מ-Raycast לייצוב
בינוני
~2-3 ימים

הכישורים שלנו:

שאלות נפוצות

העבודות האחרונות

  • פיתוח אפליקציית מובייל עבור FEEDME
    פיתוח אפליקציית מובייל עבור FEEDME
    971
  • פיתוח אפליקציית מובייל עבור XOOMER
    פיתוח אפליקציית מובייל עבור XOOMER
    869
  • פיתוח אפליקציית מובייל עבור RHL
    פיתוח אפליקציית מובייל עבור RHL
    1289
  • פיתוח אפליקציית מובייל עבור ZIPPY
    פיתוח אפליקציית מובייל עבור ZIPPY
    1143
  • פיתוח אפליקציית מובייל עבור Affhome
    פיתוח אפליקציית מובייל עבור Affhome
    1076
  • פיתוח אפליקציית מובייל עבור חברת FLAVORS
    פיתוח אפליקציית מובייל עבור חברת FLAVORS
    677

מיקום אובייקטים תלת-ממדיים ב-AR: מ-Raycast לייצוב

אנחנו פותרים זאת באופן קבוע עבור לקוחות בתחום הרהיטים והקמעונאות. לגרום למודל תלת-ממדי לשבת ביציבות על מישור שזוהה אינו משימה של ערב אחד. האובייקט חייב להישאר ישר כשהמצלמה זזה, לא "לרחף" תחת תאורה משתנה, להתאים קנה מידה כראוי, ולא לשקוע לתוך המשטח. אנו מציעים הטמעה מלאה: מבחירת פורמט המודל ועד לשילוב סופי באפליקציה. בפרויקט אחד עבור קמעונאי רהיטים, נתקלנו בבעיה של האובייקט "שוקע" לתוך המישור בזמן תנועת מצלמה מהירה. הפתרון היה שימוש ב-ARAnchor עם היסט דינמי של 2 מ"מ לאורך הנורמל — זה ביטל את ה-Z-fighting תחת כל תאורה.

פורמטים של מודלים תלת-ממדיים ואופטימיזציה ל-AR

התקן ל-AR נייד הוא USDZ (iOS/RealityKit) ו-GLB/GLTF (ARCore/חוצה-פלטפורמות). טעות נפוצה: לקחת מודל לא מותאם ולנסות לטעון אותו ל-AR. 500 אלף משולשים, טקסטורות 4096×4096 ללא mip-mapping מבטיחים ירידת FPS במכשירים מתחת ל-A13.

פרמטרים יעד ל-AR נייד:

סוג אובייקט פוליגונים טקסטורות גודל GLB
פריט קטן (כיסא, מנורה) עד 30 אלף 1024×1024 עד 5 מ"ב
אובייקט בינוני (ספה, שולחן) עד 80 אלף 2048×2048 עד 15 מ"ב
גדול (סט רהיטים, מטבח) עד 200 אלף 2048×2048 עד 40 מ"ב

דחיסה: KTX2 + Basis Universal עבור GLB, טקסטורות HEIC ב-USDZ. ב-RealityKit — Reality Composer Pro (Xcode 15 ומעלה) לאפיית חומרי PBR ישירות לפורמט .reality. עבור Android, השתמשו ב-Android Studio עם ARCore SDK 1.30+ להמרת GLB.

למה Raycast עדיף על hitTest למיקום?

עם ARKit 4+ ו-ARCore 1.18+, השיטה המועדפת לקביעת נקודת המיקום היא Raycast. היא מחזירה ARRaycastResult עם target: .existingPlaneGeometry או .estimatedPlane. existingPlaneGeometry משתמש בגיאומטריה שכבר זוהתה — הדיוק גבוה פי 2 מה-hitTest המיושן. אפל ממליצה על raycast כשיטה הראשית (ראו תיעוד ARKit). יתרה מכך, hitTest הוצא משימוש ב-iOS 14, והשימוש בו עלול להוביל לדחיית האפליקציה עקב הנחיות סקירת App Store (סעיף 4.2: פונקציונליות מינימלית).

דוגמה ב-Swift:

let query = arView.makeRaycastQuery(
    from: arView.center,
    allowing: .existingPlaneGeometry,
    alignment: .horizontal
)
let results = arView.session.raycast(query)
if let first = results.first {
    placeEntity(at: first.worldTransform)
}

עבור ARCore — let query = arView.makeRaycastQuery( from: arView.center, allowing: .existingPlaneGeometry, alignment: .horizontal ) let results = arView.session.raycast(query) if let first = results.first { placeEntity(at: first.worldTransform) } + Session.createRaycastQuery() נותן תוצאות יציבות יותר בקצוות המישור.

ייצוב האובייקט לאחר המיקום

לאחר המיקום, האובייקט לא אמור "לנדוד" כשהמצלמה זזה. הגישה הסטנדרטית היא להתחבר ל-Frame.raycast() דרך AnchorEntity:

let anchor = ARAnchor(transform: worldTransform)
arView.session.add(anchor: anchor)
let anchorEntity = AnchorEntity(anchor: anchor)
anchorEntity.addChild(modelEntity)
arView.scene.addAnchor(anchorEntity)

ARAnchor מפורש נועל את המיקום, והאובייקט לא מתעדכן כשהמישור משתכלל. ללא זה, האובייקט זז במשך 10–15 השניות הראשונות של הסשן בזמן ש-ARKit משכלל את הגיאומטריה. אופציונלית, ניתן להחיל סינון Kalman על מיקום העוגן אם הרעידות נמשכות.

צללים ותאורה פיזית

אובייקט AR ללא צל נראה כאילו הוא מרחף. ב-RealityKit, צל נוצר על ידי הגדרת ARAnchor על הישות — צל מגע נוצר אוטומטית. ב-SceneKit, יש צורך באור כיווני עם let anchor = ARAnchor(transform: worldTransform) arView.session.add(anchor: anchor) let anchorEntity = AnchorEntity(anchor: anchor) anchorEntity.addChild(modelEntity) arView.scene.addAnchor(anchorEntity) . חשוב, בשימוש בטקסטורת סביבה (ARKit, A12+), אובייקטים מקבלים השתקפויות של הסביבה האמיתית. משטחים מתכתיים משקפים את החדר — ללא זה, אובייקט כרום נראה פלסטיק. הפעל castsShadow = true ב-castsShadow = true.

מחוות נתמכות למניפולציה של אובייקט

לאחר המיקום, המשתמש צריך להיות מסוגל להזיז, לסובב ולשנות קנה מידה של האובייקט. ב-RealityKit, מחוות מתווספות בשורה אחת:

arView.installGestures([.translation, .rotation, .scale], for: entity) 

לשליטה מותאמת אישית, השתמשו ב-environmentTexturing = .automatic עם raycast רציף — זה נותן יותר שליטה על רגישות. בעת יישום סיבוב, הגבל לציר Y: השתמש ב-ARWorldTrackingConfiguration רק סביב הציר האנכי, אחרת האובייקט נוטה עם מחוות לא מדויקות. ב-Android, השתמשו באופן דומה ב-arView.installGestures([.translation, .rotation, .scale], for: entity) מ-Sceneform או ב-UILongPressGestureRecognizer ב-ARCore.

בדיקת מיקום AR במכשירים שונים

חשוב מאוד לבדוק על מספר דורות של אייפונים ומכשירי Android. לדוגמה, ב-iPhone XR (A12) raycast עובד ביציבות, אבל טקסטורת סביבה צורכת זיכרון נוסף — FPS עלול לרדת עם מודלים בעלי פוליגונים גבוהים. אנו ממליצים להשתמש ב-TestFlight ל-iOS ובדיקות פנימיות דרך Google Play ל-Android — זה עוזר לזהות בעיות עומק (Z-fighting) בגרסאות ARCore שונות.

מה כלול בעבודה

שלב תוצאה
ניתוח מודל ודרישות בחירת פורמט, אופטימיזציה של פוליגונים/טקסטורות
פיתוח מיקום Raycast, עוגן, ייצוב, צללים
יישום מחוות הזזה, סיבוב, שינוי קנה מידה
בדיקת מכשירים בדיקת יציבות בגרסאות iOS/Android שונות
שילוב באפליקציה תיעוד, גישה למאגר, הדרכת צוות

השלמנו מעל 20 פרויקטים מוצלחים בפיתוח AR נייד. צרו קשר להערכת פרויקט — אנו מספקים פתרונות סוהר תוך 2–3 שבועות. קבלו ייעוץ ללא התחייבות.