XR_EXT_spatial_mesh_tracking
Name String
XR_EXT_spatial_mesh_tracking
Typ rozszerzenia
Rozszerzenie instancji
Zarejestrowany numer wewnętrzny
784
Wersja
1
Stan ratyfikacji
Nie ratyfikowano
Zależności rozszerzeń i wersji
XR_EXT_spatial_entity
Twórcy
Nihav Jain, Google
Natalie Fleury, Meta
Yuichi Taguchi, Meta
Ron Bessems, Meta
Yin Li, Microsoft
Jimmy Alamparambil, ByteDance
Zhipeng Liu, ByteDance
Jun Yan, ByteDance
Przegląd
To rozszerzenie bazuje na XR_EXT_spatial_entity i definiuje możliwości przestrzenne śledzenia siatki trójkątów otoczenia. Siatka trójkątów dostarczana przez funkcję zdefiniowaną w tym rozszerzeniu jest przeznaczona do użycia przez aplikacje do określania kolizji treści wirtualnych z otoczeniem.
Możliwość śledzenia siatki przestrzennej
To rozszerzenie definiuje XR_SPATIAL_CAPABILITY_MESH_TRACKING_EXT jako funkcję przestrzenną do śledzenia siatki trójkątów otoczenia. Śledzenie siatki elementów takich jak płaszczyzny i obiekty nie jest objęte tą funkcją i musi być wskazywane przez wyliczenie komponentu XR_SPATIAL_COMPONENT_TYPE_MESH_3D_EXT dla odpowiednich funkcji, które śledzą te elementy.
XR_SPATIAL_CAPABILITY_MESH_TRACKING_EXT służy do dostarczania aplikacji zarówno wodoszczelnej, jak i niewodoszczelnej siatki, w zależności od możliwości środowiska wykonawczego i konfiguracji wybranej przez aplikację.
Siatka wodoszczelna to siatka, w której luki i niezeskanowane obszary o dowolnym rozmiarze zostały wypełnione, tworząc szczelną siatkę w obrębie określonego bloku wolumetrycznego. Jak sugeruje nazwa, jeśli aplikacja wypełnia wodą wodoszczelną siatkę, woda nie powinna wyciekać z wodoszczelnej objętości. Zapewnienie szczelności zeskanowanej siatki często wymaga bardzo dużej mocy obliczeniowej, ale niektóre środowiska wykonawcze kompensują ten koszt, przetwarzając siatkę wcześniej.
Obsługa środowiska wykonawczego
Jeśli środowisko wykonawcze obsługuje śledzenie siatki trójkątów otoczenia, musi to wskazać, wyliczając XR_SPATIAL_CAPABILITY_MESH_TRACKING_EXT w xrEnumerateSpatialCapabilitiesEXT .
Środowisko wykonawcze obsługujące XR_SPATIAL_CAPABILITY_MESH_TRACKING_EXT może mieć 3 możliwości:
- Środowisko wykonawcze obsługuje tylko śledzenie siatki, która nie jest wodoszczelna. W takim przypadku środowisko wykonawcze wylicza
XR_SPATIAL_CAPABILITY_MESH_TRACKING_EXTw xrEnumerateSpatialCapabilitiesEXT, ale nie może wyliczaćXR_SPATIAL_CAPABILITY_FEATURE_TRACK_WATERTIGHT_MESH_EXTw xrEnumerateSpatialCapabilityFeaturesEXT (patrz Śledzenie siatki wodoszczelnej). - Środowisko wykonawcze obsługuje śledzenie siatki zarówno w przypadku siatek zamkniętych, jak i niezamkniętych. W takim przypadku środowisko wykonawcze wylicza
XR_SPATIAL_CAPABILITY_MESH_TRACKING_EXTw xrEnumerateSpatialCapabilitiesEXT i musi też wyliczyćXR_SPATIAL_CAPABILITY_FEATURE_TRACK_WATERTIGHT_MESH_EXTw xrEnumerateSpatialCapabilityFeaturesEXT (patrz Śledzenie siatki wodoszczelnej), aby umożliwić żądania śledzenia siatki wodoszczelnej z aplikacji. - Środowisko wykonawcze obsługuje tylko śledzenie siatki wodoszczelnej. W takim przypadku środowisko wykonawcze wylicza
XR_SPATIAL_CAPABILITY_MESH_TRACKING_EXTw xrEnumerateSpatialCapabilitiesEXT i musi też wyliczyćXR_SPATIAL_CAPABILITY_FEATURE_TRACK_WATERTIGHT_MESH_EXTw xrEnumerateSpatialCapabilityFeaturesEXT (patrz Śledzenie siatki wodoszczelnej), aby wskazać aplikacji, że obsługuje śledzenie siatki wodoszczelnej. W tym konkretnym przypadku środowisko wykonawcze zawsze zwraca do aplikacji siatkę wodoszczelną, niezależnie od konfiguracjiXR_SPATIAL_CAPABILITY_FEATURE_TRACK_WATERTIGHT_MESH_EXT.
Konfiguracja
Struktura XrSpatialCapabilityConfigurationMeshTrackingEXT jest zdefiniowana w ten sposób:
typedef struct XrSpatialCapabilityConfigurationMeshTrackingEXT {
XrStructureType type;
const void* next;
XrSpatialCapabilityEXT capability;
uint32_t enabledComponentCount;
const XrSpatialComponentTypeEXT* enabledComponents;
} XrSpatialCapabilityConfigurationMeshTrackingEXT;
Opisy członków
typeto XrStructureType tej struktury.nexttoNULLlub wskaźnik do następnej struktury w łańcuchu struktur.capabilityto XrSpatialCapabilityEXT i musi mieć wartośćXR_SPATIAL_CAPABILITY_MESH_TRACKING_EXT.enabledComponentCounttouint32_topisujący liczbę elementów w tablicyenabledComponents.enabledComponentsto wskaźnik do tablicy XrSpatialComponentTypeEXT .
Aplikacje mogą włączyć funkcję przestrzenną XR_SPATIAL_CAPABILITY_MESH_TRACKING_EXT, dodając wskaźnik do struktury XrSpatialCapabilityConfigurationMeshTrackingEXT w XrSpatialContextCreateInfoEXT :: capabilityConfigs .
Środowisko wykonawcze musi zwrócić XR_ERROR_VALIDATION_FAILURE, jeśli capability nie jest XR_SPATIAL_CAPABILITY_MESH_TRACKING_EXT .
Prawidłowe użycie (pośrednie)
- Rozszerzenie
XR_EXT_spatial_mesh_trackingmusi być włączone przed użyciem XrSpatialCapabilityConfigurationMeshTrackingEXT. -
typemusi mieć wartośćXR_TYPE_SPATIAL_CAPABILITY_CONFIGURATION_MESH_TRACKING_EXT -
nextmusi mieć wartośćNULLlub być prawidłowym wskaźnikiem do następnej struktury w łańcuchu struktur . Zobacz też: XrSpatialFeatureTrackWatertightMeshEXT -
capabilitymusi być prawidłową wartością XrSpatialCapabilityEXT -
enabledComponentsmusi być wskaźnikiem do tablicy zenabledComponentCountprawidłowymi wartościami XrSpatialComponentTypeEXT - Parametr
enabledComponentCountmusi być większy niż0
Śledzenie siatki wodoszczelnej
Struktura XrSpatialFeatureTrackWatertightMeshEXT jest zdefiniowana w ten sposób:
typedef struct XrSpatialFeatureTrackWatertightMeshEXT {
XrStructureType type;
const void* next;
XrBool32 enableWatertightMeshTracking;
} XrSpatialFeatureTrackWatertightMeshEXT;
Opisy członków
typeto XrStructureType tej struktury.nexttoNULLlub wskaźnik do następnej struktury w łańcuchu struktur.enableWatertightMeshTrackingwskazuje, czy środowisko wykonawcze musi obliczyć wodoszczelną siatkę dla zeskanowanego środowiska.
Środowiska wykonawcze, które obsługują śledzenie siatki wodoszczelnej, muszą wyliczać XR_SPATIAL_CAPABILITY_FEATURE_TRACK_WATERTIGHT_MESH_EXT w xrEnumerateSpatialCapabilityFeaturesEXT . Funkcja XR_SPATIAL_CAPABILITY_FEATURE_TRACK_WATERTIGHT_MESH_EXT umożliwia aplikacjom opcjonalne włączenie śledzenia siatki wodoszczelnej i wyraźne wyrażenie zgody na dodatkowe obliczenia, które mogą być wymagane do wygenerowania siatki wodoszczelnej.
Jeśli XR_SPATIAL_CAPABILITY_FEATURE_TRACK_WATERTIGHT_MESH_EXT jest wyliczany przez xrEnumerateSpatialCapabilityFeaturesEXT dla określonej funkcji, aplikacja może połączyć XrSpatialFeatureTrackWatertightMeshEXT z odpowiednią strukturą konfiguracji tej funkcji, aby wskazać, czy śledzona siatka ma być wodoszczelna. Jeśli aplikacja ustawia enableWatertightMeshTracking na XR_TRUE , środowisko wykonawcze musi obliczyć i udostępnić aplikacji wodoszczelną siatkę środowiska. Jeśli aplikacja ustawia enableWatertightMeshTracking na XR_FALSE, śledzona siatka może nadal być wodoszczelna, jeśli środowisko wykonawcze obsługuje tylko śledzenie siatki wodoszczelnej, np. w przypadkach, gdy środowisko wykonawcze udostępnia przetworzoną siatkę ze wstępnie zeskanowanego środowiska.
Prawidłowe użycie (pośrednie)
- Rozszerzenie
XR_EXT_spatial_mesh_trackingmusi być włączone przed użyciem XrSpatialFeatureTrackWatertightMeshEXT. -
typemusi mieć wartośćXR_TYPE_SPATIAL_FEATURE_TRACK_WATERTIGHT_MESH_EXT -
nextmusi mieć wartośćNULLlub być prawidłowym wskaźnikiem do następnej struktury w łańcuchu struktur
Proces składania wniosku
Poniższy diagram pokazuje, jak aplikacja może skonfigurować kontekst przestrzenny, jeśli chce śledzić wodoszczelną siatkę środowiska.
Tak
Tak
Aplikacja wymaga
wodoodpornej siatki
Aplikacja potrzebuje…
Tak
Tak
Nie
Nie
Środowisko wykonawcze
obsługuje funkcję „śledzenia siatki”
Środowisko wykonawcze…
Tak
Tak
Nie
Nie
Środowisko wykonawcze
obsługuje funkcję „śledzenia wodoszczelnej siatki”
Środowisko wykonawcze…
Aplikacja tworzy kontekst przestrzenny za pomocą funkcji „mesh tracking capability” (funkcja śledzenia siatki) ORAZ „track watertight mesh” (śledzenie siatki wodoszczelnej)
Aplikacja tworzy dźwięk przestrzenny…
Aplikacja obsługuje brak obsługi funkcji w bieżącym środowisku wykonawczym
Aplikacja obsługuje brak…
Aplikacja przetwarza śledzoną siatkę, aby utworzyć szczelną siatkę, być może z pomocą użytkownika, który załata dziury w siatce.
Aplikacja przetwarza tr... Tekst nie jest w formacie SVG – nie można go wyświetlić
Rysunek 29. Proces w aplikacji dotyczący prośby o siatkę wodoszczelną
Komponenty gwarantowane
Środowisko wykonawcze obsługujące XR_SPATIAL_CAPABILITY_MESH_TRACKING_EXT musi udostępniać te komponenty przestrzenne jako gwarantowane komponenty wszystkich elementów wykrytych przez tę funkcję i musi je wyliczać w xrEnumerateSpatialCapabilityComponentTypesEXT :
XR_SPATIAL_COMPONENT_TYPE_BOUNDED_3D_EXTXR_SPATIAL_COMPONENT_TYPE_MESH_3D_EXT
Ograniczony komponent 3D
Komponent ograniczony 3D określa środek i zakres encji, na której się znajduje. Dane dostarczane przez ten komponent ułatwiają aplikacjom odrzucanie elementów, które znajdują się poza ostrosłupem widzenia.
Więcej informacji znajdziesz w sekcji Ograniczony widok 3D.
Komponent siatki 3D
Komponent siatki 3D udostępnia siatkę 3D elementu, na którym się znajduje. Więcej informacji znajdziesz w artykule Siatka 3D.
Segmentacja wolumetryczna (dzielenie na fragmenty)
Środowisko wykonawcze może podzielić siatkę na bloki wolumetryczne (fragmenty), aby ułatwić aplikacjom odrzucanie bloków siatki poza ostrosłupem widzenia. W takim przypadku środowisko wykonawcze musi traktować każdy taki blok wolumetryczny jako oddzielny element i mieć zestaw gwarantowanych komponentów w każdym takim elemencie (bloku wolumetrycznym). Jeśli środowisko wykonawcze zapewnia w ten sposób siatkę wodoszczelną, każdy blok wolumetryczny nie jest wodoszczelny, ale grupa bloków tworzy siatkę wodoszczelną. W takim przypadku środowisko wykonawcze musi dodać komponent XR_SPATIAL_COMPONENT_TYPE_PARENT_EXT do każdej encji (bloku wolumetrycznego), a wartość encji nadrzędnej w blokach, które razem tworzą szczelną siatkę, musi być taka sama. Dzięki temu aplikacja może określić, które fragmenty tworzą razem szczelną siatkę.
Siatki sąsiadujących bloków wolumetrycznych mogą mieć wspólne wierzchołki, ale trójkąty jednego bloku wolumetrycznego nie mogą nakładać się na trójkąty sąsiadującego bloku.
Komponenty opcjonalne
Wektory normalne siatki
Dane komponentu
XR_SPATIAL_COMPONENT_TYPE_MESH_3D_NORMALS_EXT używa XrSpatialBufferEXT do przechowywania danych. XrSpatialBufferEXT :: bufferId reprezentuje bufor zawierający wektory normalne wierzchołków siatki encji, w której znajduje się ten komponent. XrSpatialBufferEXT :: bufferType musi mieć wartość XR_SPATIAL_BUFFER_TYPE_VECTOR3F_EXT . Encja, która ma XR_SPATIAL_COMPONENT_TYPE_MESH_3D_NORMALS_EXT, musi też mieć XR_SPATIAL_COMPONENT_TYPE_MESH_3D_EXT. Wektory normalne dostarczane przez ten komponent muszą odpowiadać wierzchołkom podanym w XrSpatialMeshDataEXT :: vertexBuffer komponentu XR_SPATIAL_COMPONENT_TYPE_MESH_3D_EXT.
Struktura listy komponentów do wysyłania zapytań o dane
Struktura XrSpatialComponentMesh3DNormalsListEXT jest zdefiniowana w ten sposób:
typedef struct XrSpatialComponentMesh3DNormalsListEXT {
XrStructureType type;
void* next;
uint32_t meshNormalsCount;
XrSpatialBufferEXT* meshNormals;
} XrSpatialComponentMesh3DNormalsListEXT;
Opisy członków
typeto XrStructureType tej struktury.nexttoNULLlub wskaźnik do następnej struktury w łańcuchu struktur. W podstawowym interfejsie OpenXR ani w tym rozszerzeniu nie zdefiniowano takich struktur.meshNormalsCounttouint32_topisujący liczbę elementów w tablicymeshNormals.meshNormalsto tablica XrVector3f .
Środowisko wykonawcze musi zwracać XR_ERROR_VALIDATION_FAILURE z xrQuerySpatialComponentDataEXT, jeśli XrSpatialComponentMesh3DNormalsListEXT znajduje się w następnym łańcuchu XrSpatialComponentDataQueryResultEXT :: next, ale XrSpatialComponentDataQueryConditionEXT :: componentTypeCount nie jest równe 0, a XR_SPATIAL_COMPONENT_TYPE_MESH_3D_NORMALS_EXT nie jest uwzględnione w XrSpatialComponentDataQueryConditionEXT :: componentTypes .
Środowisko wykonawcze musi zwracać XR_ERROR_SIZE_INSUFFICIENT z xrQuerySpatialComponentDataEXT, jeśli meshNormalsCount jest mniejsze niż XrSpatialComponentDataQueryResultEXT :: entityIdCountOutput .
Prawidłowe użycie (pośrednie)
- Rozszerzenie
XR_EXT_spatial_mesh_trackingmusi być włączone przed użyciem XrSpatialComponentMesh3DNormalsListEXT -
typemusi mieć wartośćXR_TYPE_SPATIAL_COMPONENT_MESH_3D_NORMALS_LIST_EXT -
nextmusi mieć wartośćNULLlub być prawidłowym wskaźnikiem do następnej struktury w łańcuchu struktur -
meshNormalsmusi być wskaźnikiem do tablicy strukturmeshNormalsCountXrSpatialBufferEXT - Parametr
meshNormalsCountmusi być większy niż0
Konfiguracja
Jeśli XR_SPATIAL_COMPONENT_TYPE_MESH_3D_NORMALS_EXT jest wymieniony w XrSpatialCapabilityComponentTypesEXT :: componentTypes dla danej funkcji, aplikacja może ją włączyć, dodając enum do listy XrSpatialCapabilityConfigurationBaseHeaderEXT :: enabledComponents. Ten komponent nie wymaga żadnej specjalnej konfiguracji, aby można go było uwzględnić w następnym łańcuchu XrSpatialCapabilityConfigurationBaseHeaderEXT . Zalecamy jednak, aby aplikacje używały tego komponentu i jego danych w połączeniu z komponentem XR_SPATIAL_COMPONENT_TYPE_MESH_3D_EXT.
Etykiety semantyczne siatki
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;
Wyliczenie XrSpatialMeshSemanticLabelEXT opisuje zestaw etykiet semantycznych siatki. Jest on używany przez różne komponenty przestrzenne do nadawania znaczenia wartościom uint8_t z XrSpatialBufferEXT w przypadku etykiet semantycznych dla poszczególnych wierzchołków lub trójkątów. Zobacz Etykiety semantyczne wierzchołków siatki i Etykiety semantyczne trójkątów siatki.
Rozszerzenia, które chcą rozszerzyć ten zestaw etykiet semantycznych lub dodać własny nowy zestaw dla siatek, powinny postępować zgodnie ze wskazówkami podanymi w wytycznych dotyczących projektowania i rozszerzania etykiet semantycznych .
Opis typu wyliczeniowego
XR_SPATIAL_MESH_SEMANTIC_LABEL_UNCATEGORIZED_EXT
Środowisko wykonawcze nie mogło sklasyfikować wierzchołka ani trójkąta.
XR_SPATIAL_MESH_SEMANTIC_LABEL_FLOOR_EXT
Wierzchołek lub trójkąt jest mapowany na piętro.
XR_SPATIAL_MESH_SEMANTIC_LABEL_WALL_EXT
Wierzchołek lub trójkąt jest mapowany na ścianę.
XR_SPATIAL_MESH_SEMANTIC_LABEL_CEILING_EXT
Wierzchołek lub trójkąt jest mapowany na sufit.
XR_SPATIAL_MESH_SEMANTIC_LABEL_TABLE_EXT
Wierzchołek lub trójkąt jest mapowany na tabelę.
XR_SPATIAL_MESH_SEMANTIC_LABEL_CHAIR_EXT
Wierzchołek lub trójkąt jest mapowany na krzesło.
XR_SPATIAL_MESH_SEMANTIC_LABEL_SOFA_EXT
Wierzchołek lub trójkąt jest mapowany na sofę.
XR_SPATIAL_MESH_SEMANTIC_LABEL_BED_EXT
Wierzchołek lub trójkąt jest mapowany na grządkę.
Etykiety semantyczne wierzchołków siatki
Przegląd komponentu
XR_SPATIAL_COMPONENT_TYPE_MESH_3D_VERTEX_SEMANTIC_LABELS_EXT udostępnia pojedynczą etykietę semantyczną dla każdego wierzchołka siatki elementu przestrzennego.
Dane komponentu
XR_SPATIAL_COMPONENT_TYPE_MESH_3D_VERTEX_SEMANTIC_LABELS_EXT używa XrSpatialBufferEXT do przechowywania danych. XrSpatialBufferEXT :: bufferId reprezentuje bufor zawierający etykiety semantyczne wierzchołków siatki elementu, na którym znajduje się ten komponent. XrSpatialBufferEXT :: bufferType musi mieć wartość XR_SPATIAL_BUFFER_TYPE_UINT8_EXT . Wartości w buforze odpowiadają wartościom wyliczenia XrSpatialMeshSemanticLabelEXT. Element, który ma XR_SPATIAL_COMPONENT_TYPE_MESH_3D_VERTEX_SEMANTIC_LABELS_EXT, musi też mieć komponent XR_SPATIAL_COMPONENT_TYPE_MESH_3D_EXT. Etykiety semantyczne dostarczane przez ten komponent muszą odpowiadać wierzchołkom podanym w elemencie XrSpatialMeshDataEXT :: vertexBuffer komponentu XR_SPATIAL_COMPONENT_TYPE_MESH_3D_EXT. Oznacza to, że etykieta semantyczna w danym indeksie danych bufora przestrzennego dostarczanych przez ten komponent odpowiada wierzchołkowi w tym samym indeksie dostarczanym przez XrSpatialMeshDataEXT :: vertexBuffer . Oznacza to również, że xrGetSpatialBufferUint8EXT :: bufferCountOutput musi mieć tę samą wartość dla bufora etykiet semantycznych wierzchołków i XrSpatialMeshDataEXT :: vertexBuffer .
Struktura listy komponentów do wysyłania zapytań o dane
Struktura XrSpatialComponentMesh3DVertexSemanticLabelsListEXT jest zdefiniowana w ten sposób:
typedef struct XrSpatialComponentMesh3DVertexSemanticLabelsListEXT {
XrStructureType type;
void* next;
uint32_t meshSemanticLabelsCount;
XrSpatialBufferEXT* meshSemanticLabels;
} XrSpatialComponentMesh3DVertexSemanticLabelsListEXT;
Opisy członków
typeto XrStructureType tej struktury.nexttoNULLlub wskaźnik do następnej struktury w łańcuchu struktur. W podstawowym interfejsie OpenXR ani w tym rozszerzeniu nie zdefiniowano takich struktur.meshSemanticLabelsCounttouint32_topisujący liczbę elementów w tablicymeshSemanticLabels.meshSemanticLabelsto tablica XrSpatialBufferEXT .
Środowisko wykonawcze musi zwracać XR_ERROR_VALIDATION_FAILURE z xrQuerySpatialComponentDataEXT, jeśli XrSpatialComponentMesh3DVertexSemanticLabelsListEXT znajduje się w następnym łańcuchu XrSpatialComponentDataQueryResultEXT :: next, ale XrSpatialComponentDataQueryConditionEXT :: componentTypeCount nie jest równe zero, a XR_SPATIAL_COMPONENT_TYPE_MESH_3D_VERTEX_SEMANTIC_LABELS_EXT nie jest uwzględnione w XrSpatialComponentDataQueryConditionEXT :: componentTypes .
Środowisko wykonawcze musi zwracać XR_ERROR_SIZE_INSUFFICIENT z xrQuerySpatialComponentDataEXT, jeśli meshSemanticLabelsCount jest mniejsze niż XrSpatialComponentDataQueryResultEXT :: entityIdCountOutput .
Prawidłowe użycie (pośrednie)
- Rozszerzenie
XR_EXT_spatial_mesh_trackingmusi być włączone przed użyciem XrSpatialComponentMesh3DVertexSemanticLabelsListEXT -
typemusi mieć wartośćXR_TYPE_SPATIAL_COMPONENT_MESH_3D_VERTEX_SEMANTIC_LABELS_LIST_EXT -
nextmusi mieć wartośćNULLlub być prawidłowym wskaźnikiem do następnej struktury w łańcuchu struktur -
meshSemanticLabelsmusi być wskaźnikiem do tablicy strukturmeshSemanticLabelsCountXrSpatialBufferEXT - Parametr
meshSemanticLabelsCountmusi być większy niż0
Konfiguracja
Jeśli XR_SPATIAL_COMPONENT_TYPE_MESH_3D_VERTEX_SEMANTIC_LABELS_EXT jest wymieniony w XrSpatialCapabilityComponentTypesEXT :: componentTypes dla danej funkcji, aplikacja może ją włączyć, dodając enum do listy XrSpatialCapabilityConfigurationBaseHeaderEXT :: enabledComponents. Ten komponent nie wymaga żadnej specjalnej konfiguracji, aby można go było uwzględnić w następnym łańcuchu XrSpatialCapabilityConfigurationBaseHeaderEXT . Zalecamy jednak, aby aplikacje używały tego komponentu i jego danych w połączeniu z komponentem XR_SPATIAL_COMPONENT_TYPE_MESH_3D_EXT. Tego komponentu nie można włączyć razem z komponentem XR_SPATIAL_COMPONENT_TYPE_MESH_3D_TRIANGLE_SEMANTIC_LABELS_EXT . Jeśli aplikacja dodaje zarówno XR_SPATIAL_COMPONENT_TYPE_MESH_3D_VERTEX_SEMANTIC_LABELS_EXT, jak i XR_SPATIAL_COMPONENT_TYPE_MESH_3D_TRIANGLE_SEMANTIC_LABELS_EXT do XrSpatialCapabilityConfigurationBaseHeaderEXT :: enabledComponents, środowisko wykonawcze musi zwrócić XR_ERROR_SPATIAL_CAPABILITY_CONFIGURATION_INVALID_EXT . Środowisko wykonawcze musi też zwracać XR_ERROR_SPATIAL_CAPABILITY_CONFIGURATION_INVALID_EXT, jeśli aplikacja próbuje włączyć oba komponenty w oddzielnych XrSpatialContextEXT .
Etykiety semantyczne trójkątów siatki
Przegląd komponentu
XR_SPATIAL_COMPONENT_TYPE_MESH_3D_TRIANGLE_SEMANTIC_LABELS_EXT udostępnia jedną etykietę semantyczną dla każdego trójkąta siatki elementu przestrzennego.
Dane komponentu
XR_SPATIAL_COMPONENT_TYPE_MESH_3D_TRIANGLE_SEMANTIC_LABELS_EXT używa XrSpatialBufferEXT do przechowywania danych. XrSpatialBufferEXT :: bufferId reprezentuje bufor zawierający etykiety semantyczne trójkątów siatki elementu, na którym znajduje się ten komponent. XrSpatialBufferEXT :: bufferType musi mieć wartość XR_SPATIAL_BUFFER_TYPE_UINT8_EXT . Wartości w buforze odpowiadają wartościom wyliczenia XrSpatialMeshSemanticLabelEXT. Element, który ma XR_SPATIAL_COMPONENT_TYPE_MESH_3D_TRIANGLE_SEMANTIC_LABELS_EXT, musi też mieć komponent XR_SPATIAL_COMPONENT_TYPE_MESH_3D_EXT. Etykiety semantyczne dostarczane przez ten komponent muszą odpowiadać trójkątom dostarczanym w komponencie XrSpatialMeshDataEXT XR_SPATIAL_COMPONENT_TYPE_MESH_3D_EXT. Liczba elementów bufora przestrzennego zawierającego etykiety semantyczne trójkątów to liczba elementów XrSpatialMeshDataEXT :: indexBuffer podzielona przez 3. Oznacza to, że etykieta semantyczna w danym indeksie danych bufora przestrzennego dostarczanych przez ten komponent odpowiada trójkątowi reprezentowanemu przez [index * 3], [index * 3 + 1], [index * 3 + 2] w XrSpatialMeshDataEXT :: indexBuffer .
Struktura listy komponentów do wysyłania zapytań o dane
Struktura XrSpatialComponentMesh3DTriangleSemanticLabelsListEXT jest zdefiniowana w ten sposób:
typedef struct XrSpatialComponentMesh3DTriangleSemanticLabelsListEXT {
XrStructureType type;
void* next;
uint32_t meshSemanticLabelsCount;
XrSpatialBufferEXT* meshSemanticLabels;
} XrSpatialComponentMesh3DTriangleSemanticLabelsListEXT;
Opisy członków
typeto XrStructureType tej struktury.nexttoNULLlub wskaźnik do następnej struktury w łańcuchu struktur. W podstawowym interfejsie OpenXR ani w tym rozszerzeniu nie zdefiniowano takich struktur.meshSemanticLabelsCounttouint32_topisujący liczbę elementów w tablicymeshSemanticLabels.meshSemanticLabelsto tablica XrSpatialBufferEXT .
Środowisko wykonawcze musi zwracać XR_ERROR_VALIDATION_FAILURE z xrQuerySpatialComponentDataEXT, jeśli XrSpatialComponentMesh3DTriangleSemanticLabelsListEXT znajduje się w następnym łańcuchu XrSpatialComponentDataQueryResultEXT :: next, ale XrSpatialComponentDataQueryConditionEXT :: componentTypeCount nie jest równe 0, a XR_SPATIAL_COMPONENT_TYPE_MESH_3D_TRIANGLE_SEMANTIC_LABELS_EXT nie jest uwzględnione w XrSpatialComponentDataQueryConditionEXT :: componentTypes .
Środowisko wykonawcze musi zwracać XR_ERROR_SIZE_INSUFFICIENT z xrQuerySpatialComponentDataEXT, jeśli meshSemanticLabelsCount jest mniejsze niż XrSpatialComponentDataQueryResultEXT :: entityIdCountOutput .
Prawidłowe użycie (pośrednie)
- Rozszerzenie
XR_EXT_spatial_mesh_trackingmusi być włączone przed użyciem XrSpatialComponentMesh3DTriangleSemanticLabelsListEXT. -
typemusi mieć wartośćXR_TYPE_SPATIAL_COMPONENT_MESH_3D_TRIANGLE_SEMANTIC_LABELS_LIST_EXT -
nextmusi mieć wartośćNULLlub być prawidłowym wskaźnikiem do następnej struktury w łańcuchu struktur -
meshSemanticLabelsmusi być wskaźnikiem do tablicy strukturmeshSemanticLabelsCountXrSpatialBufferEXT - Parametr
meshSemanticLabelsCountmusi być większy niż0
Konfiguracja
Jeśli XR_SPATIAL_COMPONENT_TYPE_MESH_3D_TRIANGLE_SEMANTIC_LABELS_EXT jest wymieniony w XrSpatialCapabilityComponentTypesEXT :: componentTypes dla danej funkcji, aplikacja może ją włączyć, dodając enum do listy XrSpatialCapabilityConfigurationBaseHeaderEXT :: enabledComponents. Ten komponent nie wymaga żadnej specjalnej konfiguracji, aby można go było uwzględnić w następnym łańcuchu XrSpatialCapabilityConfigurationBaseHeaderEXT . Zalecamy jednak, aby aplikacje używały tego komponentu i jego danych w połączeniu z komponentem XR_SPATIAL_COMPONENT_TYPE_MESH_3D_EXT. Tego komponentu nie można włączyć razem z komponentem XR_SPATIAL_COMPONENT_TYPE_MESH_3D_VERTEX_SEMANTIC_LABELS_EXT . Jeśli aplikacja dodaje zarówno XR_SPATIAL_COMPONENT_TYPE_MESH_3D_VERTEX_SEMANTIC_LABELS_EXT, jak i XR_SPATIAL_COMPONENT_TYPE_MESH_3D_TRIANGLE_SEMANTIC_LABELS_EXT do XrSpatialCapabilityConfigurationBaseHeaderEXT :: enabledComponents, środowisko wykonawcze musi zwrócić XR_ERROR_SPATIAL_CAPABILITY_CONFIGURATION_INVALID_EXT . Środowisko wykonawcze musi też zwracać XR_ERROR_SPATIAL_CAPABILITY_CONFIGURATION_INVALID_EXT, jeśli aplikacja próbuje włączyć oba komponenty w oddzielnych XrSpatialContextEXT .
Nowe domy
- XrSpatialCapabilityConfigurationMeshTrackingEXT
Rozszerzenie XrSpatialCapabilityConfigurationMeshTrackingEXT :
Rozszerzenie XrSpatialComponentDataQueryResultEXT :
Nowe wartości w polu enum
Nowe stałe typu wyliczeniowego
XR_EXT_SPATIAL_MESH_TRACKING_EXTENSION_NAMEXR_EXT_spatial_mesh_tracking_SPEC_VERSIONRozszerzenie XrSpatialCapabilityEXT :
XR_SPATIAL_CAPABILITY_MESH_TRACKING_EXT
Rozszerzenie XrSpatialCapabilityFeatureEXT :
XR_SPATIAL_CAPABILITY_FEATURE_TRACK_WATERTIGHT_MESH_EXT
Rozszerzenie 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
Rozszerzanie 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
Problemy
Historia zmian
Wersja 1, 2 listopada 2025 r. (Nihav Jain, Google)
- Początkowy opis rozszerzenia