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.

OpenXRInterface

Eredita: XRInterface < RefCounted < Object

La nostra interfaccia OpenXR.

Descrizione

L'interfaccia OpenXR consente a Godot di interagire con le esecuzioni OpenXR e di creare esperienze e giochi XR.

A causa delle esigenze di OpenXR, questa interfaccia funziona in modo leggermente diverso rispetto ad altre interfacce XR basate sulle estensioni. Deve essere inizializzata all'avvio di Godot. È necessario abilitare OpenXR, le quali impostazioni sono presenti nelle impostazioni del progetto di gioco sotto l'intestazione XR. È necessario contrassegnare una viewport per l'uso con XR affinché Godot sappia quale risultato di rendering deve essere trasmesso al visore.

Tutorial

Proprietà

float

display_refresh_rate

0.0

bool

foveation_dynamic

false

int

foveation_level

0

bool

foveation_with_subsampled_images

false

float

render_target_size_multiplier

1.0

float

vrs_min_radius

20.0

float

vrs_strength

1.0

Metodi

Array

get_action_sets() const

Array

get_available_display_refresh_rates() const

Vector3

get_hand_joint_angular_velocity(hand: Hand, joint: HandJoints) const

BitField[HandJointFlags]

get_hand_joint_flags(hand: Hand, joint: HandJoints) const

Vector3

get_hand_joint_linear_velocity(hand: Hand, joint: HandJoints) const

Vector3

get_hand_joint_position(hand: Hand, joint: HandJoints) const

float

get_hand_joint_radius(hand: Hand, joint: HandJoints) const

Quaternion

get_hand_joint_rotation(hand: Hand, joint: HandJoints) const

HandTrackedSource

get_hand_tracking_source(hand: Hand) const

HandMotionRange

get_motion_range(hand: Hand) const

SessionState

get_session_state()

bool

is_action_set_active(name: String) const

bool

is_eye_gaze_interaction_supported()

bool

is_foveation_supported() const

bool

is_hand_interaction_supported() const

bool

is_hand_tracking_supported()

bool

is_user_presence_supported() const

bool

is_user_present() const

void

set_action_set_active(name: String, active: bool)

void

set_cpu_level(level: PerfSettingsLevel)

void

set_gpu_level(level: PerfSettingsLevel)

void

set_motion_range(hand: Hand, motion_range: HandMotionRange)


Segnali

cpu_level_changed(sub_domain: int, from_level: int, to_level: int) 🔗

Informa il dispositivo che il livello di prestazioni della CPU è cambiato nel sottodominio specificato.


gpu_level_changed(sub_domain: int, from_level: int, to_level: int) 🔗

Informa il dispositivo che il livello di prestazioni della GPU è cambiato nel sottodominio specificato.


instance_exiting() 🔗

Informa che la nostra istanza OpenXR è in fase di chiusura.


pose_recentered() 🔗

Informa che l'utente ha richiesto un ricentramento della posizione del giocatore.


refresh_rate_changed(refresh_rate: float) 🔗

Informa l'utente che la frequenza di aggiornamento dell'HMD è cambiata.

Nota: Emesso solo se l'esecuzione XR supporta l'estensione della frequenza di aggiornamento.


session_begun() 🔗

Informa che la nostra sessione OpenXR è stata avviata.


session_focussed() 🔗

Informa che la nostra sessione OpenXR è ora focalizzata, ad esempio l'output viene inviato all'HMD e stiamo ricevendo input XR.


session_loss_pending() 🔗

Informa che la nostra sessione OpenXR sta per andare persa.


session_stopping() 🔗

Informa che la nostra sessione OpenXR si sta interrompendo.


session_synchronized() 🔗

Informa che la nostra sessione OpenXR è stata sincronizzata.


session_visible() 🔗

Informa che la nostra sessione OpenXR è ora visibile, ad esempio l'output viene inviato all'HMD e ma non riceviamo input XR.


user_presence_changed(is_user_present: bool) 🔗

Signal emitted when the user presence value changes.

Note: This signal will not be emitted during application startup and application shutdown. Developers should assume user presence is gained on startup and lost on shutdown.


Enumerazioni

enum SessionState: 🔗

SessionState SESSION_STATE_UNKNOWN = 0

Lo stato della sessione è sconosciuto, non abbiamo ancora provato a configurare OpenXR.

SessionState SESSION_STATE_IDLE = 1

Lo stato iniziale dopo la creazione della sessione OpenXR o dopo la sua eliminazione.

SessionState SESSION_STATE_READY = 2

OpenXR è pronto per iniziare la nostra sessione. session_begun viene emesso quando si passa a questo stato.

SessionState SESSION_STATE_SYNCHRONIZED = 3

L'applicazione ha sincronizzato il suo ciclo di frame con l'esecuzione, ma nulla è stato renderizzando ancora. session_synchronized viene emesso quando si passa a questo stato.

SessionState SESSION_STATE_VISIBLE = 4

L'applicazione ha sincronizzato il suo ciclo di frame con l'esecuzione e si sta renderizzando il risultato all'utente, tuttavia non è stato ricevuto alcun input dall'utente. session_visible viene emesso quando si passa a questo stato.

Nota: Questo è lo stato attuale appena prima di ottenere lo stato focalizzato, ogni volta che l'utente apre un menu di sistema, passa a un'altra applicazione o si toglie il visore.

SessionState SESSION_STATE_FOCUSED = 5

L'applicazione ha sincronizzato il suo ciclo di frame con l'esecuzione, si sta renderizzando il risultato all'utente e si sta ricevendo l'input XR. session_focussed viene emesso quando si passa a questo stato.

Nota: Questo è lo stato in cui si troverà OpenXR quando l'utente potrà interagire completamente con il gioco.

SessionState SESSION_STATE_STOPPING = 6

La nostra sessione è in interruzione. session_stopping viene emesso quando si passa a questo stato.

SessionState SESSION_STATE_LOSS_PENDING = 7

La sessione sta per perdersi. session_loss_pending viene emesso quando si passa a questo stato.

SessionState SESSION_STATE_EXITING = 8

The OpenXR instance is about to be destroyed and we're exiting. instance_exiting is emitted when we change to this state.


enum Hand: 🔗

Hand HAND_LEFT = 0

Mano sinistra.

Hand HAND_RIGHT = 1

Mano destra.

Hand HAND_MAX = 2

Valore massimo per la enumeratore della mano.


enum HandMotionRange: 🔗

HandMotionRange HAND_MOTION_RANGE_UNOBSTRUCTED = 0

Intervallo totale della mano: se l'utente chiude le mani, si forma un pugno pieno.

HandMotionRange HAND_MOTION_RANGE_CONFORM_TO_CONTROLLER = 1

Conforme al controller: se l'utente chiude le mani, i dati tracciati si adattano alla forma del controller.

HandMotionRange HAND_MOTION_RANGE_MAX = 2

Valore massimo per l'enumeratore della gamma di movimento.


enum HandTrackedSource: 🔗

HandTrackedSource HAND_TRACKED_SOURCE_UNKNOWN = 0

La sorgente dei dati di tracciamento della mano è sconosciuta (probabilmente l'estensione non è supportata).

HandTrackedSource HAND_TRACKED_SOURCE_UNOBSTRUCTED = 1

La sorgente del tracciamento della mano non è ostruita, il che significa che è utilizzato un metodo accurato di tracciamento delle mani, ad esempio tracciamento ottico delle mani, guanti per dati, ecc.

HandTrackedSource HAND_TRACKED_SOURCE_CONTROLLER = 2

La sorgente dei dati di tracciamento della mano è un controller, le posizioni delle articolazioni sono dedotte dagli input del controller.

HandTrackedSource HAND_TRACKED_SOURCE_MAX = 3

Rappresenta la dimensione dell'enumerazione HandTrackedSource.


enum HandJoints: 🔗

HandJoints HAND_JOINT_PALM = 0

Articolazione del palmo.

HandJoints HAND_JOINT_WRIST = 1

Articolazione del polso.

HandJoints HAND_JOINT_THUMB_METACARPAL = 2

Articolazione metacarpale del pollice.

HandJoints HAND_JOINT_THUMB_PROXIMAL = 3

Articolazione prossimale del pollice.

HandJoints HAND_JOINT_THUMB_DISTAL = 4

Articolazione distale del pollice.

HandJoints HAND_JOINT_THUMB_TIP = 5

Articolazione della punta del pollice.

HandJoints HAND_JOINT_INDEX_METACARPAL = 6

Articolazione metacarpale dell'indice.

HandJoints HAND_JOINT_INDEX_PROXIMAL = 7

Articolazione prossimale della falange dell'indice.

HandJoints HAND_JOINT_INDEX_INTERMEDIATE = 8

Articolazione intermedia della falange dell'indice.

HandJoints HAND_JOINT_INDEX_DISTAL = 9

Articolazione distale della falange dell'indice.

HandJoints HAND_JOINT_INDEX_TIP = 10

Articolazione della punta dell'indice.

HandJoints HAND_JOINT_MIDDLE_METACARPAL = 11

Articolazione metacarpale del dito medio.

HandJoints HAND_JOINT_MIDDLE_PROXIMAL = 12

Articolazione prossimale della falange del dito medio.

HandJoints HAND_JOINT_MIDDLE_INTERMEDIATE = 13

Articolazione intermedia della falange del dito medio.

HandJoints HAND_JOINT_MIDDLE_DISTAL = 14

Articolazione distale della falange del dito medio.

HandJoints HAND_JOINT_MIDDLE_TIP = 15

Articolazione della punta del dito medio.

HandJoints HAND_JOINT_RING_METACARPAL = 16

Articolazione metacarpale dell'anulare.

HandJoints HAND_JOINT_RING_PROXIMAL = 17

Articolazione prossimale della falange dell'anulare.

HandJoints HAND_JOINT_RING_INTERMEDIATE = 18

Articolazione intermedia della falange dell'anulare.

HandJoints HAND_JOINT_RING_DISTAL = 19

Articolazione distale della falange dell'anulare.

HandJoints HAND_JOINT_RING_TIP = 20

Articolazione della punta dell'anulare.

HandJoints HAND_JOINT_LITTLE_METACARPAL = 21

Articolazione metacarpale del mignolo.

HandJoints HAND_JOINT_LITTLE_PROXIMAL = 22

Articolazione prossimale della falange del mignolo.

HandJoints HAND_JOINT_LITTLE_INTERMEDIATE = 23

Articolazione intermedia della falange del mignolo.

HandJoints HAND_JOINT_LITTLE_DISTAL = 24

Articolazione distale della falange del mignolo.

HandJoints HAND_JOINT_LITTLE_TIP = 25

Articolazione della punta del mignolo.

HandJoints HAND_JOINT_MAX = 26

Rappresenta la dimensione dell'enumerazione HandJoints.


enum PerfSettingsLevel: 🔗

PerfSettingsLevel PERF_SETTINGS_LEVEL_POWER_SAVINGS = 0

L'applicazione è entrata in una sezione non XR (testa bloccata o schermo statico), durante la quale si deve priorizzare il risparmio energetico.

PerfSettingsLevel PERF_SETTINGS_LEVEL_SUSTAINED_LOW = 1

L'applicazione è entrata in una sezione di complessità bassa e stabile, durante la quale la riduzione del consumo energetico è più importante dei frame di rendering occasionalmente in ritardo.

PerfSettingsLevel PERF_SETTINGS_LEVEL_SUSTAINED_HIGH = 2

L'applicazione è entrata in una sezione di complessità elevata o dinamica, durante la quale il Runtime XR si impegna a ottenere un compositing XR e un rendering dei frame costanti entro un intervallo termicamente sostenibile.

PerfSettingsLevel PERF_SETTINGS_LEVEL_BOOST = 3

L'applicazione è entrata in una sezione di complessità molto elevata, durante la quale il Runtime XR può superare l'intervallo termicamente sostenibile.


enum PerfSettingsSubDomain: 🔗

PerfSettingsSubDomain PERF_SETTINGS_SUB_DOMAIN_COMPOSITING = 0

Le prestazioni di compositing in fase di esecuzione hanno raggiunto un nuovo livello.

PerfSettingsSubDomain PERF_SETTINGS_SUB_DOMAIN_RENDERING = 1

Le prestazioni di rendering delle applicazioni hanno raggiunto un nuovo livello.

PerfSettingsSubDomain PERF_SETTINGS_SUB_DOMAIN_THERMAL = 2

La temperatura del dispositivo ha raggiunto un nuovo livello.


enum PerfSettingsNotificationLevel: 🔗

PerfSettingsNotificationLevel PERF_SETTINGS_NOTIF_LEVEL_NORMAL = 0

Il sottodominio ha raggiunto un livello in cui non sono necessarie ulteriori azioni oltre a quelle attualmente applicate.

PerfSettingsNotificationLevel PERF_SETTINGS_NOTIF_LEVEL_WARNING = 1

Il sottodominio ha raggiunto un livello precoce di allerta tale per cui l'applicazione dovrebbe avviare azioni proattive di mitigazione.

PerfSettingsNotificationLevel PERF_SETTINGS_NOTIF_LEVEL_IMPAIRED = 2

Il sottodominio ha raggiunto un livello critico tale per cui l'applicazione dovrebbe avviare drastiche azioni di mitigazione.


flags HandJointFlags: 🔗

HandJointFlags HAND_JOINT_NONE = 0

Nessun flag è impostato.

HandJointFlags HAND_JOINT_ORIENTATION_VALID = 1

Se impostato, i dati di orientamento sono validi, altrimenti, i dati di orientamento non sono affidabili e non devono essere utilizzati.

HandJointFlags HAND_JOINT_ORIENTATION_TRACKED = 2

Se impostato, i dati di orientamento provengono dai dati di tracciamento, altrimenti contengono dati anticipati.

HandJointFlags HAND_JOINT_POSITION_VALID = 4

Se impostato, i dati posizionali sono validi, altrimenti non sono affidabili e non dovrebbero essere utilizzati.

HandJointFlags HAND_JOINT_POSITION_TRACKED = 8

Se impostato, i dati posizionali provengono dai dati di tracciamento, altrimenti contengono dati anticipati.

HandJointFlags HAND_JOINT_LINEAR_VELOCITY_VALID = 16

Se impostato, i nostri dati sulla velocità lineare sono validi, altrimenti i dati sulla velocità lineare non sono affidabili e non dovrebbero essere utilizzati.

HandJointFlags HAND_JOINT_ANGULAR_VELOCITY_VALID = 32

Se impostato, i nostri dati sulla velocità angolare sono validi, altrimenti i dati sulla velocità angolare non sono affidabili e non dovrebbero essere utilizzati.


Descrizioni delle proprietà

float display_refresh_rate = 0.0 🔗

  • void set_display_refresh_rate(value: float)

  • float get_display_refresh_rate()

La frequenza di aggiornamento del display per l'HMD corrente. Funziona solo se questa funzionalità è supportata dall'esecuzione OpenXR e dopo che l'interfaccia è stata inizializzata.


bool foveation_dynamic = false 🔗

  • void set_foveation_dynamic(value: bool)

  • bool get_foveation_dynamic()

If true, enables dynamic foveation adjustment. The interface must be initialized before this is accessible. If enabled, foveation will automatically be adjusted between low and foveation_level.


int foveation_level = 0 🔗

  • void set_foveation_level(value: int)

  • int get_foveation_level()

The foveation level, from 0 (off) to 3 (high). The interface must be initialized before this is accessible.


bool foveation_with_subsampled_images = false 🔗

  • void set_foveation_with_subsampled_images(value: bool)

  • bool get_foveation_with_subsampled_images()

If true, enables subsampled images with foveation, which can provide a performance boost on Vulkan.


float render_target_size_multiplier = 1.0 🔗

  • void set_render_target_size_multiplier(value: float)

  • float get_render_target_size_multiplier()

Il moltiplicatore delle dimensioni di rendering per l'HMD attuale. Deve essere impostato prima che l'interfaccia sia stata inizializzata.


float vrs_min_radius = 20.0 🔗

  • void set_vrs_min_radius(value: float)

  • float get_vrs_min_radius()

Il raggio minimo attorno al punto focale in cui è garantita la massima qualità se VRS viene utilizzato come percentuale della dimensione dello schermo.

Nota: Solo per il rendering Mobile e Forward+. Richiede che Viewport.vrs_mode sia impostato su Viewport.VRS_XR.


float vrs_strength = 1.0 🔗

  • void set_vrs_strength(value: float)

  • float get_vrs_strength()

L'intensità utilizzata per calcolare la mappa di densità VRS. Maggiore è questo valore, più evidente è VRS. Ciò migliora le prestazioni a scapito della qualità.

Nota: Solo rendering Mobile e Forward+. Richiede che Viewport.vrs_mode sia impostato su Viewport.VRS_XR.


Descrizioni dei metodi

Array get_action_sets() const 🔗

Restituisce una lista di insiemi di azioni registrati con Godot (caricati dalla mappa delle azioni in fase di esecuzione).


Array get_available_display_refresh_rates() const 🔗

Returns a list of display refresh rates supported by the current HMD. Only returned if this feature is supported by the OpenXR runtime and after the interface has been initialized.


Vector3 get_hand_joint_angular_velocity(hand: Hand, joint: HandJoints) const 🔗

Deprecato: Use XRHandTracker.get_hand_joint_angular_velocity() obtained from XRServer.get_tracker() instead.

Se il tracciamento della mano è abilitato, restituisce la velocità angolare di un'articolazione (joint) di una mano (hand) come fornita da OpenXR. Questa è relativa a XROrigin3D!


BitField[HandJointFlags] get_hand_joint_flags(hand: Hand, joint: HandJoints) const 🔗

Deprecato: Use XRHandTracker.get_hand_joint_flags() obtained from XRServer.get_tracker() instead.

Se il tracciamento delle mani è abilitato, restituisce dei flag che ci informano della validità dei dati di tracciamento.


Vector3 get_hand_joint_linear_velocity(hand: Hand, joint: HandJoints) const 🔗

Deprecato: Use XRHandTracker.get_hand_joint_linear_velocity() obtained from XRServer.get_tracker() instead.

Se il tracciamento della mano è abilitato, restituisce la velocità lineare di un'articolazione (joint) di una mano (hand) come fornita da OpenXR. Questa è relativa a XROrigin3D senza scala del mondo applicata!


Vector3 get_hand_joint_position(hand: Hand, joint: HandJoints) const 🔗

Deprecato: Use XRHandTracker.get_hand_joint_transform() obtained from XRServer.get_tracker() instead.

Se il tracciamento della mano è abilitato, restituisce la posizione di un'articolazione (joint) di una mano (hand) come fornita da OpenXR. Questa è relativa a XROrigin3D senza scala del mondo applicata!


float get_hand_joint_radius(hand: Hand, joint: HandJoints) const 🔗

Deprecato: Use XRHandTracker.get_hand_joint_radius() obtained from XRServer.get_tracker() instead.

Se il tracciamento della mano è abilitato, restituisce il raggio di un'articolazione (joint) di una mano (hand) come fornito da OpenXR. Questo è senza scala del mondo applicata!


Quaternion get_hand_joint_rotation(hand: Hand, joint: HandJoints) const 🔗

Deprecato: Use XRHandTracker.get_hand_joint_transform() obtained from XRServer.get_tracker() instead.

Se il tracciamento della mano è abilitato, restituisce la rotazione di un'articolazione (joint) di una mano (hand) come fornita da OpenXR.


HandTrackedSource get_hand_tracking_source(hand: Hand) const 🔗

Deprecato: Use XRHandTracker.hand_tracking_source obtained from XRServer.get_tracker() instead.

Se il tracciamento della mano è abilitato e la sorgente del tracciamento della mano è supportata, ottiene la sorgente dei dati di tracciamento per la mano hand.


HandMotionRange get_motion_range(hand: Hand) const 🔗

Se il tracciamento manuale è abilitato e l'intervallo di movimento è supportato, ottiene l'intervallo di movimento attualmente configurato per la mano hand.


SessionState get_session_state() 🔗

Restituisce lo stato attuale della nostra sessione OpenXR.


bool is_action_set_active(name: String) const 🔗

Restituisce true se l'insieme di azioni specificato è attivo.


bool is_eye_gaze_interaction_supported() 🔗

Restituisce le capacità dell'estensione di interazione dello sguardo.

Nota: Questo restituisce un valore valido solo dopo che OpenXR è stato inizializzato.


bool is_foveation_supported() const 🔗

Returns true if OpenXR's foveation extension is supported. The interface must be initialized before this returns a valid value.

Note: When using the Vulkan rendering driver, Viewport.vrs_mode must be set to Viewport.VRS_XR to support foveation.


bool is_hand_interaction_supported() const 🔗

Restituisce true se il profilo di interazione manuale di OpenXR è supportato e abilitato.

Nota: Questo restituisce un valore valido solo dopo l'avvio della sessione OpenXR.


bool is_hand_tracking_supported() 🔗

Restituisce true se il monitoraggio della mano di OpenXR è supportato e abilitato.

Nota: Questo restituisce un valore valido solo dopo l'avvio della sessione OpenXR.


bool is_user_presence_supported() const 🔗

Returns true if OpenXR's user presence extension is supported and enabled.

Note: This only returns a valid value after OpenXR has been initialized.


bool is_user_present() const 🔗

Returns true if system has detected the presence of a user in the XR experience.


void set_action_set_active(name: String, active: bool) 🔗

Imposta l'insieme di azioni come attivo o inattivo.


void set_cpu_level(level: PerfSettingsLevel) 🔗

Imposta il livello di prestazioni della CPU del dispositivo OpenXR.


void set_gpu_level(level: PerfSettingsLevel) 🔗

Imposta il livello di prestazioni della GPU del dispositivo OpenXR.


void set_motion_range(hand: Hand, motion_range: HandMotionRange) 🔗

Se il tracciamento della mano è abilitato e l'intervallo di movimento è supportato, imposta l'intervallo di movimento attualmente configurato per la mano hand su motion_range.