XR_EXT_spatial_mesh_tracking
Name String
XR_EXT_spatial_mesh_tracking
Тип расширения
Расширение экземпляра
Зарегистрированный добавочный номер
784
Revision
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 .
Среда выполнения, поддерживающая 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должен быть указателем на массив изenabledComponentCountдопустимых значений XrSpatialComponentTypeEXT. - Значение параметра
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
Ограниченный 3D-компонент
Ограниченный 3D-компонент предоставляет центр и границы объекта, на котором он находится. Данные, предоставляемые этим компонентом, упрощают приложениям отбор объектов, находящихся за пределами пирамиды видимости.
Подробнее об ограниченных 3D-моделях…
Компонент "3D-сетка"
Компонент Mesh 3D предоставляет 3D-сетку объекта, на котором он находится. Подробнее о 3D-сетке…
Объемная сегментация (разделение на фрагменты)
Среда выполнения может сегментировать сетку на объемные блоки (фрагменты), чтобы приложениям было проще отсекать блоки сетки за пределами пирамиды видимости. В этом случае среда выполнения должна обрабатывать каждый такой блок как отдельный объект и иметь набор гарантированных компонентов для каждого такого объекта (блока). Если среда выполнения предоставляет водонепроницаемую сетку таким образом, каждый объемный блок по отдельности не является водонепроницаемым, но группа блоков вместе образует водонепроницаемую сетку. В таком случае среда выполнения должна добавить компонент XR_SPATIAL_COMPONENT_TYPE_PARENT_EXT в каждый объект (объемный блок), а значение родительского объекта для блоков, которые вместе образуют водонепроницаемую сетку, должно быть одинаковым. Это позволяет приложению определить, какие фрагменты вместе образуют замкнутую сетку.
Сетки соседних объемных блоков могут иметь общие вершины, но треугольники одного объемного блока не должны перекрываться с треугольниками соседнего объема.
Дополнительные компоненты
Нормали сетки
Данные компонента
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 для какой-либо возможности, приложение может включить ее, добавив перечисление в список 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 для семантических меток вершин или треугольников. См. Семантические метки вершин сетки и Семантические метки треугольников сетки.
Расширения, которые дополняют этот набор семантических ярлыков или добавляют собственный набор для сеток, должны следовать рекомендациям из раздела Рекомендации по созданию и расширению семантических ярлыков .
Описание перечисления
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 .
Допустимое использование (неявное)
- Перед использованием XrSpatialComponentMesh3DVertexSemanticLabelsListEXT необходимо включить расширение
XR_EXT_spatial_mesh_tracking. -
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 для какой-либо возможности, приложение может включить ее, добавив перечисление в список 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 для какой-либо возможности, приложение может включить ее, добавив перечисление в список 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 .
Новые структуры
- XrSpatialCapabilityConfigurationMeshTrackingEXT
Расширение XrSpatialCapabilityConfigurationMeshTrackingEXT :
Расширение XrSpatialComponentDataQueryResultEXT :
Новые перечисления
Новые константы перечисления
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, 2 ноября 2025 г. (Нихав Джайн, Google)
- Описание расширения