Attention: Here be dragons

This is the latest (unstable) version of this documentation, which may document features not available in or compatible with released stable versions of Godot.

OpenXRSpatialAnchorCapability

Експериментальний: This class may be changed or removed in future versions.

Успадковує: OpenXRExtensionWrapper < Object

Реалізація для обробки логіки прив'язки просторових сутностей.

Опис

Це внутрішній клас, який обробляє розширення просторової сутності прив'язки OpenXR.

Методи

OpenXRFutureResult

create_default_persistence_context(user_callback: Callable = Callable())

OpenXRAnchorTracker

create_new_anchor(transform: Transform3D, spatial_context: RID = RID(), next: OpenXRStructureBase = null)

OpenXRFutureResult

create_persistence_context(scope: PersistenceScope, user_callback: Callable = Callable())

void

do_entity_update(spatial_context: RID, component_data: Array[OpenXRSpatialComponentData], next_snapshot_create: OpenXRStructureBase = null, next_snapshot_query: OpenXRStructureBase = null)

void

free_persistence_context(persistence_context: RID)

int

get_persistence_context_handle(persistence_context: RID) const

bool

is_persistence_scope_supported(scope: PersistenceScope)

bool

is_spatial_anchor_supported()

bool

is_spatial_persistence_supported()

OpenXRFutureResult

persist_anchor(anchor_tracker: OpenXRAnchorTracker, persistence_context: RID = RID(), user_callback: Callable = Callable())

void

remove_anchor(anchor_tracker: OpenXRAnchorTracker)

OpenXRFutureResult

start_entity_discovery(spatial_context: RID, component_data: Array[OpenXRSpatialComponentData], next_snapshot_create: OpenXRStructureBase = null, next_snapshot_query: OpenXRStructureBase = null, user_callback: Callable = Callable())

OpenXRFutureResult

unpersist_anchor(anchor_tracker: OpenXRAnchorTracker, persistence_context: RID = RID(), user_callback: Callable = Callable())


Переліки

enum PersistenceScope: 🔗

PersistenceScope PERSISTENCE_SCOPE_SYSTEM_MANAGED = 1

Надає програмі доступ лише для читання (тобто програма не може змінювати цю область видимості) до просторових сутностей, що зберігаються та керуються системою. Програма може використовувати UUID у компоненті persistent для цієї області видимості, щоб співвідносити сутності в різних просторових контекстах та перезавантаженнях пристроїв.

PersistenceScope PERSISTENCE_SCOPE_LOCAL_ANCHORS = 1000781000

Операції зі збереженням даних та доступ до даних обмежені просторовими якорями, на одному пристрої, для одного користувача та однієї програми (за допомогою функцій persist_anchor() та unpersist_anchor())


Описи методів

OpenXRFutureResult create_default_persistence_context(user_callback: Callable = Callable()) 🔗

Викликає метод create_persistence_context() із конфігурацією, яка, ймовірно, сумісна з середовищем виконання XR.

Параметр user_callback викликається під час створення контексту.


OpenXRAnchorTracker create_new_anchor(transform: Transform3D, spatial_context: RID = RID(), next: OpenXRStructureBase = null) 🔗

Створює нову прив'язку, яку відстежуватиме середовище виконання XR. transform повинен бути трансформацією в локальному просторі вашого вузла XROrigin3D. Якщо spatial_context не вказано, буде використано значення за замовчуванням, для чого необхідно встановити ProjectSettings.xr/openxr/extensions/spatial_entity/enable_builtin_anchor_detection. Повернутий трекер буде відстежувати місце розташування у випадку, якщо наш опорний простір зміниться.

next повинен бути дійсним наступним об’єктом для ланцюга XrSpatialAnchorCreateInfoEXT.


OpenXRFutureResult create_persistence_context(scope: PersistenceScope, user_callback: Callable = Callable()) 🔗

Створює новий контекст персистенції для зберігання постійних даних.

Примітка: Це асинхронний метод, який повертає об'єкт OpenXRFutureResult для відстеження статусу. Відкидання цього об'єкта не скасує процес створення. У разі успіху буде викликано user_callback, якщо його вказано. Результуючим значенням для цієї функції є RID для нашого контексту персистенції.


void do_entity_update(spatial_context: RID, component_data: Array[OpenXRSpatialComponentData], next_snapshot_create: OpenXRStructureBase = null, next_snapshot_query: OpenXRStructureBase = null) 🔗

Викликає методи OpenXRSpatialEntityExtension.update_spatial_entities() та OpenXRSpatialEntityExtension.query_snapshot() із використанням опорних об’єктів, пов’язаних із spatial_context.

component_data — це об’єкти типу OpenXRSpatialComponentData, які потрібно оновити для цієї функції опорного об’єкта.

Якщо next_snapshot_create не є нульовим, передайте його до параметра next у OpenXRSpatialEntityExtension.update_spatial_entities().

Якщо next_snapshot_query не дорівнює null, передайте це до параметра next у OpenXRSpatialEntityExtension.query_snapshot().


void free_persistence_context(persistence_context: RID) 🔗

Звільняє контекст персистенції, створений раніше за допомогою create_persistence_context().


int get_persistence_context_handle(persistence_context: RID) const 🔗

Повертає внутрішній дескриптор для цього контексту персистенції.

Примітка: Для реалізацій GDExtension.


bool is_persistence_scope_supported(scope: PersistenceScope) 🔗

Повертає true, якщо ця область видимості підтримується нашою можливістю просторового прив'язування.

Примітка: Дійсно лише після створення екземпляра OpenXR.


bool is_spatial_anchor_supported() 🔗

Повертає true, якщо просторові прив'язки підтримуються апаратним забезпеченням. Повертає дійсне значення лише після ініціалізації OpenXR.


bool is_spatial_persistence_supported() 🔗

Повертає true, якщо постійні просторові прив'язки підтримуються апаратним забезпеченням. Повертає дійсне значення лише після ініціалізації OpenXR.


OpenXRFutureResult persist_anchor(anchor_tracker: OpenXRAnchorTracker, persistence_context: RID = RID(), user_callback: Callable = Callable()) 🔗

Змінює цей якір на постійний. Це означає, що його розташування буде збережено на пристрої, а якір буде відновлено під час наступного запуску вашої програми. Якщо persistence_context не вказано, буде використано значення за замовчуванням, для цього потрібно встановити ProjectSettings.xr/openxr/extensions/spatial_entity/enable_builtin_anchor_detection.

Примітка: Це асинхронний метод, який повертає об'єкт OpenXRFutureResult для відстеження статусу, відкидання цього об'єкта не скасує процес створення. У разі успіху буде викликано user_callback, якщо його вказано. Результуючим значенням для цієї функції є логічне значення, яке буде встановлено на true після успішного завершення.


void remove_anchor(anchor_tracker: OpenXRAnchorTracker) 🔗

Вилучає якір, попередньо створений за допомогою create_new_anchor(). Якщо цей якір був постійним, спочатку потрібно викликати unpersist_anchor() та дочекатися його зворотного виклику.


OpenXRFutureResult start_entity_discovery(spatial_context: RID, component_data: Array[OpenXRSpatialComponentData], next_snapshot_create: OpenXRStructureBase = null, next_snapshot_query: OpenXRStructureBase = null, user_callback: Callable = Callable()) 🔗

Викликає методи OpenXRSpatialEntityExtension.discover_spatial_entities та OpenXRSpatialEntityExtension.query_snapshot із використанням опорних об’єктів, пов’язаних із spatial_context.

component_data — це об’єкти типу OpenXRSpatialComponentData, які потрібно виявити для цієї функції опорного об’єкта.

Якщо next_snapshot_create не є нульовим, передайте його до параметра next у OpenXRSpatialEntityExtension.discover_spatial_entities().

Якщо next_snapshot_query не дорівнює нулю, передайте це до параметра next у OpenXRSpatialEntityExtension.query_snapshot().

user_callback, якщо не дорівнює нулю, викликається з двома параметрами, зазвичай двічі. Перший параметр — це RID знімка виявлення, а другий — логічне значення, де false вказує, що знімок виявлення готується до обробки, а true — що знімок виявлення вже оброблено і component_data містить дійсні дані. Другий виклик пропускається, якщо сталася помилка.

Повернутий OpenXRFutureResult ідентичний результату, що повертається з OpenXRSpatialEntityExtension.discover_spatial_entities().


OpenXRFutureResult unpersist_anchor(anchor_tracker: OpenXRAnchorTracker, persistence_context: RID = RID(), user_callback: Callable = Callable()) 🔗

Вилучає постійні дані з цього прив'язки. Середовище виконання не відтворить прив'язку після перезапуску програми. Якщо persistence_context не вказано, буде використано значення за замовчуванням, для цього потрібно встановити ProjectSettings.xr/openxr/extensions/spatial_entity/enabled.

Примітка: Це асинхронний метод, який повертає об'єкт OpenXRFutureResult для відстеження стану. Відкидання цього об'єкта не скасує процес створення. У разі успіху буде викликано user_callback, якщо його вказано. Результуючим значенням для цієї функції є логічне значення, яке буде встановлено на true після успішного завершення.