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

Sperimentale: This class may be changed or removed in future versions.

Eredita: OpenXRExtensionWrapper < Object

Implementazione per gestire la logica di ancoraggio delle entità spaziali.

Descrizione

Questa è una classe interna che gestisce l'estensione di entità spaziali di ancoraggio di OpenXR.

Metodi

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())


Enumerazioni

enum PersistenceScope: 🔗

PersistenceScope PERSISTENCE_SCOPE_SYSTEM_MANAGED = 1

Fornisce all'applicazione l'accesso in sola lettura (ovvero, l'applicazione non può modificare questo ambito) alle entità spaziali memorizzate e gestite dal sistema. L'applicazione può utilizzare l'UUID nel componente di persistenza per questo ambito per correlare le entità tra contesti spaziali e riavvii del dispositivo.

PersistenceScope PERSISTENCE_SCOPE_LOCAL_ANCHORS = 1000781000

Le operazioni di persistenza e l'accesso ai dati sono limitati agli ancoraggi spaziali, sullo stesso dispositivo, per lo stesso utente e la stessa applicazione (utilizzando le funzioni persist_anchor() e unpersist_anchor())


Descrizioni dei metodi

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

Chiama create_persistence_context() con una configurazione che probabilmente funziona con il runtime XR.

user_callback viene chiamato quando il contesto viene creato.


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

Crea un nuovo punto di ancoraggio che sarà tracciato dal runtime XR. transform deve essere una trasformazione nello spazio locale del nodo XROrigin3D. Se spatial_context non è specificato, sarà utilizzato il valore predefinito; ciò richiede che ProjectSettings.xr/openxr/extensions/spatial_entity/enable_builtin_anchor_detection sia impostato. Il tracker restituito traccerà la posizione nel caso in cui lo spazio di riferimento cambi.

next deve essere un oggetto next valido per la catena XrSpatialAnchorCreateInfoEXT.


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

Crea un nuovo contesto di persistenza per memorizzare dati persistenti.

Nota: Questo è un metodo asincrono e restituisce un oggetto OpenXRFutureResult con cui tenere traccia dello stato; scartare questo oggetto non annullerà il processo di creazione. In caso di successo, verrà richiamato user_callback se specificato. Il valore risultante da questa funzione è il RID del nostro contesto di persistenza.


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

Chiama OpenXRSpatialEntityExtension.discover_spatial_entities() e OpenXRSpatialEntityExtension.query_snapshot() con le entità di ancoraggio associate al contesto spaziale spatial_context.

component_data sono i OpenXRSpatialComponentData da aggiornare per questa capacità di ancoraggio.

Se next_snapshot_create non è nullo, passalo al parametro next di OpenXRSpatialEntityExtension.discover_spatial_entities().

Se next_snapshot_query non è nullo, passalo al parametro next di OpenXRSpatialEntityExtension.query_snapshot().


void free_persistence_context(persistence_context: RID) 🔗

Libera un contesto di persistenza creato in precedenza con create_persistence_context().


int get_persistence_context_handle(persistence_context: RID) const 🔗

Restituisce il gestore interno di questo contesto di persistenza.

Nota: Per implementazioni in GDExtension.


bool is_persistence_scope_supported(scope: PersistenceScope) 🔗

Restituisce true se questo ambito di persistenza è supportato dalla nostra capacità di ancoraggio spaziale.

Nota: Valido solo dopo la creazione di un'istanza OpenXR.


bool is_spatial_anchor_supported() 🔗

Restituisce true se gli ancoraggi spaziali sono supportati dall'hardware. Restituisce un valore valido solo dopo aver inizializzato OpenXR.


bool is_spatial_persistence_supported() 🔗

Restituisce true se gli ancoraggi spaziali persistenti sono supportati dall'hardware. Restituisce un valore valido solo dopo aver inizializzato OpenXR.


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

Trasforma questo ancoraggio in un ancoraggio persistente. Ciò significa che la sua posizione sarà memorizzata sul dispositivo e l'ancoraggio verrà ripristinato al prossimo avvio dell'applicazione. Se persistence_context non è specificato, verrà utilizzato il valore predefinito; ciò richiede che ProjectSettings.xr/openxr/extensions/spatial_entity/enable_builtin_anchor_detection sia impostato.

Nota: Questo è un metodo asincrono e restituisce un oggetto OpenXRFutureResult con cui tenere traccia dello stato; scartare questo oggetto non annullerà il processo di creazione. In caso di successo, verrà richiamato user_callback se specificato. Il valore risultante da questa funzione è un valore booleano che sarà impostato su true in caso di successo.


void remove_anchor(anchor_tracker: OpenXRAnchorTracker) 🔗

Rimuove un ancoraggio creato in precedenza con create_new_anchor(). Se questo ancoro era persistente, è necessario prima chiamare unpersist_anchor() e attendere il suo callback.


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()) 🔗

Chiama OpenXRSpatialEntityExtension.discover_spatial_entities() e OpenXRSpatialEntityExtension.query_snapshot() con le entità di ancoraggio associate al contesto spaziale spatial_context.

component_data sono i OpenXRSpatialComponentData da individuare per questa capacità di ancoraggio.

Se next_snapshot_create non è nullo, passalo al parametro next di OpenXRSpatialEntityExtension.discover_spatial_entities().

Se next_snapshot_query non è nullo, passalo al parametro next di OpenXRSpatialEntityExtension.query_snapshot().

user_callback, se non è nullo, viene chiamato con due parametri, solitamente due volte. Il primo parametro è l'RID dello snapshot di individuazione e il secondo parametro è un valore booleano: false indica che lo snapshot di individuazione sta per essere elaborato, mentre true indica che lo snapshot di individuazione è stato elaborato e che component_data contiene dati validi. La seconda chiamata viene saltata in caso di errore.

Il OpenXRFutureResult restituito è identico a quello restituito da OpenXRSpatialEntityExtension.discover_spatial_entities().


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

Rimuove i dati persistenti da questo ancoraggio. Il runtime non ricreerà l'ancoraggio al riavvio dell'applicazione. Se persistence_context non è specificato, verrà utilizzato il valore predefinito; ciò richiede che ProjectSettings.xr/openxr/extensions/spatial_entity/enabled sia impostato.

Nota: Questo è un metodo asincrono e restituisce un oggetto OpenXRFutureResult con cui tenere traccia dello stato; scartare questo oggetto non annullerà il processo di creazione. In caso di successo, verrà richiamato user_callback se specificato. Il valore risultante da questa funzione è un valore booleano che sarà impostato su true in caso di successo.