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

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

SubspaceModifier דומה ל-Compose modifier עבור קומפוזבלים ב-Subspace. SubspaceModifier מאפשרת לכם לשנות את הקומפוזיציות במרחב תלת-ממדי, ולעזור לכם למקם, לסובב ולהוסיף התנהגויות לצמתי פריסה תלת-ממדיים.

פריסה

כברירת מחדל, Subspace מוגבל על ידי המרחב המומלץ לצפייה באפליקציה. המגבלות האלה משמשות למדידת הפריסה של רכיבי המרחב המשני, בדומה למגבלות בפריסות דו-ממדיות של Compose.

מילוי גבולות

המשנים fillMaxSize,‏ fillMaxWidth,‏ fillMaxHeight ו-fillMaxDepth גורמים לתוכן למלא (באופן חלקי) את הגבולות של רכיב האב. שימוש במאפייני מילוי עוזר לפריסת התוכן באפליקציה באופן שלא תלוי במאפייני התצוגה של מכשיר ה-XR.

הגדרת הגודל בפועל והגודל הנדרש

המשנים size,‏ width,‏ height ו-depth מגדירים את הגודל המועדף של התוכן. כדי להצהיר על הגודל המדויק של התוכן, משתמשים בתגי requiredSize,‏ requiredWidth,‏ requiredHeight ו-requiredDepth. צריך לציין את היחידות האלה במאפיין dp. כדי להמיר ממטרים ל-dp, צריך להשתמש ב-Meter.toDp().

מיקום הרכיבים הקומפוזביליים

offset

העיבוד offset מעביר את הרכיב הקומפוזבילי במרחב תלת-ממדי לאורך הצירים x, y ו-z. צריך לציין את היחידות האלה ב-dp. כדי להמיר ממטרים ל-dp, משתמשים ב-Meter.toDp().

rotate

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

  • השימוש ב-pitch,‏ yaw ו-roll, שמציינים את הסיבוב סביב הצירים x,‏ y ו-z בהתאמה,
  • שימוש ב-axisAngle, שהוא Vector3 שמייצג את ציר הסיבוב, ואת מספר המעלות שצריך לסובב סביבו,
  • שימוש ב-Quaternion שמייצג את הסבב.

rotateToLookAtUser

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

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

המשתמשים יכולים לשנות ישירות את המיקום והגודל של אובייקטים במרחב תלת-ממדי. אפשר להוסיף את התוספים האלה לרכיבים בודדים (כמו SpatialPanel), לתת-מרחבים ולרכיבי פריסה מרחבית (כמו SpatialRow או SpatialColumn).

העברת רכיבים

אם ה־movable modifier קיים ומופעל, יוצגו רכיבים אינטראקטיביים של ממשק משתמש שניתנים לגרירה, שיאפשרו למשתמש להזיז את הרכיב במרחב תלת-ממדי. ההתנהגות הספציפית של התנועה הזו מוגדרת על ידי movePolicy שסופק:

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

שינוי הגודל של אלמנטים

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

  • ResizePolicy.default(): המערכת מטפלת אוטומטית בתנועת שינוי הגודל ומחילת את המידות החדשות על התוכן.
  • ResizePolicy.custom(): המערכת מספקת SpatialResizeEvent ולא מחילה באופן אוטומטי את תוצאת שינוי הגודל על הרכיב המשויך.

שינוי המראה של הרכיבים הקומפוזביליים

alpha

המשנה alpha מגדיר את האטימות של הרכיב ושל רכיבי הצאצא שלו, כאשר 0f מייצג שקיפות מלאה ו-1.0f מייצג אטימות מלאה.

scale

המשנה scale משנה את קנה המידה של התוכן של הרכיב הניתן להרכבה לאורך הצירים האופקי, האנכי והעומק.

בדיקות ונגישות

semantics

העיבוד semantics מוסיף סמנטיקה לצומת הפריסה, לשימוש בבדיקות ובנגישות. מידע נוסף זמין במאמרים Semantics in Jetpack Compose ו-SemanticsModifier.

testTag

המשנה testTag הוא קיצור של SemanticsPropertyReceiver.testTag, שמאפשר למסגרות בדיקה למצוא את הרכיב בבדיקות.