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:

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

  • type to XrStructureType tej struktury.
  • next to NULL lub wskaźnik do następnej struktury w łańcuchu struktur.
  • capability to XrSpatialCapabilityEXT i musi mieć wartość XR_SPATIAL_CAPABILITY_MESH_TRACKING_EXT .
  • enabledComponentCount to uint32_t opisujący liczbę elementów w tablicy enabledComponents.
  • enabledComponents to 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)

Ś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

  • type to XrStructureType tej struktury.
  • next to NULL lub wskaźnik do następnej struktury w łańcuchu struktur.
  • enableWatertightMeshTracking wskazuje, 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)

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_EXT
  • XR_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

  • type to XrStructureType tej struktury.
  • next to NULL lub wskaźnik do następnej struktury w łańcuchu struktur. W podstawowym interfejsie OpenXR ani w tym rozszerzeniu nie zdefiniowano takich struktur.
  • meshNormalsCount to uint32_t opisujący liczbę elementów w tablicy meshNormals.
  • meshNormals to 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)

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

  • type to XrStructureType tej struktury.
  • next to NULL lub wskaźnik do następnej struktury w łańcuchu struktur. W podstawowym interfejsie OpenXR ani w tym rozszerzeniu nie zdefiniowano takich struktur.
  • meshSemanticLabelsCount to uint32_t opisujący liczbę elementów w tablicy meshSemanticLabels.
  • meshSemanticLabels to 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)

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

  • type to XrStructureType tej struktury.
  • next to NULL lub wskaźnik do następnej struktury w łańcuchu struktur. W podstawowym interfejsie OpenXR ani w tym rozszerzeniu nie zdefiniowano takich struktur.
  • meshSemanticLabelsCount to uint32_t opisujący liczbę elementów w tablicy meshSemanticLabels.
  • meshSemanticLabels to 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)

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

Nowe wartości w polu enum

Nowe stałe typu wyliczeniowego

  • XR_EXT_SPATIAL_MESH_TRACKING_EXTENSION_NAME
  • XR_EXT_spatial_mesh_tracking_SPEC_VERSION
  • Rozszerzenie 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_EXT
    • XR_SPATIAL_COMPONENT_TYPE_MESH_3D_TRIANGLE_SEMANTIC_LABELS_EXT
    • XR_SPATIAL_COMPONENT_TYPE_MESH_3D_VERTEX_SEMANTIC_LABELS_EXT
  • Rozszerzanie XrStructureType :

    • XR_TYPE_SPATIAL_CAPABILITY_CONFIGURATION_MESH_TRACKING_EXT
    • XR_TYPE_SPATIAL_COMPONENT_MESH_3D_NORMALS_LIST_EXT
    • XR_TYPE_SPATIAL_COMPONENT_MESH_3D_TRIANGLE_SEMANTIC_LABELS_LIST_EXT
    • XR_TYPE_SPATIAL_COMPONENT_MESH_3D_VERTEX_SEMANTIC_LABELS_LIST_EXT
    • XR_TYPE_SPATIAL_FEATURE_TRACK_WATERTIGHT_MESH_EXT

Problemy

Historia zmian

  • Wersja 1, 2 listopada 2025 r. (Nihav Jain, Google)

    • Początkowy opis rozszerzenia