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 |
|
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.
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
L'istanza OpenXR sta per distruggersi e si sta uscendo. instance_exiting viene emesso quando si passa a questo stato.
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 🔗
Abilita la regolazione dinamica della foveazione, l'interfaccia deve essere inizializzata prima che sia accessibile. Se abilitata, la foveazione sarà regolata automaticamente tra bassa e foveation_level.
Nota: Funziona solo sul renderer Compatibilità.
Imposta il livello di foveazione da 0 (spento) a 3 (alto), l'interfaccia deve essere inizializzata prima che sia accessibile.
Nota: Funziona solo sul renderer Compatibilità.
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 🔗
Restituisce le frequenze di aggiornamento del display supportate dall'HMD attuale. Restituito solo se questa funzionalità è supportata dall'OpenXR in fase l'esecuzione e dopo che l'interfaccia è stata inizializzata.
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 🔗
Restituisce true se l'estensione di foveazione di OpenXR è supportata, l'interfaccia deve essere inizializzata prima che questo restituisca un valore valido.
Nota: Questa funzionalità è disponibile solo sul renderer Compatibilità e attualmente disponibile soltanto su alcuni visori autonomi. Per Vulkan imposta Viewport.vrs_mode su VRS_XR su desktop.
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.
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.