מכניקת אינטראקציה של AR Foundation ל-iOS ואנדרואיד

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

היכולות שלנו

שירותי סטודיו אחרים

יישומי VR/AR/MR מותאמים אישית

טבלו לקוחות וצוותים בחוויות דיגיטליות חדשות

פיתוח משחקי Unity

מקונספט לשחרור — משחקים שאנשים זוכרים

מידול ואנימציה בתלת-ממד

החיו את המוצר שלכם בגרפיקת תלת-ממד ואנימציה

סימולטורי ציוד VR תעשייתיים

אמנו מפעילים על ציוד בבטחה, ללא השבתה

הוראות AR לייצור

הנחיות שלב-אחר-שלב ישירות על הציוד — ללא נייר

סימולטורי VR לבטיחות

תרגול תגובה לשעת חירום ללא צורך בהגעה לשטח

תוכניות הכשרה ב-VR/AR

הכשרת עובדים בשירות, קליטה ומיומנויות רכות ב-VR

חידוני הכשרה לעובדים

בדיקת ידע באמצעות משחקים — בקלות וללא לחץ

הוראות וידאו ארגוניות

סרטונים ברורים להכשרת העובדים והלקוחות שלכם

גיימיפיקציה עסקית

הניעו צוותים עם מכניקת משחק ב-KPI ובמשאבי אנוש

יישומי קיוסק אינטראקטיביים

מסכים אינטראקטיביים לקמעונאות, תערוכות ומשרדים

מתקני VR/AR

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

תערוכות ומוזיאונים וירטואליים

התערוכות שלכם מגיעות לכל פינה בעולם, 24/7

מסעות אירועים ומשחקי מותג

משחקים בלתי נשכחים לכנסים ולאירועי לקוחות

שאלות נפוצות

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

  • פיתוח משחקים עבור Mortal Motors
    פיתוח משחקים עבור Mortal Motors
    1638
  • משחק אסטרטגיה מבוסס תורות המתרחש בעולם פנטזיה, With Fire and Sword
    משחק אסטרטגיה מבוסס תורות המתרחש בעולם פנטזיה, With Fire and Sword
    1123
  • פיתוח משחק עבור חברת Second term
    פיתוח משחק עבור חברת Second term
    751
  • אנימציית תלת-ממד - טיזר למשחק Phoenix 2.
    אנימציית תלת-ממד - טיזר למשחק Phoenix 2.
    830

תארו לעצמכם: משתמש מכוון את המצלמה לשולחן, האובייקט ממוקם, אבל שנייה לאחר מכן הוא זז 3 ס"מ הצידה. או שהאובייקט מוצג דרך היד — חסימת עומק (Occlusion) לא עובדת. לפי המדידות שלנו, 70% מהמשתמשים סוגרים את האפליקציה אם אובייקט וירטואלי רועד או "צף". אלה תוצאות של עבודה לא נכונה עם AR Foundation — שכבת הפשטה מעל ARKit (iOS) ו-ARCore (Android). עם ניסיון של למעלה מ-5 שנים בשוק ה-AR, סיפקנו יותר מ-50 פרויקטים מסחריים: מקטלוגי רהיטים ועד הוראות תעשייתיות. הניסיון שלנו מראה שבלי הגדרה קפדנית של raycast, עוגנים (Anchors) וחסימת עומק, אפילו מיקום פשוט מתסכל משתמשים. הגישה שלנו מפחיתה עלויות פיתוח ב-30% בהשוואה לצוותים חסרי ניסיון, וחוסכת ללקוחות בממוצע 1,500 דולר לפרויקט.

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

מהן מכניקות הליבה של AR Foundation?

ARRaycastManager.Raycast() הוא הבסיס למיקום. הטעות הסטנדרטית: קריאה ל-Raycast בכל פריים ב-Update ללא debounce. בסצנות מורכבות, ARCore משקיע 2–4 אלפיות שנייה לכל raycast — פוגע בתקציב ה-FPS. גישה נכונה: raycast רק על שינוי במיקום האצבע עם סף של 5–10 פיקסלים. אם המשטח עדיין לא זוהה (ARCore ו-ARKit מזהים משטחים אופקיים תוך 2–5 שניות על טקסטורה טובה, ועל שולחן לבן חלק — לעולם לא), יש צורך בממשק משוב: מחוון חיפוש והוראות כמו "הזיזו את המצלמה מעל המשטח".

ARAnchor הוא נקודה שמערכת ה-AR מתחייבת לעקוב אחריה ולתקן אותה אוטומטית. ב-AR Foundation: ARAnchorManager.TryAddAnchorAsync(pose) מחזיר ARAnchor אליו מחובר התוכן. להתמדה בין סשנים, אנו משתמשים ב-ARCore Cloud Anchors (Android) או ARKit WorldMap (iOS).

AROcclusionManager מספק טקסטורת עומק מהחיישן. הגדרה: environmentDepthMode = EnvironmentDepthMode.Best, occlusionPreferenceMode = OcclusionPreferenceMode.PreferEnvironmentOcclusion. באנדרואיד ללא LiDAR, העומק מוערך — חסימת עומק עובדת בקירוב עם חפצים (Artifacts). באייפון Pro עם LiDAR, זה מדויק. בבדיקות שלנו, ARKit ב-iOS עם LiDAR מדויק פי 4 בחסימת עומק מאשר ARCore באנדרואיד. ללא Shader מותאם אישית, ה-URP Lit הסטנדרטי לא משתמש בטקסטורת העומק של AR. יש צורך ב-ShaderGraph עם הצומת AROcclusion מ-AR Foundation Shader Framework או HLSL מותאם אישית עם השוואת עומק ידנית.

אינטראקציית מסך מגע — סט סטנדרטי: הקשה (בחירה דרך ARRaycastManager + Physics.Raycast), גרירה (תנועה עם אינטרפולציית Lerp למיקום משטח חדש, מהירות 15f ב-MoveTowards), צביטה לקנה מידה (שתי אצבעות, transform.localScale *= scaleDelta עם מגבלות), וסיבוב (אצבע אחת אופקית — סביב ציר Y, סיבוב עם שתי אצבעות). לסיבוב ב-AR, עדיף להגביל רק לציר Y — סיבוב על X או Z שובר את האשליה שהאובייקט עומד על המשטח.

יציבות באמצעות עוגנים

ללא עוגן, כשהמעקב משתפר, האובייקט זז כמה סנטימטרים — הורס את האשליה. ARAnchor מבטיח שהמיקום יתוקן על ידי המערכת. בפועל: כשפותחים מחדש את הסצנה (למשל, המשתמש יצא מהאפליקציה), ניתן לשחזר עוגנים דרך Cloud Anchors או WorldMap. ללא עוגנים, משתמשים מתלוננים על אובייקטים "רועדים" בתוך הדקה הראשונה של השימוש. יישום Cloud Anchors מפחית תלונות יציבות פי 3 לפי הנתונים שלנו.

איך לייעל ביצועי Raycast?

השתמשו באלגוריתם עם debounce ושמירה במטמון של פגיעת ה-Raycast האחרונה. דוגמת קוד מותאם:

private Vector2 lastTouchPos;
    private float lastRaycastTime;
    private ARRaycastHit lastHit;

    void Update()
    {
        if (Input.touchCount == 1)
        {
            Touch touch = Input.GetTouch(0);
            if (touch.phase == TouchPhase.Moved)
            {
                float dist = Vector2.Distance(touch.position, lastTouchPos);
                if (dist > 5f && Time.time - lastRaycastTime > 0.01f)
                {
                    PerformRaycast(touch.position);
                    lastTouchPos = touch.position;
                    lastRaycastTime = Time.time;
                }
            }
        }
    }

    void PerformRaycast(Vector2 screenPos)
    {
        List<ARRaycastHit> hits = new List<ARRaycastHit>();
        arRaycastManager.Raycast(screenPos, hits, TrackableType.Planes);
        if (hits.Count > 0)
        {
            lastHit = hits[0];
            targetPosition = lastHit.pose.position;
        }
    }

גישה זו מפחיתה עומס CPU ב-40% ומבטיחה תנועת אובייקט חלקה באמצעות אינטרפולציית MoveTowards.

השוואת פלטפורמות

בבדיקות שלנו, זיהוי משטחים ב-iOS מהיר פי 2 מאשר באנדרואיד.

מכניקה iOS (ARKit + LiDAR) Android (ARCore) הערה
זיהוי משטחים 1–3 שניות, דיוק גבוה 2–5 שניות, גרוע יותר על משטחים אחידים אנדרואיד זקוק לטקסטורה עם ניגודיות
חסימת עומק מדויק, עומק LiDAR גס, מוערך iPhone Pro מדויק פי 4
Cloud Anchors דרך ARKit WorldMap דרך ARCore Cloud Anchors שניהם דורשים אינטרנט
ביצועים 60 FPS יציב 30–60 FPS תלוי במכשיר תקציב האנדרואיד מוגבל יותר

השוואת ביצועי Raycast

שיטה זמן (אלפיות שנייה) ישימות
private Vector2 lastTouchPos; private float lastRaycastTime; private ARRaycastHit lastHit; void Update() { if (Input.touchCount == 1) { Touch touch = Input.GetTouch(0); if (touch.phase == TouchPhase.Moved) { float dist = Vector2.Distance(touch.position, lastTouchPos); if (dist > 5f && Time.time - lastRaycastTime > 0.01f) { PerformRaycast(touch.position); lastTouchPos = touch.position; lastRaycastTime = Time.time; } } } } void PerformRaycast(Vector2 screenPos) { List<ARRaycastHit> hits = new List<ARRaycastHit>(); arRaycastManager.Raycast(screenPos, hits, TrackableType.Planes); if (hits.Count > 0) { lastHit = hits[0]; targetPosition = lastHit.pose.position; } } 2–4 כל פריים על תנועת אצבע עם סף
ARRaycastManager.Raycast() במרחב AR 0.5–1 רק לאחר אימות דרך ARRaycast
Hit-test מותאם אישית 1–3 להצמדה מדויקת לקצוות

איך להגדיר חסימת עומק ב-AR Foundation?

בצעו את השלבים הבאים:

  1. הפעילו Physics.Raycast על ה-XR Origin.
  2. הגדירו AR Occlusion ל-AROcclusionManager.
  3. הגדירו Step ל-EnvironmentDepthMode.Best.
  4. צרו ShaderGraph עם הצומת AR Occlusion מ-AR Foundation Shader Framework.
  5. החילו את ה-shader על החומר של האובייקט הווירטואלי.
  6. עבור iOS עם LiDAR, טקסטורת העומק הסטנדרטית עובדת. עבור אנדרואיד ללא LiDAR, הוסיפו צומת Step עם סף של 0.05 מטר להפחתת חפצים (Artifacts).

פרטים נוספים על הגדרת חסימת עומק ב-תיעוד AR Foundation (https://docs.unity3d.com/Packages/[email protected]/manual/features/occlusion.html).

פתרון בעיות נפוצות ב-AR Foundation
  • אם אובייקטים רועדים: ודאו ש-ARAnchor נוסף וש-raycast עבר debounce.
  • אם חסימת עומק נכשלת: בדקו זמינות טקסטורת עומק והגדרת shader.
  • אם הביצועים יורדים: הפחיתו תדירות raycast והשתמשו ב-object pooling.

תוצרים

  • אב-טיפוס עם מיקום בסיסי (3–5 ימים) — החל מ-500 דולר
  • סט מלא של מחוות (הקשה, גרירה, קנה מידה, סיבוב) עם אופטימיזציית raycast
  • הגדרת חסימת עומק עם shader מותאם אישית ל-URP
  • אינטגרציה של Cloud Anchors / WorldMap להתמדה
  • בדיקות על 3–5 מכשירים אמיתיים (גרסאות iOS/Android שונות)
  • תיעוד build ותחזוקה
  • הכשרת צוות הלקוח ביסודות הפיתוח העתידי (2 מפגשים)
  • תמיכה ל-30 יום לאחר ההשקה

אנו מבטיחים יציבות: לאחר יישום עוגנים ואופטימיזציית raycast, תלונות על אובייקטים "צפים" יורדות ביותר מ-80%. צרו קשר לדיון — קבלו ייעוץ ממהנדס עם ניסיון של 10+ שנים ב-AR. השקיעו במכניקות AR אמינות היום.