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.
Checking the stable version of the documentation...
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à
|
||
|
||
|
||
|
||
|
||
|
||
|
Metodi
get_action_sets() const |
|
get_hand_joint_angular_velocity(hand: Hand, joint: HandJoints) const |
|
BitField[HandJointFlags] |
get_hand_joint_flags(hand: Hand, joint: HandJoints) const |
get_hand_joint_linear_velocity(hand: Hand, joint: HandJoints) const |
|
get_hand_joint_position(hand: Hand, joint: HandJoints) const |
|
get_hand_joint_radius(hand: Hand, joint: HandJoints) const |
|
get_hand_joint_rotation(hand: Hand, joint: HandJoints) const |
|
get_hand_tracking_source(hand: Hand) const |
|
get_motion_range(hand: Hand) const |
|
is_action_set_active(name: String) const |
|
is_foveation_supported() const |
|
is_hand_interaction_supported() const |
|
is_user_presence_supported() const |
|
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 🔗
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 🔗
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.
The foveation level, from 0 (off) to 3 (high). The interface must be initialized before this is accessible.
bool foveation_with_subsampled_images = false 🔗
If true, enables subsampled images with foveation, which can provide a performance boost on Vulkan.
float render_target_size_multiplier = 1.0 🔗
Il moltiplicatore delle dimensioni di rendering per l'HMD attuale. Deve essere impostato prima che l'interfaccia sia stata inizializzata.
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.
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.