פיתוח באמצעות Unity ל-Android XR

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

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

המדריך הזה כולל את הפרקים הבאים:

  • תמיכה ב-Unity ל-Android XR
    • מידע בסיסי על Unity XR
    • פיתוח ופרסום אפליקציות ל-Android XR
    • חבילות Unity ל-Android XR
      • ‫Unity OpenXR: חבילת Android XR
      • ‫Android XR Extensions for Unity
      • תכונות ושיקולי תאימות
  • קלט ואינטראקציה

תמיכה ב-Unity ל-Android XR

כשמפתחים אפליקציות Unity ל-Android XR, אפשר להשתמש בכלים וביכולות של מציאות משולבת בגרסאות האחרונות של Unity 6. כדי לעזור לכם להתחיל במהירות, התבניות האלה כוללות תבניות של מציאות משולבת שמשתמשות ב-XR Interaction Toolkit, ב-AR Foundation וב-OpenXR Plugin. כשמפתחים אפליקציות באמצעות Unity ל-Android XR, מומלץ להשתמש ב-Universal Render Pipeline ‏ (URP) כצינור הרינדור לפריסה וב-Vulkan כ-Graphics API. התכונות האלה מאפשרות לכם לנצל חלק מתכונות הגרפיקה של Unity, שנתמכות רק ב-Vulkan. מידע נוסף על ההגדרות האלה זמין במדריך להגדרת פרויקטים.

מידע בסיסי על Unity XR

אם אין לכם הרבה ניסיון ב-Unity או בפיתוח XR, תוכלו לעיין במדריך ה-XR של Unity כדי להבין מושגים בסיסיים של XR ותהליכי עבודה. במדריך ל-XR יש מידע על:

פיתוח ופרסום של אפליקציות ל-Android

‫ל-Unity יש מגוון מאמרי עזרה לפיתוח, לבנייה ולפרסום של אפליקציות ל-Android, כולל נושאים כמו הרשאות ל-Android ב-Unity, הגדרות build ל-Android, בניית האפליקציה ל-Android ושליחה ל-Google Play.

חבילות Unity ל-Android XR

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

בתמונה הזו מוצג מיקום לדוגמה שבו אפשר להפעיל את קבוצות התכונות האלה דרך העורך של Unity.

דוגמה למסך לניהול פלאגינים של XR ב-Unity

Unity OpenXR Android XR

חבילת Unity OpenXR Android XR היא פלאגין XR להוספת תמיכה ב-Android XR ל-Unity. הפלאגין הזה מספק את רוב התמיכה ב-Android XR ל-Unity, והוא מאפשר תמיכה במכשירי Android XR בפרויקטים של AR Foundation. ‫AR Foundation מיועד למפתחים שרוצים ליצור חוויות במציאות רבודה (AR) או במציאות משולבת (MR). הוא מספק את הממשק לתכונות של AR, אבל לא מיישם תכונות בעצמו. ההטמעה מסופקת על ידי חבילת Unity OpenXR Android XR. כדי להתחיל להשתמש בחבילה הזו, אפשר לעיין במדריך החבילה, שכולל מדריך לתחילת הדרך.

‫Android XR Extensions for Unity

Android XR Extensions for Unity הוא פלאגין לחבילת Unity OpenXR Android XR, שכולל תכונות נוספות שיעזרו לכם ליצור חוויות סוחפות. אפשר להשתמש בו לבד או ביחד עם חבילת Unity OpenXR Android XR.

כדי להתחיל להשתמש בחבילה הזו, אפשר לעיין במדריך להגדרת פרויקט או במדריך למתחילים לייבוא של Android XR Extensions ל-Unity.

תכונות ושיקולי תאימות

בטבלה הבאה מפורטות התכונות שנתמכות על ידי Unity OpenXR: חבילת Android XR וחבילת Android XR Extensions for Unity. אפשר להשתמש בטבלה כדי לקבוע באיזו חבילה יש את התכונות שאתם צריכים ומהם שיקולי התאימות.

תכונה

‫Unity OpenXR: מחרוזת התכונות של Android XR

מחרוזת התכונות של Android XR Extensions for Unity

תרחישי שימוש והתנהגות צפויה

סשן AR

‫Android XR: הפעלה של AR

  • הגדרות התכונות כוללות את האפשרות Optimize Buffer Discards (אופטימיזציה של מחיקת מאגרי נתונים זמניים) (Vulkan)

‫Android XR (תוספים): ניהול סשנים

  • הגדרות התכונות כוללות Subsampling ‏(Vulkan) ו-URP SpaceWarp ‏(Vulkan)

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

מעקב אחר מכשירים

לא רלוונטי

לא רלוונטי

מעקב אחרי מכשירים משמש למעקב אחרי המיקום והסיבוב של המכשיר במרחב הפיזי. ‫XR Origin GameObject מטפל אוטומטית במעקב אחרי המכשיר ובהמרת נתונים שאפשר לעקוב אחריהם למערכת הקואורדינטות של Unity באמצעות הרכיב XROrigin והיררכיית GameObject עם Camera ו-TrackedPoseDriver.

מצלמה

‫Android XR: מצלמת AR

לא רלוונטי

התכונה הזו מספקת תמיכה בהערכת תאורה ובמעבר למסך מלא.

זיהוי מישור

‫Android XR: מישור AR

‫Android XR (תוספים): מישור

שתי התכונות האלה זהות, ואפשר להשתמש באחת מהן. ‫Android XR (תוספים): המישור כלול כדי שמפתחים יוכלו להשתמש בתכונות של Android XR (תוספים): מעקב אחר אובייקטים ועוגנים קבועים, בלי להסתמך על חבילת Unity OpenXR Android XR. בעתיד, "Android XR (תוספים): מישור" יוסר לטובת Android XR: עוגן AR.

מעקב אחר אובייקטים

לא רלוונטי

‫Android XR (תוספים): מעקב אחר אובייקטים

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

מעקב אחרי הבעות הפנים

‫Android XR: הבעות פנים AR

  • ‫XR_ANDROID_eye_tracking בלבד
  • ללא מעקב אחרי הבעות הפנים

‫Android XR: מעקב אחרי הבעות הפנים

  • XR_ANDROID_face_tracking

התמיכה בעיניים של האווטאר ניתנת דרך התכונה Android XR: הבעות פנים AR. גישה להבעות הפנים של משתמשים באמצעות התכונה "מעקב אחר הבעות פנים" ב-Android XR. אפשר להשתמש בשתי התכונות האלה ביחד.

הטלת קרניים

‫Android XR: הטלת קרניים AR

  • עוגן המישור
  • עומק העוגן

לא רלוונטי

התכונה הזו מאפשרת להקרין קרן ולחשב את נקודת החיתוך בין הקרן לבין נקודות מעקב במישור או נקודות מעקב של עומק שמזוהות בסביבה הפיזית.

עוגנים

‫Android XR: עוגנים AR

‫Android XR (תוספים): עוגן

  • הגדרות התכונה כוללות התמדה.

שתי התכונות כוללות תמיכה בעוגנים מרחביים ובעוגנים במישור. אפשר להשתמש באחת מהתכונות. לנקודות עיגון קבועות, משתמשים ב-Android XR (תוספים): עוגן. בעתיד, "Android XR (תוספים): עוגן" יוסר וכל תכונות העוגן יהיו ב-Android XR: עוגן AR.

הסתרה

‫Android XR: הסתרה AR

  • עומק הסביבה

לא רלוונטי

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

מדדים לבדיקת ביצועים

מדדי ביצועים של Android XR

לא רלוונטי

אתם יכולים להשתמש בתכונה הזו כדי לגשת למדדי הביצועים של מכשירי Android XR.

שכבות של קומפוזיציה

תמיכה בשכבת קומפוזיציה (נדרשים פלאגין OpenXR ו-XR Composition Layer)

‫Android XR: שכבת קומפוזיציה של מצב Passthrough

  • XR_ANDROID_composition_layer_passthrough_mesh

אפשר להשתמש בתמיכה בשכבות קומפוזיציה של Unity כדי ליצור שכבות קומפוזיציה בסיסיות (למשל: מרובע, גליל, הקרנה). ‫Android XR: אפשר להשתמש בשכבת הקומפוזיציה של מצב Passthrough כדי ליצור שכבה עם רשת בהתאמה אישית, שקוראת מ-GameObject של Unity.

רינדור ממוקד

רינדור ממוקד (נדרש פלאגין OpenXR)

  • תמיכה ברינדור ממוקד עם מעקב אחרי העיניים: האזור ברזולוציה הגבוהה יותר משתנה בהתאם למבט של המשתמש, וכך נעשה פחות מורגש

התמקדות (דור קודם)

רינדור ממוקד מזרז את הרינדור על ידי הורדת הרזולוציה של אזורים בראייה ההיקפית של המשתמש. התכונה "רינדור ממוקד" של Unity נתמכת רק באפליקציות שמשתמשות ב-URP וב-Vulkan. התכונה "התמקדות" (מדור קודם) ב-Android XR Extensions for Unity תומכת גם ב-Built-in Render Pipeline וב-OpenGL ES. כשאפשר, מומלץ להשתמש בתכונת הרינדור הממוקד של Unity. בנוסף, כשמפתחים ל-Android XR, מומלץ להשתמש גם ב-URP וגם ב-Vulkan.

מרחב הפניה לא מוגבל

לא רלוונטי

‫Android XR: מרחב הפניה לא מוגבל

התכונה הזו מגדירה את מצב המעקב של XRInputSubsystem ל-לא מוגבל. הערך "לא מוגבל" מציין שהמערכת XRInputSubsystem עוקבת אחרי כל InputDevice ביחס לעוגן בעולם, שיכול להשתנות.

מצב מיזוג הסביבה

לא רלוונטי

מצב מיזוג של הסביבה

התכונה הזו מאפשרת להגדיר את מצב המיזוג של סביבת ה-XR, שקובע איך תמונות וירטואליות משתלבות בעולם האמיתי כשמפעילים את התכונה "מצב Passthrought".

קלט ואינטראקציה

‫Android XR תומך בקלט טבעי רב-אופני.

בנוסף למעקב אחרי תנועות הידיים והעיניים, יש תמיכה גם בציוד היקפי כמו בקרי 6DoF, עכבר ומקלדת פיזית. כלומר, אפליקציות ל-Android XR צריכות לתמוך באינטראקציה באמצעות הידיים, ואי אפשר להניח שכל המכשירים יגיעו עם בקרי משחק.

פרופילים של אינטראקציות

‫Unity משתמשת בפרופיל אינטראקציה כדי לנהל את האופן שבו אפליקציית ה-XR שלכם מתקשרת עם מכשירי XR ופלטפורמות XR שונות. הפרופילים האלה מגדירים את הקלט והפלט הצפויים לתצורות שונות של חומרה, ומקדמים תאימות ופונקציונליות עקבית במגוון פלטפורמות. הפעלת פרופילים של אינטראקציות עוזרת להבטיח שאפליקציית ה-XR תפעל בצורה תקינה במכשירים שונים, שמיפוי הקלט יהיה עקבי ושתהיה לאפליקציה גישה לתכונות ספציפיות של XR. כדי להגדיר פרופיל אינטראקציה:

  1. פותחים את החלון Project Settings (הגדרות הפרויקט) (תפריט: Edit > Project Settings (עריכה > הגדרות הפרויקט)).
  2. לוחצים על XR Plug-in Management (ניהול פלאגינים של XR) כדי להרחיב את קטע הפלאגינים (אם צריך).
  3. ברשימת הפלאגינים ל-XR, בוחרים באפשרות OpenXR.
  4. כדי להוסיף פרופיל, בקטע פרופילים של אינטראקציות, לוחצים על +.
  5. בוחרים מהרשימה את הפרופיל שרוצים להוסיף.

אינטראקציה עם הידיים

האינטראקציה עם הידיים (XR_EXT_hand_interaction) מסופקת על ידי OpenXR Plugin, ואפשר לראות את פריסת המכשיר <HandInteraction> במערכת הקלט של Unity על ידי הפעלת פרופיל אינטראקציה עם הידיים. פרופיל האינטראקציה הזה משמש לקלט באמצעות הידיים, שנתמך על ידי ארבעת מצבי הפעולה שמוגדרים על ידי OpenXR: "צביטה", "דחיפה", "כיוון" ו"אחיזה". אם אתם צריכים עוד פונקציות של אינטראקציה עם הידיים או מעקב אחרי הידיים, תוכלו לעיין בקטע שימוש בידיים ב-XR בדף הזה.

אינטראקציה באמצעות מבט

האינטראקציה באמצעות מבט (XR_EXT_eye_gaze_interaction) מסופקת על ידי OpenXR Plugin, ואפשר להשתמש בפריסה הזו כדי לאחזר את נתוני התנוחה של העיניים (מיקום וסיבוב) שהתוסף מחזיר. מידע נוסף על אינטראקציה באמצעות המבט במדריך לקלט OpenXR

אינטראקציה עם בקר משחקים

‫Android XR תומך בפרופיל בקר Oculus Touch לבקרים עם 6 דרגות חופש. שני הפרופילים האלה מסופקים על ידי OpenXR Plugin.

אינטראקציה עם העכבר

פרופיל האינטראקציה עם העכבר ב-Android XR‏ (XR_ANDROID_mouse_interaction) מסופק על ידי התוספים של Android XR ל-Unity. הוא חושף פריסת מכשיר <AndroidXRMouse> במערכת הקלט של Unity.

אינטראקציה עם תנוחת כף היד

הפלאגין OpenXR מספק תמיכה באינטראקציה עם תנוחת כף היד (XR_EXT_palm_pose), שחושפת את הפריסה של <PalmPose> בתוך מערכת הקלט של Unity. התכונה "תנוחת כף היד" לא נועדה להחליף תוספים או חבילות שעוקבים אחרי תנועות ידיים בתרחישי שימוש מורכבים יותר. במקום זאת, אפשר להשתמש בה כדי להציב תוכן חזותי ספציפי לאפליקציה, כמו תמונות אווטאר. תנוחת כף היד כוללת את המיקום והכיוון של כף היד.

אינטראקציה עם הידיים ב-XR

חבילת אינטארקציה עם הידיים ב-XR מאפשרת לכם לגשת לנתוני מעקב תנועות הידיים – באמצעות XR_EXT_hand_tracking ו-XR_FB_hand_tracking_aim – ומספקת מעטפת להמרת נתוני מפרקי הידיים ממעקב תנועות הידיים לתנוחות קלט. כדי להשתמש בתכונות שכלולות בחבילה, צריך להפעיל את התכונות Hand Tracking Subsystem ו-Meta Hand Tracking Aim OpenXR.

דוגמה שמראה איך מפעילים את מעקב הידיים

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

לפרטים נוספים, אפשר לעיין במאמרי העזרה של Unity בנושא הגדרת אינטראקציה עם הידיים בפרויקט XR.

אזורי מהימנות של מעקב אחרי הבעות הפנים

תוסף XR_ANDROID_face_tracking מספק ערכי מהימנות לשלושה אזורים בפנים: החלק השמאלי העליון, החלק הימני העליון והחלק התחתון של הפנים. הערכים האלה, שנעים בין 0 (ללא מהימנות) ל-1 (המהימנות הכי גבוהה), מציינים את הדיוק של מעקב הפנים בכל אזור.

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

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

בקטע הקוד הבא ב-C# אפשר לראות איך לגשת לנתוני רמת המהימנות ולהשתמש בהם בסקריפט Unity:

using UnityEngine;
using Google.XR.Extensions;

public class FaceTrackingConfidence : MonoBehaviour
{
    void Update()
    {
      if (!XRFaceTrackingFeature.IsFaceTrackingExtensionEnabled.HasValue)
      {
        DebugTextTopCenter.text = "XrInstance hasn't been initialized.";
        return;
      }
      else if (!XRFaceTrackingFeature.IsFaceTrackingExtensionEnabled.Value)
      {
        DebugTextTopCenter.text = "XR_ANDROID_face_tracking is not enabled.";
        return;
      }

      for (int x = 0; x < _faceManager.Face.ConfidenceRegions.Length; x++)
      {
        switch (x)
        {
          case (int)XRFaceConfidenceRegion.Lower:
            regionText = "Bottom";
            break;
          case (int)XRFaceConfidenceRegion.LeftUpper:
            regionText = DebugTextConfidenceLeft;
            break;
          case (int)XRFaceConfidenceRegion.RightUpper:
            regionText = DebugTextConfidenceRight;
            break;
        }
    }
}

מידע נוסף זמין במאמרי העזרה בנושא Android XR Extensions for Unity.

בחירת אופן הצגת הידיים

ב-Android XR יש תמיכה בשתי דרכים לעיבוד של הידיים: רשת ותצוגה מוגדרת מראש.

תצוגת רשת של היד

חבילת Android XR Unity כוללת תכונה של רשת תלת-ממדית של היד, שמאפשרת גישה אל XR_ANDROID_hand_mesh extension. התכונה מציגה את הידיים של המשתמש כרשת תלת-ממדית. בתצוגת הרשת יש קודקודי משולשים שמייצגים את המבנה הגיאומטרי של היד. הרשת נוצרת בהתאמה אישית ומייצגת את המבנה הגיאומטרי של הידיים של המשתמש.

תצוגת ידיים מוגדרת מראש ב-XR

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

תנועות מובנות במערכת

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

כשהמשתמש מנהל אינטראקציה עם תפריט הניווט של המערכת, האפליקציה תגיב רק לאירועים של מעקב אחרי תנועות הראש. חבילת האינטראקציה עם הידיים ב-XR יכולה לזהות מתי המשתמש מבצע פעולות ספציפיות, למשל בתוך תפריט הניווט של המערכת. הסימון של AimFlags, SystemGesture ו-DominantHand מאפשר לדעת מתי הפעולה הזו מתבצעת במערכת. מידע נוסף על AimFlags זמין במאמרי העזרה של Unity בנושא Enum MetaAimFlags.

חבילת הכלים לאינטראקציה עם XR

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


‫OpenXR™‎ והלוגו של OpenXR הם סימנים מסחריים בבעלות The Khronos Group Inc. ‎ והם רשומים כסימן מסחרי בסין, באיחוד האירופי, ביפן ובבריטניה.