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

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

במדריך הזה תלמדו על:

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

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

כשאתם מפתחים אפליקציות ב-Unity ל-Android XR, אתם יכולים להשתמש בכלים וביכולות של המציאות המשולבת ב-Unity 6. התבניות האלה כוללות תבניות של מציאות משולבת שמשתמשות ב-XR Interaction Toolkit, ב-AR Foundation וב-OpenXR Plugin, כדי לעזור לכם להתחיל במהירות. כשאתם מפתחים אפליקציות באמצעות Unity for 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 VR. שתי החבילות האלה הן פלאגינים של ספקי XR, שאפשר להפעיל באמצעות חבילת ניהול הפלאגינים של XR ב-Unity. מנהל הפלאגינים של XR מוסיף הגדרות פרויקט לניהול ולקבלת עזרה בנוגע לטעינה, לאינטליקציה, להגדרות ולתמיכה ב-build של פלאגינים ל-XR. כדי לאפשר לאפליקציה להריץ תכונות של OpenXR בזמן ריצה, צריך להפעיל את התכונות האלה בפרויקט דרך מנהל הפלאגין.

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

דוגמה למסך ניהול הפלאגין של Unity XR

Unity OpenXR Android XR

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

תוספי Android XR ל-Unity

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

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

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

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

תכונה

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

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

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

סשן AR

Android XR: סשן AR

  • הגדרות התכונות כוללות את 'אופטימיזציה של ביטולי נתונים במאגר (Vulkan)'

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

  • הגדרות התכונות כוללות דגימה משנית (Vulkan) ו-URP SpaceWarp (Vulkan)

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

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

לא רלוונטי

לא רלוונטי

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

מצלמה

Android XR: מצלמת AR

לא רלוונטי

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

זיהוי מטוסים

Android XR: AR Plane

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

שתי התכונות האלה זהות, ואפשר להשתמש באחת מהן. Android XR (Extensions): Plane נכלל כדי שמפתחים יוכלו להשתמש בתכונות Android XR (Extensions): Object Tracking ו-persistent anchors בלי להיות תלויים בחבילת Unity OpenXR Android XR. בעתיד, התכונה Android XR (Extensions): Plane תוסר לטובת Android XR: AR Anchor.

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

לא רלוונטי

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

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

מעקב אחר פנים

Android XR: AR Face

  • XR_ANDROID_avatar_eyes בלבד
  • ללא מעקב אחר פנים

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

  • XR_ANDROID_face_tracking

התמיכה בעיניים של הדמות הווירטואלית ניתנת באמצעות התכונה Android XR: AR Face. גישה לתנועות הפנים של המשתמש באמצעות התכונה Android XR: Face Tracking. אם רוצים, אפשר להשתמש בשתי התכונות האלה יחד.

השלכת קרניים

Android XR: ‏ AR Raycast

  • עוגן מטוס
  • עומק מעגן

לא רלוונטי

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

עוגנים

Android XR: ציר AR

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

  • הגדרות התכונות כוללות עקביות.

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

חסימה

Android XR: חסימה ב-AR

  • עומק הסביבה

לא רלוונטי

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

מדדי ביצועים

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

לא רלוונטי

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

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

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

Android XR: שכבת קומפוזיציה של העברה (passthrough)

  • XR_ANDROID_composition_layer_passthrough_mesh

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

עיבוד Foveated

עיבוד Foveated (נדרש פלאגין OpenXR)

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

Foveation (דור קודם)

עיבוד תמונה ממוקד מאפשר להאיץ את העיבוד על ידי הפחתת הרזולוציה של אזורים בשדה הראייה ההיקפי של המשתמש. התכונה של עיבוד תמונה ממוקד ב-Unity נתמכת רק באפליקציות שמשתמשות ב-URP וב-Vulkan. התכונה Foveation (Legacy) בתוספים של Android XR ל-Unity תומכת גם ב-BiRP וב-GLES. מומלץ להשתמש בתכונה של עיבוד תמונה ממוקד ב-Unity כשהדבר אפשרי. חשוב לזכור ש-URP ו-Vulkan מומלצים גם כשמפתחים ל-Android XR.

מרחב עזר ללא גבולות

לא רלוונטי

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

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

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

לא רלוונטי

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

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

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

Android XR תומך בקלט טבעי במספר מצבים.

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

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

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

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

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

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

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

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

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

ב-Android XR יש תמיכה בפרופיל של Oculus Touch Controller לבקרים עם 6DoF. שני הפרופילים האלה ניתנים על ידי הפלאגין OpenXR.

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

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

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

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

XR Hands

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

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

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

פרטים נוספים זמינים במסמכי העזרה של Unity להגדרת XR Hands בפרויקט.

בחירת שיטת רינדור לידיים

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

רשת ידנית

חבילת Android XR ל-Unity מכילה את התכונה Hand Mesh שמספקת גישה ל-XR_ANDROID_hand_mesh extension. התכונה Hand Mesh מספקת רשתות (mesh) לידי המשתמש. רשת היד מכילה קודקודים של משולשים שמייצגים את הגיאומטריה של היד. התכונה הזו מיועדת לספק רשת מותאמת אישית שמייצגת את הגיאומטריה האמיתית של הידיים של המשתמש לצורך ויזואליזציה.

רכיב מוגדר מראש של XR Hands

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

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

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

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

ערכת הכלים של XR Interaction

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