OpenXRSpatialComponentMarkerList
Данные spatial snapshot: OpenXRSpatialComponentMarkerList.
Контейнер native component data для QuerySnapshot, не tracker, игровая Entity или готовая геометрия. В массиве запроса первым должен идти OpenXRSpatialQueryResultData; индексы остальных компонентов относятся к тем же строкам. Проверяйте поддержку компонента, успешный query и state строки до чтения значений.
SetCapacity выделяет память, но не делает её данными устройства. GetCapacity у query-result показывает длину выделенного массива; она может быть ненулевой без единого запроса. При ошибке/незавершённом запросе не используйте прежнее содержимое. Финальные output counts между двумя проходами отдельно публично не доступны; изменение количества результатов в runtime здесь не проверено.
Buffer getters требуют тот же живой snapshot. Скопируйте нужные массивы/строки до FreeSpatialSnapshot или конца borrowed capability callback. Не освобождайте snapshot повторно; свои контейнеры держите живыми на время использования. Raw poses не являются готовыми GlobalTransform и не применяют WorldOrigin/reference frame/WorldScale автоматически.
Копирует payload строки из того же живого snapshot: String или PackedByteArray для соответствующего buffer type, иначе Nil. Нужны успешный query и MarkerType; это не всегда строка QR и не MarkerId. Проверяйте VariantType и сопоставляйте разрешённые идентификаторы приложения, не произвольные пути/код.
Рабочая интеграция. На Windows XR-off выполнены 11 проверок metadata/capacity/virtual dispatch без чтения незаполненной памяти. Реальный snapshot, buffer values, pose/UUID/marker decoding, шлем и export не проверены. Движок не менялся.
Объявления сверены с C# SDK 1.0.0. Раскройте имя, чтобы увидеть сигнатуры и описание.
Конструкторы1
OpenXRSpatialComponentMarkerListКонструктор
public OpenXRSpatialComponentMarkerList();Создаёт принадлежащий вызывающему RefCounted контейнер query data с пустыми буферами. Не выполняет QuerySnapshot и не получает данные устройства. Выделение через SetCapacity не заполняет строки. Удерживайте свои контейнеры до окончания native запроса; provider-owned ресурсы не освобождайте.
Методы3
GetMarkerDataVariant
public Variant GetMarkerData(Rid snapshot, long index);Копирует payload строки из того же живого snapshot: String или PackedByteArray для соответствующего buffer type, иначе Nil. Нужны успешный query и MarkerType; это не всегда строка QR и не MarkerId. Проверяйте VariantType и сопоставляйте разрешённые идентификаторы приложения, не произвольные пути/код.
| Имя | Тип | По умолчанию |
|---|---|---|
snapshot | Rid | — |
index | long | — |
snapshotЖивой snapshot RID именно этого результата; копируйте buffer data до его освобождения. IsValid не проверяет живого владельца.
indexНулевой index заполненной строки того же успешного snapshot query, не entity ID. Совпадает с index в OpenXRSpatialQueryResultData; одной выделенной capacity недостаточно.
VariantКопирует payload строки из того же живого snapshot: String или PackedByteArray для соответствующего buffer type, иначе Nil. Нужны успешный query и MarkerType; это не всегда строка QR и не MarkerId. Проверяйте VariantType и сопоставляйте разрешённые идентификаторы приложения, не произвольные пути/код.
GetMarkerIduint
public uint GetMarkerId(long index);Числовой uint marker ID заполненной строки. Для ArUco/AprilTag сопоставляйте тип и словарь вместе с ID. Ноль сам по себе допустим и не является UUID/payload; при неверном index также возвращается 0 с ошибкой.
| Имя | Тип | По умолчанию |
|---|---|---|
index | long | — |
indexНулевой index заполненной строки того же успешного snapshot query, не entity ID. Совпадает с index в OpenXRSpatialQueryResultData; одной выделенной capacity недостаточно.
uintЧисловой uint marker ID заполненной строки. Для ArUco/AprilTag сопоставляйте тип и словарь вместе с ID. Ноль сам по себе допустим и не является UUID/payload; при неверном index также возвращается 0 с ошибкой.
GetMarkerTypeOpenXRSpatialComponentMarkerList.MarkerType
public OpenXRSpatialComponentMarkerList.MarkerType GetMarkerType(long index);Преобразует runtime capability строки в Qrcode, MicroQrcode, Aruco, AprilTag либо Unknown. Не является прямым cast любого capability ID и не доказывает наличие декодированного payload. Проверяйте Unknown и state перед использованием остальных данных.
| Имя | Тип | По умолчанию |
|---|---|---|
index | long | — |
indexНулевой index заполненной строки того же успешного snapshot query, не entity ID. Совпадает с index в OpenXRSpatialQueryResultData; одной выделенной capacity недостаточно.
OpenXRSpatialComponentMarkerList.MarkerTypeПреобразует runtime capability строки в Qrcode, MicroQrcode, Aruco, AprilTag либо Unknown. Не является прямым cast любого capability ID и не доказывает наличие декодированного payload. Проверяйте Unknown и state перед использованием остальных данных.
OpenXRSpatialComponentMarkerList.MarkerType
| Значение | Описание |
|---|---|
AprilTag = 4 | Маркер основанный на Эйприл Тэг. |
Aruco = 3 | Маркер основан на коде ArUco. |
Max = 5 | Максимальное значение для этого перечисления. |
MicroQrcode = 2 | Маркер на основе микро-QR-кода. |
Qrcode = 1 | Маркер на основе QR-кода. |
Unknown = 0 | Неизвестный или неуказанный тип маркера. |