XR_EXT_spatial_mesh_tracking
מחרוזת שם
XR_EXT_spatial_mesh_tracking
סוג התוסף
תוסף למכונה
מספר השלוחה הרשום
784
גרסה
1
סטטוס האישור
לא אושר
תלויות של תוספים וגרסאות
XR_EXT_spatial_entity
שותפים ביצירת התוכן
Nihav Jain, Google
Natalie Fleury, Meta
Yuichi Taguchi, Meta
Ron Bessems, Meta
Yin Li, Microsoft
Jimmy Alamparambil, ByteDance
Zhipeng Liu, ByteDance
Jun Yan, ByteDance
סקירה כללית
התוסף הזה מבוסס על XR_EXT_spatial_entity ומגדיר יכולות מרחביות למעקב אחרי רשת המשולשים של הסביבה. רשת המשולשים שנוצרת באמצעות היכולת שמוגדרת בתוסף הזה מיועדת לשימוש באפליקציות כדי לקבוע התנגשויות של התוכן הווירטואלי עם הסביבה.
יכולת מעקב אחר רשת מרחבית
התוסף הזה מגדיר את XR_SPATIAL_CAPABILITY_MESH_TRACKING_EXT כיכולת מרחבית למעקב אחרי רשת המשולשים של הסביבה. היכולת הזו לא כוללת מעקב אחרי רשת של ישויות כמו מישורים ואובייקטים. במקום זאת, צריך לציין את המעקב הזה באמצעות פירוט של הרכיב XR_SPATIAL_COMPONENT_TYPE_MESH_3D_EXT עבור היכולות המתאימות שעוקבות אחרי הישויות האלה.
האפליקציה משתמשת ב-XR_SPATIAL_CAPABILITY_MESH_TRACKING_EXT כדי לספק רשת אטומה ורשת לא אטומה, בהתאם ליכולות של סביבת זמן הריצה ולהגדרות שנבחרו באפליקציה.
רשת אטומה היא רשת שבה מולאו רווחים ואזורים שלא נסרקו בכל הגדלים, והיא יוצרת רשת הדוקה בתוך בלוק נפחי מסוים. כמו שהשם מרמז, אם אפליקציה ממלאת מים בתוך רשת אטומה למים, לא אמורים להיות מים שדולפים מהנפח האטום למים. כדי להפוך רשת סרוקה לאטומה, בדרך כלל נדרש כוח מחשוב גבוה מאוד, אבל חלק מסביבות זמן הריצה מקזזות את העלות הזו על ידי עיבוד הרשת מראש.
תמיכה בסביבת זמן הריצה
אם סביבת זמן הריצה תומכת במעקב אחר רשת המשולשים של הסביבה, היא חייבת לציין זאת על ידי ספירת XR_SPATIAL_CAPABILITY_MESH_TRACKING_EXT ב-xrEnumerateSpatialCapabilitiesEXT .
יש 3 יכולות אפשריות של סביבת זמן ריצה שתומכת ב-XR_SPATIAL_CAPABILITY_MESH_TRACKING_EXT:
- סביבת זמן הריצה תומכת רק במעקב אחר רשתות לא אטומות. במקרה כזה, סביבת זמן הריצה מונה את
XR_SPATIAL_CAPABILITY_MESH_TRACKING_EXTב-xrEnumerateSpatialCapabilitiesEXT אבל אסור לה למנות אתXR_SPATIAL_CAPABILITY_FEATURE_TRACK_WATERTIGHT_MESH_EXTב-xrEnumerateSpatialCapabilityFeaturesEXT (ראו מעקב אחרי רשת אטומה). - סביבת זמן הריצה תומכת במעקב אחרי רשתות אטומות ולא אטומות. במקרה כזה, סביבת זמן הריצה מונה את
XR_SPATIAL_CAPABILITY_MESH_TRACKING_EXTב-xrEnumerateSpatialCapabilitiesEXT וחייבת גם למנות אתXR_SPATIAL_CAPABILITY_FEATURE_TRACK_WATERTIGHT_MESH_EXTב-xrEnumerateSpatialCapabilityFeaturesEXT (ראו מעקב אחרי רשת אטומה) כדי לאפשר בקשות מעקב אחרי רשת אטומה מהאפליקציה. - סביבת זמן הריצה תומכת רק במעקב אחר רשת אטומה. במקרה כזה, זמן הריצה מונה את
XR_SPATIAL_CAPABILITY_MESH_TRACKING_EXTב-xrEnumerateSpatialCapabilitiesEXT וחייב גם למנות אתXR_SPATIAL_CAPABILITY_FEATURE_TRACK_WATERTIGHT_MESH_EXTב-xrEnumerateSpatialCapabilityFeaturesEXT (ראו מעקב אחרי רשת אטומה) כדי לציין לאפליקציה שהיא תומכת במעקב אחרי רשת אטומה. במקרה הספציפי הזה, זמן הריצה תמיד מחזיר רשת אטומה לאפליקציה, בלי קשר להגדרות שלXR_SPATIAL_CAPABILITY_FEATURE_TRACK_WATERTIGHT_MESH_EXT.
הגדרות אישיות
המבנה של XrSpatialCapabilityConfigurationMeshTrackingEXT מוגדר כך:
typedef struct XrSpatialCapabilityConfigurationMeshTrackingEXT {
XrStructureType type;
const void* next;
XrSpatialCapabilityEXT capability;
uint32_t enabledComponentCount;
const XrSpatialComponentTypeEXT* enabledComponents;
} XrSpatialCapabilityConfigurationMeshTrackingEXT;
תיאורי חברים
-
typeהוא ה-XrStructureType של המבנה הזה. -
nextהואNULLאו מצביע למבנה הבא בשרשרת מבנים. -
capabilityהוא XrSpatialCapabilityEXT וחייב להיותXR_SPATIAL_CAPABILITY_MESH_TRACKING_EXT. -
enabledComponentCountהואuint32_tשמתאר את מספר הרכיבים במערךenabledComponents. -
enabledComponentsהוא מצביע למערך של XrSpatialComponentTypeEXT .
אפליקציות יכולות להפעיל את היכולת המרחבית XR_SPATIAL_CAPABILITY_MESH_TRACKING_EXT על ידי הכללת מצביע למבנה XrSpatialCapabilityConfigurationMeshTrackingEXT ב-XrSpatialContextCreateInfoEXT :: capabilityConfigs .
זמן הריצה חייב להחזיר את הערך XR_ERROR_VALIDATION_FAILURE אם capability הוא לא XR_SPATIAL_CAPABILITY_MESH_TRACKING_EXT .
שימוש תקין (משתמע)
- חובה להפעיל את התוסף
XR_EXT_spatial_mesh_trackingלפני שמשתמשים ב-XrSpatialCapabilityConfigurationMeshTrackingEXT -
typeחייב להיותXR_TYPE_SPATIAL_CAPABILITY_CONFIGURATION_MESH_TRACKING_EXT -
nextחייב להיותNULLאו מצביע תקין למבנה הבא בשרשרת מבנים . מידע נוסף: XrSpatialFeatureTrackWatertightMeshEXT -
capabilityחייב להיות ערך XrSpatialCapabilityEXT תקין -
enabledComponentsחייב להיות מצביע למערך של ערכי XrSpatialComponentTypeEXT תקינים מסוגenabledComponentCount - הפרמטר
enabledComponentCountחייב להיות גדול מ-0
מעקב אחר רשת אטומה למים
המבנה של XrSpatialFeatureTrackWatertightMeshEXT מוגדר כך:
typedef struct XrSpatialFeatureTrackWatertightMeshEXT {
XrStructureType type;
const void* next;
XrBool32 enableWatertightMeshTracking;
} XrSpatialFeatureTrackWatertightMeshEXT;
תיאורי חברים
-
typeהוא ה-XrStructureType של המבנה הזה. -
nextהואNULLאו מצביע למבנה הבא בשרשרת מבנים. - השדה
enableWatertightMeshTrackingמציין אם סביבת זמן הריצה חייבת לחשב רשת אטומה לסביבה שנסרקה.
סביבות זמן ריצה שתומכות במעקב אחר רשת אטומה חייבות למנות את XR_SPATIAL_CAPABILITY_FEATURE_TRACK_WATERTIGHT_MESH_EXT ב-xrEnumerateSpatialCapabilityFeaturesEXT . התכונה XR_SPATIAL_CAPABILITY_FEATURE_TRACK_WATERTIGHT_MESH_EXT מאפשרת לאפליקציות להפעיל מעקב אחר רשת אטומה, ולהסכים באופן מפורש לכל חישוב נוסף שעלול להיגרם כתוצאה מיצירת הרשת האטומה .
אם XR_SPATIAL_CAPABILITY_FEATURE_TRACK_WATERTIGHT_MESH_EXT נספר על ידי xrEnumerateSpatialCapabilityFeaturesEXT עבור יכולת מסוימת, האפליקציה יכולה לשרשר את XrSpatialFeatureTrackWatertightMeshEXT למבנה ההגדרה המתאים של אותה יכולת כדי לציין אם היא רוצה שהרשת הנעקבת תהיה אטומה למים או לא. אם האפליקציה מגדירה את enableWatertightMeshTracking כ-XR_TRUE , זמן הריצה חייב לחשב ולספק לאפליקציה רשת אטומה של הסביבה. אם האפליקציה מגדירה את enableWatertightMeshTracking ל-XR_FALSE , יכול להיות שהרשת המנוטרת עדיין תהיה אטומה אם זמן הריצה תומך רק במעקב אחר רשת אטומה, למשל במקרים שבהם זמן הריצה מספק רשת מעובדת מסביבה שנסרקה מראש.
שימוש תקין (משתמע)
- חובה להפעיל את התוסף
XR_EXT_spatial_mesh_trackingלפני שמשתמשים ב-XrSpatialFeatureTrackWatertightMeshEXT -
typeחייב להיותXR_TYPE_SPATIAL_FEATURE_TRACK_WATERTIGHT_MESH_EXT -
nextחייב להיותNULLאו מצביע תקין למבנה הבא בשרשרת מבנים
תהליך הגשת הבקשה
הדיאגרמה הבאה מראה איך אפליקציה יכולה להגדיר את ההקשר המרחבי אם היא רוצה לעקוב אחרי רשת אטומה של הסביבה.
כן
כן
האפליקציה צריכה
רשת אטומה למים
האפליקציה צריכה...
כן
כן
לא
לא
סביבת זמן הריצה
תומכת ביכולת
"מעקב אחר רשת"
זמן ריצה...
כן
כן
לא
לא
זמן הריצה
תומך בתכונה
"מעקב אחר רשת אטומה"
זמן ריצה...
האפליקציה יוצרת הקשר מרחבי באמצעות "יכולת מעקב אחר רשת" וגם התכונה "מעקב אחר רשת אטומה"
האפליקציה יוצרת...
האפליקציה מטפלת במצב שבו אין תמיכה בתכונה בסביבת זמן הריצה הנוכחית
האפליקציה מטפלת במחסור ב...
האפליקציה מעבדת את הרשת שנוצרה כדי ליצור רשת אטומה, אולי בעזרת המשתמש שסוגר את החורים ברשת
האפליקציה מעבדת את ה... הטקסט הוא לא SVG – אי אפשר להציג אותו
איור 29. תהליך הבקשה של האפליקציה ליצירת רשת אטומה
רכיבים מובטחים
סביבת זמן ריצה שתומכת ב-XR_SPATIAL_CAPABILITY_MESH_TRACKING_EXT חייבת לספק את הרכיבים המרחביים הבאים כרכיבים מובטחים של כל הישויות שזוהו על ידי היכולת הזו, וחייבת למנות אותם ב-xrEnumerateSpatialCapabilityComponentTypesEXT :
XR_SPATIAL_COMPONENT_TYPE_BOUNDED_3D_EXTXR_SPATIAL_COMPONENT_TYPE_MESH_3D_EXT
רכיב תלת-ממדי מוגבל
הרכיב התלת-ממדי המוגבל מספק את המרכז וההיקף של הישות שהוא נמצא בה. הנתונים שהרכיב הזה מספק מאפשרים לאפליקציות להסיר בקלות את הישויות שנמצאות מחוץ ל-view frustum (החלק הנראה של המרחב הווירטואלי).
פרטים נוספים זמינים במאמר תלת-ממד מוגבל.
רכיב רשת תלת-ממדית
רכיב הרשת התלת-ממדית מספק את הרשת התלת-ממדית של הישות שהוא נמצא בה. פרטים נוספים זמינים במאמר Mesh 3D.
פילוח נפחי (חלוקה לחלקים)
יכול להיות שסביבת זמן הריצה תחלק את הרשת הגיאומטרית לבלוקים נפחיים (נתחים) כדי להקל על האפליקציות להסיר את הבלוקים של הרשת הגיאומטרית שנמצאים מחוץ לתיבת התצוגה שלה. במקרה כזה, זמן הריצה חייב להתייחס לכל בלוק נפחי כזה כישות נפרדת, וקבוצת הרכיבים המובטחים צריכה להיות בכל ישות כזו (בלוק נפחי). אם סביבת זמן הריצה מספקת רשת אטומה למים באופן הזה, כל בלוק נפחי בנפרד לא אטום למים, אבל קבוצה של בלוקים יחד יוצרת רשת אטומה למים. בתרחיש כזה, זמן הריצה חייב להוסיף את הרכיב XR_SPATIAL_COMPONENT_TYPE_PARENT_EXT לכל ישות (בלוק נפחי), והערך של ישות האם בכל הבלוקים שיוצרים יחד רשת אטומה חייב להיות זהה. כך האפליקציה יכולה לזהות אילו חלקים יוצרים יחד רשת אטומה.
רשתות של בלוקים נפחיים סמוכים יכולות לחלוק קודקודים, אבל המשולשים של בלוק נפחי אחד לא יכולים לחפוף למשולשים של הנפח הסמוך.
רכיבים אופציונליים
Mesh Normals
נתוני רכיבים
XR_SPATIAL_COMPONENT_TYPE_MESH_3D_NORMALS_EXT משתמש ב-XrSpatialBufferEXT לנתונים שלו. XrSpatialBufferEXT :: bufferId מייצג את המאגר שמכיל את הנורמלים של הקודקודים של הרשת של הישות שהרכיב הזה נמצא בה. הערך של XrSpatialBufferEXT :: bufferType חייב להיות XR_SPATIAL_BUFFER_TYPE_VECTOR3F_EXT . ישות שיש לה XR_SPATIAL_COMPONENT_TYPE_MESH_3D_NORMALS_EXT חייבת לכלול גם את XR_SPATIAL_COMPONENT_TYPE_MESH_3D_EXT. הנורמלים שסופקו על ידי הרכיב הזה חייבים להתאים לקודקודים שסופקו ב-XrSpatialMeshDataEXT :: vertexBuffer של הרכיב XR_SPATIAL_COMPONENT_TYPE_MESH_3D_EXT.
מבנה רשימת הרכיבים לשליפת נתונים
המבנה של XrSpatialComponentMesh3DNormalsListEXT מוגדר כך:
typedef struct XrSpatialComponentMesh3DNormalsListEXT {
XrStructureType type;
void* next;
uint32_t meshNormalsCount;
XrSpatialBufferEXT* meshNormals;
} XrSpatialComponentMesh3DNormalsListEXT;
תיאורי חברים
-
typeהוא ה-XrStructureType של המבנה הזה. -
nextהואNULLאו מצביע למבנה הבא בשרשרת מבנים. מבנים כאלה לא מוגדרים ב-OpenXR או בתוסף הזה. -
meshNormalsCountהואuint32_tשמתאר את מספר הרכיבים במערךmeshNormals. -
meshNormalsהוא מערך של XrVector3f .
סביבת זמן הריצה חייבת להחזיר את הערך XR_ERROR_VALIDATION_FAILURE מ-xrQuerySpatialComponentDataEXT אם XrSpatialComponentMesh3DNormalsListEXT נמצא בשרשרת הבאה של XrSpatialComponentDataQueryResultEXT :: next אבל XrSpatialComponentDataQueryConditionEXT :: componentTypeCount הוא לא אפס ו-XR_SPATIAL_COMPONENT_TYPE_MESH_3D_NORMALS_EXT לא נכלל ב-XrSpatialComponentDataQueryConditionEXT :: componentTypes .
זמן הריצה חייב להחזיר את הערך XR_ERROR_SIZE_INSUFFICIENT מ-xrQuerySpatialComponentDataEXT אם meshNormalsCount קטן מ-XrSpatialComponentDataQueryResultEXT :: entityIdCountOutput .
שימוש תקין (משתמע)
- חובה להפעיל את התוסף
XR_EXT_spatial_mesh_trackingלפני שמשתמשים ב-XrSpatialComponentMesh3DNormalsListEXT -
typeחייב להיותXR_TYPE_SPATIAL_COMPONENT_MESH_3D_NORMALS_LIST_EXT -
nextחייב להיותNULLאו מצביע תקין למבנה הבא בשרשרת מבנים -
meshNormalsחייב להיות מצביע למערך של מבניmeshNormalsCountXrSpatialBufferEXT - הפרמטר
meshNormalsCountחייב להיות גדול מ-0
הגדרות אישיות
אם XR_SPATIAL_COMPONENT_TYPE_MESH_3D_NORMALS_EXT מופיע ב-XrSpatialCapabilityComponentTypesEXT :: componentTypes עבור יכולת מסוימת, האפליקציה יכולה להפעיל אותה על ידי הכללת ה-enum ברשימה XrSpatialCapabilityConfigurationBaseHeaderEXT :: enabledComponents. הרכיב הזה לא דורש הגדרה מיוחדת כדי להיכלל בשרשרת הבאה של XrSpatialCapabilityConfigurationBaseHeaderEXT . עם זאת, מומלץ להשתמש ברכיב הזה ובנתונים שלו בשילוב עם הרכיב XR_SPATIAL_COMPONENT_TYPE_MESH_3D_EXT.
תוויות סמנטיות של רשת
typedef enum XrSpatialMeshSemanticLabelEXT {
XR_SPATIAL_MESH_SEMANTIC_LABEL_UNCATEGORIZED_EXT = 1,
XR_SPATIAL_MESH_SEMANTIC_LABEL_FLOOR_EXT = 2,
XR_SPATIAL_MESH_SEMANTIC_LABEL_WALL_EXT = 3,
XR_SPATIAL_MESH_SEMANTIC_LABEL_CEILING_EXT = 4,
XR_SPATIAL_MESH_SEMANTIC_LABEL_TABLE_EXT = 5,
XR_SPATIAL_MESH_SEMANTIC_LABEL_CHAIR_EXT = 6,
XR_SPATIAL_MESH_SEMANTIC_LABEL_SOFA_EXT = 7,
XR_SPATIAL_MESH_SEMANTIC_LABEL_BED_EXT = 8,
XR_SPATIAL_MESH_SEMANTIC_LABEL_MAX_ENUM_EXT = 0x7FFFFFFF
} XrSpatialMeshSemanticLabelEXT;
הספירה XrSpatialMeshSemanticLabelEXT מתארת קבוצה של תוויות סמנטיות לרשת. רכיבים מרחביים שונים משתמשים בזה כדי לתת משמעות לערכי uint8_t מ-XrSpatialBufferEXT לתוויות סמנטיות לכל קודקוד או לכל משולש. אפשר לעיין בקטעים תוויות סמנטיות של קודקודי רשת ותוויות סמנטיות של משולשי רשת
תוספים שרוצים להרחיב את קבוצת התוויות הסמנטיות הזו או להוסיף קבוצה חדשה משלהם לרשתות, צריכים לפעול לפי ההנחיות שמפורטות בהנחיות לעיצוב ולהרחבה של תוויות סמנטיות .
תיאור הטיפוס בן המנייה (enum)
XR_SPATIAL_MESH_SEMANTIC_LABEL_UNCATEGORIZED_EXT
זמן הריצה לא הצליח לסווג את הקודקוד או המשולש.
XR_SPATIAL_MESH_SEMANTIC_LABEL_FLOOR_EXT
הקודקוד או המשולש ממופים לקומה.
XR_SPATIAL_MESH_SEMANTIC_LABEL_WALL_EXT
הקודקוד או המשולש ממופים לקיר.
XR_SPATIAL_MESH_SEMANTIC_LABEL_CEILING_EXT
הקודקוד או המשולש ממופים לתקרה.
XR_SPATIAL_MESH_SEMANTIC_LABEL_TABLE_EXT
הקודקוד או המשולש ממופים לטבלה.
XR_SPATIAL_MESH_SEMANTIC_LABEL_CHAIR_EXT
הקודקוד או המשולש ממופים לכיסא.
XR_SPATIAL_MESH_SEMANTIC_LABEL_SOFA_EXT
הקודקוד או המשולש ממופים לספה.
XR_SPATIAL_MESH_SEMANTIC_LABEL_BED_EXT
הקודקוד או המשולש ממופים לערוגה.
תוויות סמנטיות של קודקודי רשת
סקירה כללית של הרכיבים
XR_SPATIAL_COMPONENT_TYPE_MESH_3D_VERTEX_SEMANTIC_LABELS_EXT מספק תווית סמנטית אחת לכל קודקוד של הרשת של ישות מרחבית.
נתוני רכיבים
XR_SPATIAL_COMPONENT_TYPE_MESH_3D_VERTEX_SEMANTIC_LABELS_EXT משתמש ב-XrSpatialBufferEXT לנתונים שלו. XrSpatialBufferEXT :: bufferId מייצג את המאגר שמכיל את התוויות הסמנטיות של הקודקודים של רשת האובייקטים של הישות שהרכיב הזה נמצא בה. הערך של XrSpatialBufferEXT :: bufferType חייב להיות XR_SPATIAL_BUFFER_TYPE_UINT8_EXT . הערכים במאגר הנתונים הזמני תואמים לערכים של הספירה XrSpatialMeshSemanticLabelEXT. ישות שיש לה XR_SPATIAL_COMPONENT_TYPE_MESH_3D_VERTEX_SEMANTIC_LABELS_EXT חייבת לכלול גם את הרכיב XR_SPATIAL_COMPONENT_TYPE_MESH_3D_EXT. התוויות הסמנטיות שסופקו על ידי הרכיב הזה חייבות להתאים לקודקודים שסופקו ב-XrSpatialMeshDataEXT :: vertexBuffer של הרכיב XR_SPATIAL_COMPONENT_TYPE_MESH_3D_EXT. זה אומר שהתווית הסמנטית באינדקס נתון של נתוני המאגר המרחבי שסופקו על ידי הרכיב הזה תואמת לקודקוד באותו אינדקס שסופק על ידי XrSpatialMeshDataEXT :: vertexBuffer . זה גם אומר שהערך של xrGetSpatialBufferUint8EXT :: bufferCountOutput חייב להיות זהה לערך של המאגר הזמני של התוויות הסמנטיות של הוורטקסים ושל XrSpatialMeshDataEXT :: vertexBuffer .
מבנה רשימת הרכיבים לשליפת נתונים
המבנה של XrSpatialComponentMesh3DVertexSemanticLabelsListEXT מוגדר כך:
typedef struct XrSpatialComponentMesh3DVertexSemanticLabelsListEXT {
XrStructureType type;
void* next;
uint32_t meshSemanticLabelsCount;
XrSpatialBufferEXT* meshSemanticLabels;
} XrSpatialComponentMesh3DVertexSemanticLabelsListEXT;
תיאורי חברים
-
typeהוא ה-XrStructureType של המבנה הזה. -
nextהואNULLאו מצביע למבנה הבא בשרשרת מבנים. מבנים כאלה לא מוגדרים ב-OpenXR או בתוסף הזה. -
meshSemanticLabelsCountהואuint32_tשמתאר את מספר הרכיבים במערךmeshSemanticLabels. -
meshSemanticLabelsהוא מערך של XrSpatialBufferEXT .
זמן הריצה חייב להחזיר את הערך XR_ERROR_VALIDATION_FAILURE מ-xrQuerySpatialComponentDataEXT אם XrSpatialComponentMesh3DVertexSemanticLabelsListEXT נמצא בשרשרת הבאה של XrSpatialComponentDataQueryResultEXT :: next אבל XrSpatialComponentDataQueryConditionEXT :: componentTypeCount הוא לא אפס ו-XR_SPATIAL_COMPONENT_TYPE_MESH_3D_VERTEX_SEMANTIC_LABELS_EXT לא כלול ב-XrSpatialComponentDataQueryConditionEXT :: componentTypes .
זמן הריצה חייב להחזיר את הערך XR_ERROR_SIZE_INSUFFICIENT מ-xrQuerySpatialComponentDataEXT אם meshSemanticLabelsCount קטן מ-XrSpatialComponentDataQueryResultEXT :: entityIdCountOutput .
שימוש תקין (משתמע)
- חובה להפעיל את התוסף
XR_EXT_spatial_mesh_trackingלפני שמשתמשים ב-XrSpatialComponentMesh3DVertexSemanticLabelsListEXT -
typeחייב להיותXR_TYPE_SPATIAL_COMPONENT_MESH_3D_VERTEX_SEMANTIC_LABELS_LIST_EXT -
nextחייב להיותNULLאו מצביע תקין למבנה הבא בשרשרת מבנים -
meshSemanticLabelsחייב להיות מצביע למערך של מבניmeshSemanticLabelsCountXrSpatialBufferEXT - הפרמטר
meshSemanticLabelsCountחייב להיות גדול מ-0
הגדרות אישיות
אם XR_SPATIAL_COMPONENT_TYPE_MESH_3D_VERTEX_SEMANTIC_LABELS_EXT מופיע ב-XrSpatialCapabilityComponentTypesEXT :: componentTypes עבור יכולת מסוימת, האפליקציה יכולה להפעיל אותה על ידי הכללת ה-enum ברשימה XrSpatialCapabilityConfigurationBaseHeaderEXT :: enabledComponents. הרכיב הזה לא דורש הגדרה מיוחדת כדי להיכלל בשרשרת הבאה של XrSpatialCapabilityConfigurationBaseHeaderEXT . עם זאת, מומלץ להשתמש ברכיב הזה ובנתונים שלו בשילוב עם הרכיב XR_SPATIAL_COMPONENT_TYPE_MESH_3D_EXT. אי אפשר להפעיל את הרכיב הזה יחד עם XR_SPATIAL_COMPONENT_TYPE_MESH_3D_TRIANGLE_SEMANTIC_LABELS_EXT . אם אפליקציה מוסיפה גם את XR_SPATIAL_COMPONENT_TYPE_MESH_3D_VERTEX_SEMANTIC_LABELS_EXT וגם את XR_SPATIAL_COMPONENT_TYPE_MESH_3D_TRIANGLE_SEMANTIC_LABELS_EXT ל-XrSpatialCapabilityConfigurationBaseHeaderEXT :: enabledComponents , זמן הריצה חייב להחזיר את XR_ERROR_SPATIAL_CAPABILITY_CONFIGURATION_INVALID_EXT . בנוסף, סביבת זמן הריצה חייבת להחזיר את הערך XR_ERROR_SPATIAL_CAPABILITY_CONFIGURATION_INVALID_EXT אם האפליקציה מנסה להפעיל את שני הרכיבים ב-XrSpatialContextEXT נפרדים.
תוויות סמנטיות של משולשי רשת
סקירה כללית של הרכיבים
XR_SPATIAL_COMPONENT_TYPE_MESH_3D_TRIANGLE_SEMANTIC_LABELS_EXT מספק תווית סמנטית אחת לכל משולש ברשת של ישות מרחבית.
נתוני רכיבים
XR_SPATIAL_COMPONENT_TYPE_MESH_3D_TRIANGLE_SEMANTIC_LABELS_EXT משתמש ב-XrSpatialBufferEXT לנתונים שלו. XrSpatialBufferEXT :: bufferId מייצג את המאגר שמכיל את התוויות הסמנטיות של המשולשים ברשת התלת-ממדית של הישות שהרכיב הזה נמצא בה. הערך של XrSpatialBufferEXT :: bufferType חייב להיות XR_SPATIAL_BUFFER_TYPE_UINT8_EXT . הערכים במאגר הנתונים הזמני תואמים לערכים של הספירה XrSpatialMeshSemanticLabelEXT. ישות שיש לה XR_SPATIAL_COMPONENT_TYPE_MESH_3D_TRIANGLE_SEMANTIC_LABELS_EXT חייבת לכלול גם את הרכיב XR_SPATIAL_COMPONENT_TYPE_MESH_3D_EXT. התוויות הסמנטיות שהרכיב הזה מספק חייבות להתאים למשולשים שסופקו ב-XrSpatialMeshDataEXT של הרכיב XR_SPATIAL_COMPONENT_TYPE_MESH_3D_EXT. מספר הרכיבים במאגר הנתונים המרחבי שמכיל את התוויות הסמנטיות של המשולשים הוא מספר הרכיבים של XrSpatialMeshDataEXT :: indexBuffer חלקי 3. כלומר, התווית הסמנטית באינדקס נתון של נתוני המאגר המרחבי שסופקו על ידי הרכיב הזה תואמת למשולש שמיוצג על ידי [index * 3], [index * 3 + 1], [index * 3 + 2] ב-XrSpatialMeshDataEXT :: indexBuffer .
מבנה רשימת הרכיבים לשליפת נתונים
המבנה של XrSpatialComponentMesh3DTriangleSemanticLabelsListEXT מוגדר כך:
typedef struct XrSpatialComponentMesh3DTriangleSemanticLabelsListEXT {
XrStructureType type;
void* next;
uint32_t meshSemanticLabelsCount;
XrSpatialBufferEXT* meshSemanticLabels;
} XrSpatialComponentMesh3DTriangleSemanticLabelsListEXT;
תיאורי חברים
-
typeהוא ה-XrStructureType של המבנה הזה. -
nextהואNULLאו מצביע למבנה הבא בשרשרת מבנים. מבנים כאלה לא מוגדרים ב-OpenXR או בתוסף הזה. -
meshSemanticLabelsCountהואuint32_tשמתאר את מספר הרכיבים במערךmeshSemanticLabels. -
meshSemanticLabelsהוא מערך של XrSpatialBufferEXT .
זמן הריצה חייב להחזיר את הערך XR_ERROR_VALIDATION_FAILURE מ-xrQuerySpatialComponentDataEXT אם XrSpatialComponentMesh3DTriangleSemanticLabelsListEXT נמצא בשרשרת הבאה של XrSpatialComponentDataQueryResultEXT :: next אבל XrSpatialComponentDataQueryConditionEXT :: componentTypeCount הוא לא אפס ו-XR_SPATIAL_COMPONENT_TYPE_MESH_3D_TRIANGLE_SEMANTIC_LABELS_EXT לא כלול ב-XrSpatialComponentDataQueryConditionEXT :: componentTypes .
זמן הריצה חייב להחזיר את הערך XR_ERROR_SIZE_INSUFFICIENT מ-xrQuerySpatialComponentDataEXT אם meshSemanticLabelsCount קטן מ-XrSpatialComponentDataQueryResultEXT :: entityIdCountOutput .
שימוש תקין (משתמע)
- חובה להפעיל את התוסף
XR_EXT_spatial_mesh_trackingלפני שמשתמשים ב-XrSpatialComponentMesh3DTriangleSemanticLabelsListEXT -
typeחייב להיותXR_TYPE_SPATIAL_COMPONENT_MESH_3D_TRIANGLE_SEMANTIC_LABELS_LIST_EXT -
nextחייב להיותNULLאו מצביע תקין למבנה הבא בשרשרת מבנים -
meshSemanticLabelsחייב להיות מצביע למערך של מבניmeshSemanticLabelsCountXrSpatialBufferEXT - הפרמטר
meshSemanticLabelsCountחייב להיות גדול מ-0
הגדרות אישיות
אם XR_SPATIAL_COMPONENT_TYPE_MESH_3D_TRIANGLE_SEMANTIC_LABELS_EXT מופיע ב-XrSpatialCapabilityComponentTypesEXT :: componentTypes עבור יכולת מסוימת, האפליקציה יכולה להפעיל אותה על ידי הכללת ה-enum ברשימה XrSpatialCapabilityConfigurationBaseHeaderEXT :: enabledComponents. הרכיב הזה לא דורש הגדרה מיוחדת כדי להיכלל בשרשרת הבאה של XrSpatialCapabilityConfigurationBaseHeaderEXT . עם זאת, מומלץ להשתמש ברכיב הזה ובנתונים שלו בשילוב עם הרכיב XR_SPATIAL_COMPONENT_TYPE_MESH_3D_EXT. אי אפשר להפעיל את הרכיב הזה יחד עם XR_SPATIAL_COMPONENT_TYPE_MESH_3D_VERTEX_SEMANTIC_LABELS_EXT . אם אפליקציה מוסיפה גם את XR_SPATIAL_COMPONENT_TYPE_MESH_3D_VERTEX_SEMANTIC_LABELS_EXT וגם את XR_SPATIAL_COMPONENT_TYPE_MESH_3D_TRIANGLE_SEMANTIC_LABELS_EXT ל-XrSpatialCapabilityConfigurationBaseHeaderEXT :: enabledComponents , זמן הריצה חייב להחזיר את XR_ERROR_SPATIAL_CAPABILITY_CONFIGURATION_INVALID_EXT . בנוסף, סביבת זמן הריצה חייבת להחזיר את הערך XR_ERROR_SPATIAL_CAPABILITY_CONFIGURATION_INVALID_EXT אם האפליקציה מנסה להפעיל את שני הרכיבים ב-XrSpatialContextEXT נפרדים.
מבנים חדשים
ערכי Enums חדשים
קבועי Enum חדשים
XR_EXT_SPATIAL_MESH_TRACKING_EXTENSION_NAMEXR_EXT_spatial_mesh_tracking_SPEC_VERSIONהרחבה של XrSpatialCapabilityEXT :
XR_SPATIAL_CAPABILITY_MESH_TRACKING_EXT
הרחבה של XrSpatialCapabilityFeatureEXT :
XR_SPATIAL_CAPABILITY_FEATURE_TRACK_WATERTIGHT_MESH_EXT
הרחבה של XrSpatialComponentTypeEXT :
XR_SPATIAL_COMPONENT_TYPE_MESH_3D_NORMALS_EXTXR_SPATIAL_COMPONENT_TYPE_MESH_3D_TRIANGLE_SEMANTIC_LABELS_EXTXR_SPATIAL_COMPONENT_TYPE_MESH_3D_VERTEX_SEMANTIC_LABELS_EXT
הרחבה של XrStructureType :
XR_TYPE_SPATIAL_CAPABILITY_CONFIGURATION_MESH_TRACKING_EXTXR_TYPE_SPATIAL_COMPONENT_MESH_3D_NORMALS_LIST_EXTXR_TYPE_SPATIAL_COMPONENT_MESH_3D_TRIANGLE_SEMANTIC_LABELS_LIST_EXTXR_TYPE_SPATIAL_COMPONENT_MESH_3D_VERTEX_SEMANTIC_LABELS_LIST_EXTXR_TYPE_SPATIAL_FEATURE_TRACK_WATERTIGHT_MESH_EXT
בעיות
היסטוריית הגרסאות
גרסה 1, 2025-11-02 (Nihav Jain, Google)
- תיאור התוסף הראשוני