XR_ANDROID_scene_meshing
Ciąg znaków nazwy
XR_ANDROID_scene_meshing
Typ rozszerzenia
Rozszerzenie instancji
Zarejestrowany numer wewnętrzny
719
Wersja
3
Stan ratyfikacji
Nie ratyfikowano
Zależności rozszerzeń i wersji
Data ostatniej modyfikacji
2025-05-15
Stan adresu IP
Brak znanych roszczeń dotyczących własności intelektualnej.
Twórcy
Spencer Quin, Google
Jared Finder, Google
Antonio Fontan, Google
Cairn Overturf, Google
Nihav Jain, Google
Salar Khan, Google
Sebastian Klose, Google
Jürgen Sturm, Google
Vinny DaSilva, Google
Ricardo Campbell, Google
Przegląd
To rozszerzenie ma na celu dostarczanie siatek, które w przybliżeniu reprezentują obiekty fizyczne w otoczeniu użytkownika.
Aplikacje mogą używać tego rozszerzenia do wizualizacji sceny i umożliwiania interakcji obiektów wirtualnych z obiektami fizycznymi, np. kolizji.
Dane siatki sceny są generowane przez środowisko wykonawcze i udostępniane aplikacji za pomocą interfejsów XrSceneMeshingTrackerANDROID i XrSceneMeshSnapshotANDROID . Aplikacje mogą uzyskiwać dostęp do wartości w informacjach o podsiatce sceny za pomocą struktury XrSceneSubmeshStateANDROID zwracanej przez funkcję xrGetAllSubmeshStatesANDROID . Aplikacje mogą uzyskiwać dostęp do wartości w danych podsiatki sceny za pomocą struktury XrSceneSubmeshDataANDROID zwracanej przez funkcję xrGetSubmeshDataANDROID .
Dane siatki sceny są poufnymi danymi osobowymi i są ściśle powiązane z prywatnością i integralnością osobistą. Zdecydowanie zalecamy, aby aplikacje, które przechowują lub przesyłają dane siatki sceny, zawsze prosiły użytkownika o aktywną i wyraźną zgodę na takie działanie.
Uprawnienia
Aplikacje na Androida muszą mieć w pliku manifestu uprawnienie android.permission.SCENE_UNDERSTANDING_FINE. Uprawnienie android.permission.SCENE_UNDERSTANDING_FINE jest uważane za uprawnienie newralgiczne, ponieważ umożliwia środowisku wykonawczemu analizowanie otoczenia użytkownika.
Aby korzystać z tych funkcji, aplikacja musi prosić o uprawnienia w czasie działania:
- xrCreateSceneMeshingTrackerANDROID
- xrDestroySceneMeshingTrackerANDROID
- xrCreateSceneMeshSnapshotANDROID
- xrDestroySceneMeshSnapshotANDROID
- xrGetAllSubmeshStatesANDROID
- xrGetSubmeshDataANDROID
(poziom ochrony: niebezpieczny)
Sprawdzanie możliwości systemu
Struktura XrSystemSceneMeshingPropertiesANDROID jest zdefiniowana w ten sposób:
typedef struct XrSystemSceneMeshingPropertiesANDROID {
XrStructureType type;
void* next;
XrBool32 supportsSceneMeshing;
} XrSystemSceneMeshingPropertiesANDROID;
Opisy członków
typeto XrStructureType tej struktury.nexttoNULLlub wskaźnik do następnej struktury w łańcuchu struktur. W podstawowej specyfikacji OpenXR ani w tym rozszerzeniu nie zdefiniowano takich struktur.supportsSceneMeshingtoXrBool32, który wskazuje, czy system obsługuje siatkę sceny.
Aplikacja może sprawdzić, czy system obsługuje tworzenie siatki sceny, łącząc strukturę XrSystemSceneMeshingPropertiesANDROID ze strukturą XrSystemProperties podczas wywoływania funkcji xrGetSystemProperties .
Jeśli środowisko wykonawcze zwraca XR_FALSE dla supportsSceneMeshing , system nie obsługuje tworzenia siatki sceny, a w związku z tym musi zwracać XR_ERROR_FEATURE_UNSUPPORTED z funkcji xrCreateSceneMeshingTrackerANDROID . Aplikacja powinna unikać korzystania z funkcji siatki sceny, gdy wartość parametru supportsSceneMeshing to XR_FALSE .
Jeśli środowisko wykonawcze zwraca wartość XR_TRUE dla supportsSceneMeshing, oznacza to, że system obsługuje siatkę sceny.
Prawidłowe użycie (domyślne)
- Rozszerzenie
XR_ANDROID_scene_meshingmusi być włączone przed użyciem XrSystemSceneMeshingPropertiesANDROID. -
typemusi mieć wartośćXR_TYPE_SYSTEM_SCENE_MESHING_PROPERTIES_ANDROID -
nextmusi mieć wartośćNULLlub być prawidłowym wskaźnikiem do następnej struktury w łańcuchu struktur.
Wyliczenie XrSceneMeshSemanticLabelSetANDROID opisuje zestawy etykiet semantycznych dla siatki sceny. Każda wartość w tym wyliczeniu reprezentuje inne wyliczenie, które zawiera etykiety semantyczne. Na przykład wartość XR_SCENE_MESH_SEMANTIC_LABEL_SET_DEFAULT_ANDROID reprezentuje zbiór XrSceneMeshSemanticLabelANDROID .
typedef enum XrSceneMeshSemanticLabelSetANDROID {
XR_SCENE_MESH_SEMANTIC_LABEL_SET_NONE_ANDROID = 0,
XR_SCENE_MESH_SEMANTIC_LABEL_SET_DEFAULT_ANDROID = 1,
XR_SCENE_MESH_SEMANTIC_LABEL_SET_MAX_ENUM_ANDROID = 0x7FFFFFFF
} XrSceneMeshSemanticLabelSetANDROID;
Wartości wyliczeniowe mają następujące znaczenia:
Opis typu wyliczeniowego
XR_SCENE_MESH_SEMANTIC_LABEL_SET_NONE_ANDROID
Ten zestaw etykiet semantycznych oznacza brak etykiet semantycznych.
XR_SCENE_MESH_SEMANTIC_LABEL_SET_DEFAULT_ANDROID
Ten zestaw etykiet semantycznych reprezentuje XrSceneMeshSemanticLabelANDROID.
Funkcja xrEnumerateSupportedSemanticLabelSetsANDROID jest zdefiniowana w ten sposób:
XrResult xrEnumerateSupportedSemanticLabelSetsANDROID(
XrInstance instance,
XrSystemId systemId,
uint32_t supportedSemanticLabelSetsInputCapacity,
uint32_t* supportedSemanticLabelSetsOutputCount,
XrSceneMeshSemanticLabelSetANDROID* supportedSemanticLabelSets);
Opisy parametrów
instanceto obiekt XrInstance utworzony przez aplikację.systemIdtoXrSystemIdponowiona próba wywołania funkcji xrGetSystem .supportedSemanticLabelSetsInputCapacityto pojemnośćsupportedSemanticLabelSetslub 0 , aby pobrać wymaganą pojemność.supportedSemanticLabelSetsOutputCountto wskaźnik liczby zapisanych bajtówsupportedSemanticLabelSetslub wskaźnik wymaganej pojemności w przypadku, gdysupportedSemanticLabelSetsInputCapacityjest niewystarczająca.supportedSemanticLabelSetsto wskaźnik do tablicy XrSceneMeshSemanticLabelSetANDROID . Może to byćNULL, jeślisupportedSemanticLabelSetsInputCapacitywynosi 0.- Szczegółowy opis pobierania wymaganego rozmiaru
supportedSemanticLabelSetsznajdziesz w rozdziale Parametry rozmiaru bufora.
Aplikacja może wyliczyć zbiory etykiet semantycznych obsługiwane przez system za pomocą funkcji xrEnumerateSupportedSemanticLabelSetsANDROID.
Każdy system musi obsługiwać co najmniej wartość XR_SCENE_MESH_SEMANTIC_LABEL_SET_NONE_ANDROID, ponieważ ta wartość wyliczeniowa nie reprezentuje żadnego zestawu etykiet semantycznych i może być używana w przypadku, gdy aplikacja nie potrzebuje semantyki wierzchołków.
Prawidłowe użycie (domyślne)
- Rozszerzenie
XR_ANDROID_scene_meshingmusi być włączone przed wywołaniem funkcji xrEnumerateSupportedSemanticLabelSetsANDROID. -
instancemusi być prawidłowym uchwytem XrInstance -
supportedSemanticLabelSetsOutputCountmusi być wskaźnikiem wartościuint32_t. - Jeśli
supportedSemanticLabelSetsInputCapacitynie jest równe0,supportedSemanticLabelSetsmusi być wskaźnikiem do tablicy wartościsupportedSemanticLabelSetsInputCapacityXrSceneMeshSemanticLabelSetANDROID.
Kody zwrotne
XR_SUCCESS
XR_ERROR_FUNCTION_UNSUPPORTEDXR_ERROR_HANDLE_INVALIDXR_ERROR_INSTANCE_LOSTXR_ERROR_RUNTIME_FAILUREXR_ERROR_SIZE_INSUFFICIENTXR_ERROR_SYSTEM_INVALIDXR_ERROR_VALIDATION_FAILURE
Tworzenie uchwytu śledzenia łączenia scen
XR_DEFINE_HANDLE(XrSceneMeshingTrackerANDROID)
Uchwyt XrSceneMeshingTrackerANDROID reprezentuje tracker siatki sceny do tworzenia siatki sceny i zarządzania powiązanymi zasobami.
Ten uchwyt może być używany do tworzenia zrzutu siatki sceny za pomocą funkcji xrCreateSceneMeshSnapshotANDROID w tym rozszerzeniu.
Funkcja xrCreateSceneMeshingTrackerANDROID jest zdefiniowana w ten sposób:
XrResult xrCreateSceneMeshingTrackerANDROID(
XrSession session,
const XrSceneMeshingTrackerCreateInfoANDROID* createInfo,
XrSceneMeshingTrackerANDROID* tracker);
Opisy parametrów
sessionto XrSession, w której będzie aktywny moduł śledzenia siatki sceny.createInfoto wskaźnik struktury XrSceneMeshingTrackerCreateInfoANDROID używanej do opisywania trackera siatki sceny, który ma zostać utworzony.trackerto zwrócony uchwyt XrSceneMeshingTrackerANDROID.
Aplikacja może utworzyć uchwyt XrSceneMeshingTrackerANDROID za pomocą funkcji xrCreateSceneMeshingTrackerANDROID.
Jeśli system nie obsługuje tworzenia siatki sceny, środowisko wykonawcze musi zwrócić wartość XR_ERROR_FEATURE_UNSUPPORTED z funkcji xrCreateSceneMeshingTrackerANDROID . W takim przypadku środowisko wykonawcze musi zwracać wartość XR_FALSE dla XrSystemSceneMeshingPropertiesANDROID :: supportsSceneMeshing po wywołaniu funkcji xrGetSystemProperties, aby aplikacja mogła uniknąć tworzenia trackera siatki sceny.
Aplikacja musi używać tylko zestawów etykiet semantycznych obsługiwanych przez system w XrSceneMeshingTrackerCreateInfoANDROID :: semanticLabelSet podczas tworzenia trackera siatki sceny. Jeśli aplikacja używa nieobsługiwanego zestawu semantycznych etykiet wierzchołków siatki sceny, środowisko wykonawcze musi zwrócić wartość XR_ERROR_FEATURE_UNSUPPORTED z funkcji xrCreateSceneMeshingTrackerANDROID .
Aplikacja może wyliczyć listę obsługiwanych zestawów etykiet semantycznych za pomocą funkcji xrEnumerateSupportedSemanticLabelSetsANDROID.
Uchwyt xrCreateSceneMeshingTrackerANDROID jest właścicielem wszystkich zasobów siatki sceny. Po zakończeniu tworzenia siatki sceny aplikacja musi zniszczyć uchwyt za pomocą funkcji xrDestroySceneMeshingTrackerANDROID.
Prawidłowe użycie (domyślne)
- Rozszerzenie
XR_ANDROID_scene_meshingmusi być włączone przed wywołaniem funkcji xrCreateSceneMeshingTrackerANDROID. -
sessionmusi być prawidłowym uchwytem XrSession -
createInfomusi być wskaźnikiem do prawidłowej struktury XrSceneMeshingTrackerCreateInfoANDROID -
trackermusi być wskaźnikiem do uchwytu XrSceneMeshingTrackerANDROID.
Kody zwrotne
XR_SUCCESSXR_SESSION_LOSS_PENDING
XR_ERROR_FEATURE_UNSUPPORTEDXR_ERROR_FUNCTION_UNSUPPORTEDXR_ERROR_HANDLE_INVALIDXR_ERROR_INSTANCE_LOSTXR_ERROR_LIMIT_REACHEDXR_ERROR_OUT_OF_MEMORYXR_ERROR_RUNTIME_FAILUREXR_ERROR_SESSION_LOSTXR_ERROR_VALIDATION_FAILURE
Struktura XrSceneMeshingTrackerCreateInfoANDROID jest zdefiniowana w ten sposób:
typedef struct XrSceneMeshingTrackerCreateInfoANDROID {
XrStructureType type;
const void* next;
XrSceneMeshSemanticLabelSetANDROID semanticLabelSet;
XrBool32 enableNormals;
} XrSceneMeshingTrackerCreateInfoANDROID;
Opisy członków
typeto XrStructureType tej struktury.nexttoNULLlub wskaźnik do następnej struktury w łańcuchu struktur. W podstawowej specyfikacji OpenXR ani w tym rozszerzeniu nie zdefiniowano takich struktur.semanticLabelSetto XrSceneMeshSemanticLabelSetANDROID używany do określania zestawu etykiet semantycznych, który ma być używany do tworzenia siatki sceny. Jeśli ta wartość jest ustawiona naXR_SCENE_MESH_SEMANTIC_LABEL_SET_NONE_ANDROID, środowisko wykonawcze zignoruje pole bufora XrSceneSubmeshDataANDROID ::vertexSemantics.enableNormalstoXrBool32używany do określania, czy podczas pobierania danych siatki sceny mają być uwzględniane wektory normalne wierzchołków siatki w buforze siatki sceny.
Struktura XrSceneMeshingTrackerCreateInfoANDROID zawiera informacje potrzebne do utworzenia uchwytu XrSceneMeshingTrackerANDROID.
Prawidłowe użycie (domyślne)
- Rozszerzenie
XR_ANDROID_scene_meshingmusi być włączone przed użyciem XrSceneMeshingTrackerCreateInfoANDROID. -
typemusi mieć wartośćXR_TYPE_SCENE_MESHING_TRACKER_CREATE_INFO_ANDROID -
nextmusi mieć wartośćNULLlub być prawidłowym wskaźnikiem do następnej struktury w łańcuchu struktur. -
semanticLabelSetmusi być prawidłową wartością XrSceneMeshSemanticLabelSetANDROID.
Funkcja xrDestroySceneMeshingTrackerANDROID jest zdefiniowana w ten sposób:
XrResult xrDestroySceneMeshingTrackerANDROID(
XrSceneMeshingTrackerANDROID tracker);
Opisy parametrów
trackerto obiekt XrSceneMeshingTrackerANDROID utworzony wcześniej przez funkcję xrCreateSceneMeshingTrackerANDROID .
Funkcja xrDestroySceneMeshingTrackerANDROID zwalnia tracker i powiązane z nim zasoby po zakończeniu korzystania z funkcji siatki sceny.
Prawidłowe użycie (domyślne)
- Rozszerzenie
XR_ANDROID_scene_meshingmusi być włączone przed wywołaniem funkcji xrDestroySceneMeshingTrackerANDROID. -
trackermusi być prawidłowym uchwytem XrSceneMeshingTrackerANDROID
Bezpieczeństwo wątków
- Dostęp do
trackeri wszystkich uchwytów podrzędnych musi być synchronizowany zewnętrznie.
Kody zwrotne
XR_SUCCESS
XR_ERROR_FUNCTION_UNSUPPORTEDXR_ERROR_HANDLE_INVALIDXR_ERROR_RUNTIME_FAILURE
Utwórz uchwyt zrzutu siatki sceny
XR_DEFINE_HANDLE(XrSceneMeshSnapshotANDROID)
Uchwyt XrSceneMeshSnapshotANDROID reprezentuje zrzut siatki sceny. Ten zrzut jest tworzony za pomocą funkcji xrCreateSceneMeshSnapshotANDROID, która wykonuje zrzut danych siatki sceny w momencie wywołania funkcji.
Ten uchwyt może służyć do pobierania informacji i danych o podsiatkach za pomocą funkcji xrGetAllSubmeshStatesANDROID i xrGetSubmeshDataANDROID .
Funkcja xrCreateSceneMeshSnapshotANDROID jest zdefiniowana w ten sposób:
XrResult xrCreateSceneMeshSnapshotANDROID(
XrSceneMeshingTrackerANDROID tracker,
const XrSceneMeshSnapshotCreateInfoANDROID* createInfo,
XrSceneMeshSnapshotCreationResultANDROID* outSnapshotCreationResult);
Opisy parametrów
trackerto uchwyt XrSceneMeshingTrackerANDROID utworzony wcześniej za pomocą funkcji xrCreateSceneMeshingTrackerANDROID .createInfoto wskaźnik struktury XrSceneMeshSnapshotCreateInfoANDROID, która zawiera informacje niezbędne do utworzenia migawki siatki sceny.outSnapshotCreationResultto wskaźnik obiektu XrSceneMeshSnapshotCreationResultANDROID, który jest wypełniany przez środowisko wykonawcze wynikiem tworzenia zrzutu.
Aplikacja może używać funkcji xrCreateSceneMeshSnapshotANDROID do tworzenia migawki siatki sceny z trackera siatki sceny. Ta funkcja zwraca uchwyt XrSceneMeshSnapshotANDROID wraz z wartością XrSceneMeshTrackingStateANDROID zawartą w strukturze XrSceneMeshSnapshotCreationResultANDROID. Uchwyt jest technicznie migawką danych siatki sceny w momencie tworzenia. Ten uchwyt może służyć do wykonywania zapytań o informacje i dane siatki sceny za pomocą funkcji xrGetAllSubmeshStatesANDROID i xrGetSubmeshDataANDROID.
Prawidłowe użycie (domyślne)
- Rozszerzenie
XR_ANDROID_scene_meshingmusi być włączone przed wywołaniem funkcji xrCreateSceneMeshSnapshotANDROID. -
trackermusi być prawidłowym uchwytem XrSceneMeshingTrackerANDROID -
createInfomusi być wskaźnikiem do prawidłowej struktury XrSceneMeshSnapshotCreateInfoANDROID -
outSnapshotCreationResultmusi być wskaźnikiem struktury XrSceneMeshSnapshotCreationResultANDROID.
Kody zwrotne
XR_SUCCESSXR_SESSION_LOSS_PENDING
XR_ERROR_FUNCTION_UNSUPPORTEDXR_ERROR_HANDLE_INVALIDXR_ERROR_INSTANCE_LOSTXR_ERROR_LIMIT_REACHEDXR_ERROR_OUT_OF_MEMORYXR_ERROR_POSE_INVALIDXR_ERROR_RUNTIME_FAILUREXR_ERROR_SESSION_LOSTXR_ERROR_TIME_INVALID
Struktura XrSceneMeshSnapshotCreateInfoANDROID jest zdefiniowana w ten sposób:
typedef struct XrSceneMeshSnapshotCreateInfoANDROID {
XrStructureType type;
const void* next;
XrSpace baseSpace;
XrTime time;
XrBoxf boundingBox;
} XrSceneMeshSnapshotCreateInfoANDROID;
Opisy członków
typeto XrStructureType tej struktury.nexttoNULLlub wskaźnik do następnej struktury w łańcuchu struktur. W podstawowej specyfikacji OpenXR ani w tym rozszerzeniu nie zdefiniowano takich struktur.baseSpaceto XrSpace, w której reprezentowane są informacje o pozycji podsieci sceny.timetoXrTime, który opisuje czas, w którym siatka sceny będzie przetwarzana lub wyświetlana. Zwykle jest to XrFrameState ::predictedDisplayTime.boundingBoxto XrBoxf opisujący pole ograniczenia, w którym ma zostać uzyskana siatka sceny.
Struktura XrSceneMeshSnapshotCreateInfoANDROID zawiera informacje potrzebne do utworzenia uchwytu XrSceneMeshSnapshotANDROID.
Prawidłowe użycie (domyślne)
- Rozszerzenie
XR_ANDROID_scene_meshingmusi być włączone przed użyciem XrSceneMeshSnapshotCreateInfoANDROID. -
typemusi mieć wartośćXR_TYPE_SCENE_MESH_SNAPSHOT_CREATE_INFO_ANDROID -
nextmusi mieć wartośćNULLlub być prawidłowym wskaźnikiem do następnej struktury w łańcuchu struktur. -
baseSpacemusi być prawidłowym uchwytem XrSpace.
Struktura XrSceneMeshSnapshotCreationResultANDROID jest zdefiniowana w ten sposób:
typedef struct XrSceneMeshSnapshotCreationResultANDROID {
XrStructureType type;
const void* next;
XrSceneMeshSnapshotANDROID snapshot;
XrSceneMeshTrackingStateANDROID trackingState;
} XrSceneMeshSnapshotCreationResultANDROID;
Opisy członków
typeto XrStructureType tej struktury.nexttoNULLlub wskaźnik do następnej struktury w łańcuchu struktur. W podstawowej specyfikacji OpenXR ani w tym rozszerzeniu nie zdefiniowano takich struktur.snapshotto uchwyt XrSceneMeshSnapshotANDROID utworzony przez środowisko wykonawcze.trackingStateto XrSceneMeshTrackingStateANDROID, który opisuje stan śledzenia siatki sceny w momencie tworzenia zrzutu.
Struktura XrSceneMeshSnapshotCreationResultANDROID przechowuje wynik tworzenia zrzutu siatki sceny zwrócony przez funkcję xrCreateSceneMeshSnapshotANDROID .
Prawidłowe użycie (domyślne)
- Rozszerzenie
XR_ANDROID_scene_meshingmusi być włączone przed użyciem XrSceneMeshSnapshotCreationResultANDROID. -
typemusi mieć wartośćXR_TYPE_SCENE_MESH_SNAPSHOT_CREATION_RESULT_ANDROID -
nextmusi mieć wartośćNULLlub być prawidłowym wskaźnikiem do następnej struktury w łańcuchu struktur. -
snapshotmusi być prawidłowym uchwytem XrSceneMeshSnapshotANDROID -
trackingStatemusi mieć prawidłową wartość XrSceneMeshTrackingStateANDROID
Wyliczenie XrSceneMeshTrackingStateANDROID opisuje stan śledzenia modułu śledzącego siatkę sceny. Każda wartość w tym wyliczeniu reprezentuje stan śledzenia siatki sceny.
typedef enum XrSceneMeshTrackingStateANDROID {
XR_SCENE_MESH_TRACKING_STATE_INITIALIZING_ANDROID = 0,
XR_SCENE_MESH_TRACKING_STATE_TRACKING_ANDROID = 1,
XR_SCENE_MESH_TRACKING_STATE_WAITING_ANDROID = 2,
XR_SCENE_MESH_TRACKING_STATE_ERROR_ANDROID = 3,
XR_SCENE_MESH_TRACKING_STATE_MAX_ENUM_ANDROID = 0x7FFFFFFF
} XrSceneMeshTrackingStateANDROID;
Wartości wyliczeniowe mają następujące znaczenia:
Opis typu wyliczeniowego
XR_SCENE_MESH_TRACKING_STATE_INITIALIZING_ANDROID
Tracker nie jest jeszcze gotowy do udostępniania danych sieci.
XR_SCENE_MESH_TRACKING_STATE_TRACKING_ANDROID
Tracker aktywnie śledzi.
XR_SCENE_MESH_TRACKING_STATE_WAITING_ANDROID
Tracker oczekuje na prawidłowe pomiary do zintegrowania od czasu ostatniej aktualizacji sieci.
XR_SCENE_MESH_TRACKING_STATE_ERROR_ANDROID
Tracker nie otrzymał prawidłowych pomiarów w kilku cyklach i jest w stanie błędu.
Ten stan służy tylko jako dodatkowa informacja dla aplikacji. Jeśli nie ma innych źródeł błędów, środowisko wykonawcze musi nadal umożliwiać aplikacji tworzenie migawek i pobieranie z nich danych niezależnie od bieżącego stanu XrSceneMeshTrackingStateANDROID trackera. Jeśli stan nie jest XR_SCENE_MESH_TRACKING_STATE_TRACKING_ANDROID , migawki mogą być nieaktualne lub puste.
Pobieranie danych siatki sceny ze zrzutu siatki sceny
Funkcja xrGetAllSubmeshStatesANDROID jest zdefiniowana w ten sposób:
XrResult xrGetAllSubmeshStatesANDROID(
XrSceneMeshSnapshotANDROID snapshot,
uint32_t submeshStateCapacityInput,
uint32_t* submeshStateCountOutput,
XrSceneSubmeshStateANDROID* submeshStates);
Opisy parametrów
snapshotto uchwyt XrSceneMeshSnapshotANDROID utworzony wcześniej za pomocą funkcji xrCreateSceneMeshSnapshotANDROID .submeshStateCapacityInputto pojemnośćsubmeshStateslub 0 , aby pobrać wymaganą pojemność.submeshStateCountOutputto wskaźnik liczby zapisanych bajtówsubmeshStateslub wskaźnik wymaganej pojemności w przypadku, gdysubmeshStateCapacityInputjest niewystarczająca.submeshStatesto wskaźnik tablicy struktur XrSceneSubmeshStateANDROID, do której środowisko wykonawcze będzie przekazywać stan wszystkich podsiatek w siatce sceny. Może to byćNULL, jeślisubmeshStateCapacityInputwynosi 0.- Szczegółowy opis pobierania wymaganego rozmiaru
submeshStatesznajdziesz w rozdziale Parametry rozmiaru bufora.
Aplikacja może używać funkcji xrGetAllSubmeshStatesANDROID, aby uzyskać stan wszystkich podsiatek w siatce sceny. Zawiera podstawowe informacje, które umożliwiają aplikacji wybieranie podsieci, dla których chce uzyskać dane.
Prawidłowe użycie (domyślne)
- Rozszerzenie
XR_ANDROID_scene_meshingmusi być włączone przed wywołaniem funkcji xrGetAllSubmeshStatesANDROID. -
snapshotmusi być prawidłowym uchwytem XrSceneMeshSnapshotANDROID -
submeshStateCountOutputmusi być wskaźnikiem wartościuint32_t. - Jeśli
submeshStateCapacityInputnie jest równe0,submeshStatesmusi być wskaźnikiem do tablicy struktursubmeshStateCapacityInputXrSceneSubmeshStateANDROID.
Kody zwrotne
XR_SUCCESSXR_SESSION_LOSS_PENDING
XR_ERROR_FUNCTION_UNSUPPORTEDXR_ERROR_HANDLE_INVALIDXR_ERROR_INSTANCE_LOSTXR_ERROR_RUNTIME_FAILUREXR_ERROR_SESSION_LOSTXR_ERROR_SIZE_INSUFFICIENTXR_ERROR_VALIDATION_FAILURE
Struktura XrSceneSubmeshStateANDROID jest zdefiniowana w ten sposób:
typedef struct XrSceneSubmeshStateANDROID {
XrStructureType type;
void* next;
XrUuid submeshId;
XrTime lastUpdatedTime;
XrPosef submeshPoseInBaseSpace;
XrExtent3Df bounds;
} XrSceneSubmeshStateANDROID;
Opisy członków
typeto XrStructureType tej struktury.nexttoNULLlub wskaźnik do następnej struktury w łańcuchu struktur. W podstawowej specyfikacji OpenXR ani w tym rozszerzeniu nie zdefiniowano takich struktur.submeshIdto identyfikator XrUuid identyfikujący podsiatkę.lastUpdatedTimetoXrTimereprezentująca czas ostatniej aktualizacji podsiatki.submeshPoseInBaseSpaceto XrPosef reprezentujący pozę podsiatki w przestrzeni bazowej użytej do utworzenia zrzutu siatki sceny. Pozycja jest również środkiem ramki ograniczającej podsiatki.boundsto XrExtent3Df opisujący wymiary ramki ograniczającej, która obejmuje podsiatkę. Ten zakres jest zdefiniowany w przestrzeni bazowej, która została użyta do utworzenia uchwytu siatki sceny.
Środowisko wykonawcze dokłada wszelkich starań, aby przypisać submeshId do regionu przestrzeni fizycznej zajmowanego przez podsiatkę. Środowiska wykonawcze mogą w każdej chwili utracić to mapowanie i przypisać nowy identyfikator UUID do dowolnego podzbioru wykrytych podsiatek. W szczególności środowiska wykonawcze nie muszą ponownie używać tych samych identyfikatorów UUID dla tych samych siatek w kolejnych instancjach aplikacji.
Prawidłowe użycie (domyślne)
- Rozszerzenie
XR_ANDROID_scene_meshingmusi być włączone przed użyciem XrSceneSubmeshStateANDROID. -
typemusi mieć wartośćXR_TYPE_SCENE_SUBMESH_STATE_ANDROID -
nextmusi mieć wartośćNULLlub być prawidłowym wskaźnikiem do następnej struktury w łańcuchu struktur.
Funkcja xrGetSubmeshDataANDROID jest zdefiniowana w ten sposób:
XrResult xrGetSubmeshDataANDROID(
XrSceneMeshSnapshotANDROID snapshot,
uint32_t submeshDataCount,
XrSceneSubmeshDataANDROID* inoutSubmeshData);
Opisy parametrów
snapshotto uchwyt XrSceneMeshSnapshotANDROID utworzony wcześniej za pomocą funkcji xrCreateSceneMeshSnapshotANDROID .submeshDataCountto długośćinoutSubmeshData.inoutSubmeshDatato tablica XrSceneSubmeshDataANDROID przydzielona aplikacji, w której środowisko wykonawcze wypełnia każdy element danymi siatki powiązanymi z identyfikatorem podsiatki przekazanym w XrSceneSubmeshDataANDROID ::submeshId.
Aplikacja może używać funkcji xrGetSubmeshDataANDROID, aby pobierać partie podsiatek lub wszystkie podsiatki naraz, przekazując listę XrSceneSubmeshDataANDROID, przy czym każdy element XrSceneSubmeshDataANDROID :: submeshId jest ustawiony na odpowiedni identyfikator podsiatki do pobrania.
Wartość XrSceneSubmeshDataANDROID :: submeshId musi być unikalna dla każdego elementu w inoutSubmeshData i możliwa do pobrania przez xrGetAllSubmeshStatesANDROID dla tego samego snapshot . Jeśli identyfikator podsieci jest nieprawidłowy lub więcej niż 1 element w inoutSubmeshData ma ten sam identyfikator podsieci, środowisko wykonawcze musi zwrócić XR_ERROR_VALIDATION_FAILURE .
submeshDataCount musi być mniejsza lub równa wartości zwracanej przez xrGetAllSubmeshStatesANDROID :: submeshStateCountOutput , w przeciwnym razie środowisko wykonawcze musi zwrócić XR_ERROR_VALIDATION_FAILURE .
Można go użyć w 2-wywołaniowym idiomie do wysyłania zapytań o liczbę wierzchołków i indeksów dla wszystkich wybranych podsiatek.
Prawidłowe użycie (domyślne)
- Rozszerzenie
XR_ANDROID_scene_meshingmusi być włączone przed wywołaniem funkcji xrGetSubmeshDataANDROID. -
snapshotmusi być prawidłowym uchwytem XrSceneMeshSnapshotANDROID -
inoutSubmeshDatamusi być wskaźnikiem do tablicy struktursubmeshDataCountXrSceneSubmeshDataANDROID. - Parametr
submeshDataCountmusi być większy niż0.
Kody zwrotne
XR_SUCCESSXR_SESSION_LOSS_PENDING
XR_ERROR_FUNCTION_UNSUPPORTEDXR_ERROR_HANDLE_INVALIDXR_ERROR_INSTANCE_LOSTXR_ERROR_RUNTIME_FAILUREXR_ERROR_SESSION_LOSTXR_ERROR_SIZE_INSUFFICIENTXR_ERROR_VALIDATION_FAILURE
Struktura XrSceneSubmeshDataANDROID jest zdefiniowana w ten sposób:
typedef struct XrSceneSubmeshDataANDROID {
XrStructureType type;
const void* next;
XrUuid submeshId;
uint32_t vertexCapacityInput;
uint32_t vertexCountOutput;
XrVector3f* vertexPositions;
XrVector3f* vertexNormals;
uint8_t* vertexSemantics;
uint32_t indexCapacityInput;
uint32_t indexCountOutput;
uint32_t* indices;
} XrSceneSubmeshDataANDROID;
Opisy członków
typeto XrStructureType tej struktury.nexttoNULLlub wskaźnik do następnej struktury w łańcuchu struktur. W podstawowej specyfikacji OpenXR ani w tym rozszerzeniu nie zdefiniowano takich struktur.submeshIdto identyfikator XrUuid identyfikujący podsiatkę.vertexCapacityInputto pojemnośćvertexPositions,vertexNormalsivertexSemanticslub 0 , aby pobrać wymaganą pojemność.vertexCountOutputto wskaźnik liczby zapisanych wartościvertexPositions,vertexNormalsivertexSemanticslub wskaźnik wymaganej pojemności w przypadku, gdyvertexCapacityInputjest niewystarczająca.vertexPositionsto tablica XrVector3f, do której środowisko wykonawcze będzie przekazywać pozycje wierzchołków podsiatki.vertexNormalsto tablica XrVector3f, do której środowisko wykonawcze będzie zapisywać wektory normalne wierzchołków podsiatki. To pole może pozostaćNULL, jeśli aplikacja utworzyła tracker z wyłączonymi wektorami normalnymi.vertexSemanticsto tablicauint8_t, do której środowisko wykonawcze będzie zapisywać semantykę wierzchołków podsiatki. To pole może pozostaćNULL, jeśli aplikacja utworzyła moduł śledzący zXR_SCENE_MESH_SEMANTIC_LABEL_SET_NONE_ANDROIDustawioną etykietą semantyczną.indexCapacityInputto pojemnośćindiceslub 0 , aby pobrać wymaganą pojemność.indexCountOutputto wskaźnik liczby zapisanych bajtówindiceslub wskaźnik wymaganej pojemności w przypadku, gdyvertexCapacityInputjest niewystarczająca.indicesto tablicauint32_t, do której środowisko wykonawcze będzie zapisywać indeksy podsiatki.- Szczegółowy opis pobierania wymaganych rozmiarów
vertexPositions,vertexNormals,vertexSemanticsiindicesznajdziesz w rozdziale Parametry rozmiaru bufora.
Prawidłowe użycie (domyślne)
- Rozszerzenie
XR_ANDROID_scene_meshingmusi być włączone przed użyciem XrSceneSubmeshDataANDROID. -
typemusi mieć wartośćXR_TYPE_SCENE_SUBMESH_DATA_ANDROID -
nextmusi mieć wartośćNULLlub być prawidłowym wskaźnikiem do następnej struktury w łańcuchu struktur. - Jeśli
vertexCapacityInputnie jest równe0,vertexPositionsmusi być wskaźnikiem do tablicy strukturvertexCapacityInputXrVector3f. - Jeśli
vertexCapacityInputnie jest równe0,vertexNormalsmusi być wskaźnikiem do tablicy strukturvertexCapacityInputXrVector3f. - Jeśli
vertexCapacityInputnie jest równe0,vertexSemanticsmusi być wskaźnikiem do tablicy wartościvertexCapacityInputuint8_t. - Jeśli
indexCapacityInputnie jest równe0,indicesmusi być wskaźnikiem do tablicy wartościindexCapacityInputuint32_t.
Wyliczenie XrSceneMeshSemanticLabelANDROID to domyślny zestaw etykiet semantycznych, których można używać do etykietowania wierzchołków siatki w celu opisania, na której powierzchni środowiska fizycznego znajduje się dany wierzchołek. Ten zbiór wyliczeniowy jest reprezentowany przez wartość XR_SCENE_MESH_SEMANTIC_LABEL_SET_DEFAULT_ANDROID w XrSceneMeshSemanticLabelSetANDROID .
typedef enum XrSceneMeshSemanticLabelANDROID {
XR_SCENE_MESH_SEMANTIC_LABEL_OTHER_ANDROID = 0,
XR_SCENE_MESH_SEMANTIC_LABEL_FLOOR_ANDROID = 1,
XR_SCENE_MESH_SEMANTIC_LABEL_CEILING_ANDROID = 2,
XR_SCENE_MESH_SEMANTIC_LABEL_WALL_ANDROID = 3,
XR_SCENE_MESH_SEMANTIC_LABEL_TABLE_ANDROID = 4,
XR_SCENE_MESH_SEMANTIC_LABEL_MAX_ENUM_ANDROID = 0x7FFFFFFF
} XrSceneMeshSemanticLabelANDROID;
Wartości wyliczeniowe mają następujące znaczenia:
Opis typu wyliczeniowego
XR_SCENE_MESH_SEMANTIC_LABEL_OTHER_ANDROID
Ta etykieta semantyczna wskazuje, że odpowiedni element siatki reprezentuje nieznany obiekt.
XR_SCENE_MESH_SEMANTIC_LABEL_FLOOR_ANDROID
Ta etykieta semantyczna wskazuje, że odpowiedni element siatki reprezentuje podłogę.
XR_SCENE_MESH_SEMANTIC_LABEL_CEILING_ANDROID
Ta etykieta semantyczna wskazuje, że odpowiedni element siatki reprezentuje sufit.
XR_SCENE_MESH_SEMANTIC_LABEL_WALL_ANDROID
Ta etykieta semantyczna oznacza, że odpowiedni element siatki reprezentuje ścianę.
XR_SCENE_MESH_SEMANTIC_LABEL_TABLE_ANDROID
Ta etykieta semantyczna wskazuje, że odpowiedni element siatki reprezentuje tabelę.
Usuwanie zrzutu siatki sceny
Funkcja xrDestroySceneMeshSnapshotANDROID jest zdefiniowana w ten sposób:
XrResult xrDestroySceneMeshSnapshotANDROID(
XrSceneMeshSnapshotANDROID snapshot);
Opisy parametrów
snapshotto uchwyt XrSceneMeshSnapshotANDROID utworzony wcześniej za pomocą funkcji xrCreateSceneMeshSnapshotANDROID, który zostanie zniszczony przez tę funkcję.
Aplikacja może użyć funkcji xrDestroySceneMeshSnapshotANDROID, aby usunąć migawkę siatki sceny. Po zniszczeniu uchwytu aplikacja nie może już używać go do uzyskiwania informacji ani danych o podsiatce. Uchwyt jest automatycznie niszczony po zniszczeniu trackera, ponieważ uchwyt trackera jest elementem nadrzędnym uchwytu migawki siatki sceny.
Prawidłowe użycie (domyślne)
- Rozszerzenie
XR_ANDROID_scene_meshingmusi być włączone przed wywołaniem funkcji xrDestroySceneMeshSnapshotANDROID. -
snapshotmusi być prawidłowym uchwytem XrSceneMeshSnapshotANDROID
Bezpieczeństwo wątków
- Dostęp do
snapshoti wszystkich uchwytów podrzędnych musi być synchronizowany zewnętrznie.
Kody zwrotne
XR_SUCCESS
XR_ERROR_FUNCTION_UNSUPPORTEDXR_ERROR_HANDLE_INVALIDXR_ERROR_RUNTIME_FAILURE
Przykładowy kod do tworzenia siatki sceny
Poniższy przykładowy kod pokazuje, jak uzyskać dostęp do danych siatki sceny na potrzeby renderowania.
XrInstance instance; // Created at app startup
XrSystemId systemId; // Received from xrGetSystem() at app startup
XrSession session; // Created at app startup
XrSpace appPlaySpace; // Created at app startup
// The function pointers are previously initialized using xrGetInstanceProcAddr.
PFN_xrCreateSceneMeshingTrackerANDROID xrCreateSceneMeshingTrackerANDROID;
PFN_xrDestroySceneMeshingTrackerANDROID xrDestroySceneMeshingTrackerANDROID;
PFN_xrEnumerateSupportedSemanticLabelSetsANDROID xrEnumerateSupportedSemanticLabelSetsANDROID;
PFN_xrCreateSceneMeshSnapshotANDROID xrCreateSceneMeshSnapshotANDROID;
PFN_xrDestroySceneMeshSnapshotANDROID xrDestroySceneMeshSnapshotANDROID;
PFN_xrGetAllSubmeshStatesANDROID xrGetAllSubmeshStatesANDROID;
PFN_xrGetSubmeshDataANDROID xrGetSubmeshDataANDROID;
// Inspect system capability
XrSystemSceneMeshingPropertiesANDROID sceneMeshingProps = {
.type = XR_TYPE_SYSTEM_SCENE_MESHING_PROPERTIES_ANDROID,
};
XrSystemProperties sysProps = {
.type = XR_TYPE_SYSTEM_PROPERTIES,
.next = &sceneMeshingProps
};
CHK_XR(xrGetSystemProperties(instance, systemId, &sysProps));
if (!sceneMeshingProps.supportsSceneMeshing) {
// scene meshing is not supported.
return;
}
uint32_t supportedsemanticLabelSetsCount = 0;
xrEnumerateSupportedSemanticLabelSetsANDROID(
instance, systemId, 0, &supportedsemanticLabelSetsCount, nullptr);
std::vector<XrSceneMeshSemanticLabelSetANDROID> supportedSemanticLabelSets(
supportedsemanticLabelSetsCount);
xrEnumerateSupportedSemanticLabelSetsANDROID(
instance, systemId, supportedsemanticLabelSetsCount,
&supportedsemanticLabelSetsCount, supportedSemanticLabelSets.data());
XrSceneMeshSemanticLabelSetANDROID semanticLabelSet = XR_SCENE_MESH_SEMANTIC_LABEL_SET_NONE_ANDROID;
// Check if system supports XR_SCENE_MESH_SEMANTIC_LABEL_SET_DEFAULT_ANDROID
if (std::find(supportedSemanticLabelSets.begin(), supportedSemanticLabelSets.end(),
XR_SCENE_MESH_SEMANTIC_LABEL_SET_DEFAULT_ANDROID) !=
supportedSemanticLabelSets.end()) {
semanticLabelSet = XR_SCENE_MESH_SEMANTIC_LABEL_SET_DEFAULT_ANDROID;
}
XrSceneMeshingTrackerCreateInfoANDROID trackerCreateInfo = {
.type = XR_TYPE_SCENE_MESHING_TRACKER_CREATE_INFO_ANDROID,
.semanticLabelSet = semanticLabelSet,
.enableNormals = XR_TRUE
};
XrSceneMeshingTrackerANDROID tracker = XR_NULL_HANDLE;
CHK_XR(xrCreateSceneMeshingTrackerANDROID(session, &trackerCreateInfo, &tracker));
XrSceneMeshSnapshotCreationResultANDROID snapshotResult {
.type = XR_TYPE_SCENE_MESH_SNAPSHOT_CREATION_RESULT_ANDROID,
.snapshot = XR_NULL_HANDLE
};
XrSceneMeshSnapshotANDROID& snapshot = snapshotResult.snapshot;
XrSceneMeshSnapshotCreateInfoANDROID createInfo {
.type = XR_TYPE_SCENE_MESH_SNAPSHOT_CREATE_INFO_ANDROID
};
// app update loop
while (true) {
// ...
// For every frame in frame loop
// ...
XrFrameState frameState; // previously returned from xrWaitFrame
const XrTime time = frameState.predictedDisplayTime;
XrBoxf box; // populated with the bounding box of the camera frustum
// ...
createInfo.baseSpace = appPlaySpace;
createInfo.time = time;
createInfo.boundingBox = box;
// Grab the scene mesh snapshot. This way the app can: know all of the submesh infos,
// choose the appropriate submeshes for which to get data, allocate the necessary
// buffer for those submeshes, and then get the data.
CHK_XR(xrCreateSceneMeshSnapshotANDROID(tracker, &createInfo, &snapshotResult));
// check the tracking state
if (snapshotResult.trackingState == XR_SCENE_MESH_TRACKING_STATE_ERROR_ANDROID) {
// unrecoverable error. Exit the app.
if (snapshot != XR_NULL_HANDLE) {
CHK_XR(xrDestroySceneMeshSnapshotANDROID(snapshot));
snapshot = XR_NULL_HANDLE;
}
break;
} else if (snapshotResult.trackingState != XR_SCENE_MESH_TRACKING_STATE_TRACKING_ANDROID) {
// The tracker is not tracking. Try again later.
if (snapshot != XR_NULL_HANDLE) {
CHK_XR(xrDestroySceneMeshSnapshotANDROID(snapshot));
snapshot = XR_NULL_HANDLE;
}
continue;
}
// 2-call idiom for getting submesh states
uint32_t submeshCount = 0;
CHK_XR(xrGetAllSubmeshStatesANDROID(snapshot, 0, &submeshCount, nullptr));
std::vector<XrSceneSubmeshStateANDROID> states(submeshCount, {
.type = XR_TYPE_SCENE_SUBMESH_STATE_ANDROID,
});
CHK_XR(xrGetAllSubmeshStatesANDROID(snapshot, submeshCount, &submeshCount, states.data()));
// To store the poses for the selected submeshes
std::vector<XrPosef> submeshesPoses;
submeshesPoses.reserve(submeshCount);
std::vector<XrSceneSubmeshDataANDROID> submeshes;
submeshes.reserve(submeshCount);
// Iterate the states and determine which submeshes the app wants data for
for (XrSceneSubmeshStateANDROID& state : states) {
// Modify this bool as necessary by looking at states. Maybe state.lastUpdatedTime
// is below a threshold or maybe the bounding box does not intersect with camera view
// frustum (The submesh will be culled).
bool needed;
if (needed) {
// Add the selected submesh to the submeshes list. Set the capacity
// zero for now since the size of the buffer will be determined later.
XrSceneSubmeshDataANDROID submesh {
.type = XR_TYPE_SCENE_SUBMESH_DATA_ANDROID,
.submeshId = state.submeshId,
.vertexCapacityInput = 0,
.vertexCountOutput = 0,
.vertexPositions = nullptr,
.vertexNormals = nullptr,
.vertexSemantics = nullptr,
.indexCapacityInput = 0,
.indexCountOutput = 0,
.indices = nullptr,
};
submeshes.push_back(submesh);
submeshesPoses.push_back(state.submeshPoseInBaseSpace);
}
}
// Grab the data for the selected submeshes using the 2-call idiom.
CHK_XR(xrGetSubmeshDataANDROID(snapshot, submeshes.size(), submeshes.data()));
for (XrSceneSubmeshDataANDROID& submesh : submeshes) {
submesh.vertexCapacityInput = submesh.vertexCountOutput;
submesh.vertexCountOutput = 0;
submesh.vertexPositions = new XrVector3f[submesh.vertexCapacityInput];
submesh.vertexNormals = new XrVector3f[submesh.vertexCapacityInput];
submesh.vertexSemantics = new uint8_t[submesh.vertexCapacityInput];
submesh.indexCapacityInput = submesh.indexCountOutput;
submesh.indexCountOutput = 0;
submesh.indices = new uint32_t[submesh.indexCapacityInput];
}
CHK_XR(xrGetSubmeshDataANDROID(snapshot, submeshes.size(), submeshes.data()));
// Destroy the scene mesh snapshot since we have finally grabbed the submeshes data. In
// next iteration app can: create a new one to get latest mesh data
CHK_XR(xrDestroySceneMeshSnapshotANDROID(snapshot));
snapshot = XR_NULL_HANDLE;
// Iterate the submeshes and get the vertex positions, vertex normals and
// vertex semantics data for the selected submeshes
for (uint32_t i = 0; i < submeshes.size(); i++) {
XrSceneSubmeshDataANDROID& data = submeshes[i];
XrVector3f* vertexPositions = data.vertexPositions;
XrVector3f* vertexNormals = data.vertexNormals;
XrSceneMeshSemanticLabelANDROID* vertexSemantics =
new XrSceneMeshSemanticLabelANDROID[data.vertexCountOutput];
for (uint32_t j = 0; j < data.vertexCountOutput; j++) {
vertexSemantics[j] =
static_cast<XrSceneMeshSemanticLabelANDROID>(data.vertexSemantics[j]);
}
XrPosef pose = submeshesPoses[i];
// *** Use the data as per needs ***
// Release the allocated memory for the data buffers when done using
delete [] vertexSemantics;
delete [] data.vertexPositions;
delete [] data.vertexNormals;
delete [] data.vertexSemantics;
delete [] data.indices;
}
// ...
// Finish frame loop
// ...
}
CHK_XR(xrDestroySceneMeshingTrackerANDROID(tracker));
Nowe typy obiektów
Nowe polecenia
- xrCreateSceneMeshSnapshotANDROID
- xrCreateSceneMeshingTrackerANDROID
- xrDestroySceneMeshSnapshotANDROID
- xrDestroySceneMeshingTrackerANDROID
- xrEnumerateSupportedSemanticLabelSetsANDROID
- xrGetAllSubmeshStatesANDROID
- xrGetSubmeshDataANDROID
Nowe struktury
- XrSceneMeshSnapshotCreateInfoANDROID
- XrSceneMeshSnapshotCreationResultANDROID
- XrSceneMeshingTrackerCreateInfoANDROID
- XrSceneSubmeshDataANDROID
- XrSceneSubmeshStateANDROID
Rozszerzanie XrSystemProperties :
Nowe wartości w polu enum
Nowe stałe wyliczeniowe
XR_ANDROID_SCENE_MESHING_EXTENSION_NAMEXR_ANDROID_scene_meshing_SPEC_VERSIONRozszerzanie XrObjectType :
XR_OBJECT_TYPE_SCENE_MESHING_TRACKER_ANDROIDXR_OBJECT_TYPE_SCENE_MESH_SNAPSHOT_ANDROID
Rozszerzanie XrStructureType :
XR_TYPE_SCENE_MESHING_TRACKER_CREATE_INFO_ANDROIDXR_TYPE_SCENE_MESH_SNAPSHOT_CREATE_INFO_ANDROIDXR_TYPE_SCENE_MESH_SNAPSHOT_CREATION_RESULT_ANDROIDXR_TYPE_SCENE_SUBMESH_DATA_ANDROIDXR_TYPE_SCENE_SUBMESH_STATE_ANDROIDXR_TYPE_SYSTEM_SCENE_MESHING_PROPERTIES_ANDROID
Problemy
Historia zmian
Wersja 3, 15 maja 2025 r. (Salar Khan)
- Wstępny opis rozszerzenia