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...
XRServer
Eredita: Object
Server per funzionalità di AR e VR.
Descrizione
Il server AR/VR è il cuore della nostra soluzione avanzata e di realtà virtuale, che gestisce tutto il processo.
Tutorial
Proprietà
|
||
|
||
|
Metodi
void |
add_interface(interface: XRInterface) |
void |
add_tracker(tracker: XRTracker) |
void |
center_on_hmd(rotation_mode: RotationMode, keep_height: bool) |
void |
|
find_interface(name: String) const |
|
get_interface(idx: int) const |
|
get_interface_count() const |
|
get_interfaces() const |
|
get_reference_frame() const |
|
get_tracker(tracker_name: StringName) const |
|
get_trackers(tracker_types: int) |
|
void |
remove_interface(interface: XRInterface) |
void |
remove_tracker(tracker: XRTracker) |
Segnali
interface_added(interface_name: StringName) 🔗
Emesso quando una nuova interfaccia è stata aggiunta.
interface_removed(interface_name: StringName) 🔗
Emesso quando una nuova interfaccia è stata rimossa.
reference_frame_changed() 🔗
Emesso quando la trasformazione del frame di riferimento cambia.
tracker_added(tracker_name: StringName, type: int) 🔗
Emesso quando è stato aggiunto un nuovo tracciatore. Se non si usa un numero fisso di controller o se si usano XRAnchor3D per una soluzione AR, è importante reagire a questo segnale per aggiungere i nodi XRController3D o XRAnchor3D appropriati correlati a questo nuovo tracciatore.
tracker_removed(tracker_name: StringName, type: int) 🔗
Emesso quando un tracciatore viene rimosso. Dovresti rimuovere tutti i punti XRController3D o XRAnchor3D se applicabile. Questo non è obbligatorio, i nodi diventano semplicemente inattivi e saranno riattivati quando un nuovo tracciatore diventa disponibile (ad esempio, un nuovo controller viene acceso e prende il posto del precedente).
tracker_updated(tracker_name: StringName, type: int) 🔗
Emesso quando un tracciatore esistente è stato aggiornato. Ciò può accadere se l'utente cambia controller.
world_origin_changed() 🔗
Emitted when the world origin transform changes.
Enumerazioni
enum TrackerType: 🔗
TrackerType TRACKER_HEAD = 1
Il tracciatore traccia la posizione della testa del giocatore. Di solito è una posizione centrata tra gli occhi del giocatore. Nota che per i dispositivi AR portatili questa può essere la posizione attuale del dispositivo.
TrackerType TRACKER_CONTROLLER = 2
Il tracciatore traccia la posizione di un controller.
TrackerType TRACKER_BASESTATION = 4
Il tracciatore traccia la posizione di una stazione base.
TrackerType TRACKER_ANCHOR = 8
Il tracciatore traccia la posizione e le dimensioni di un'ancoraggio in AR.
TrackerType TRACKER_HAND = 16
Il tracciatore traccia la posizione e le articolazioni di una mano.
TrackerType TRACKER_BODY = 32
Il tracciatore traccia la posizione e le articolazioni di un corpo.
TrackerType TRACKER_FACE = 64
Il tracciatore traccia le espressioni di un volto.
TrackerType TRACKER_ANY_KNOWN = 127
Utilizzato internamente per filtrare i tracciatori di qualsiasi tipo noto.
TrackerType TRACKER_UNKNOWN = 128
Utilizzato internamente se non abbiamo ancora impostato il tipo di tracciatore.
TrackerType TRACKER_ANY = 255
Utilizzato internamente per selezionare tutti i tracciatori.
enum RotationMode: 🔗
RotationMode RESET_FULL_ROTATION = 0
Ripristina completamente l'orientamento dell'HMD. Indipendentemente dalla direzione in cui l'utente sta guardando nel mondo reale. L'utente guarderà dritto davanti a sé nel mondo virtuale.
RotationMode RESET_BUT_KEEP_TILT = 1
Reimposta l'orientamento ma mantiene l'inclinazione del dispositivo. Quindi se stiamo guardando verso il basso, continueremo a guardare verso il basso ma la direzione sarà reimpostata.
RotationMode DONT_RESET_ROTATION = 2
Non reimposta l'orientamento dell'HMD, solo la posizione del giocatore viene centrata.
Descrizioni delle proprietà
bool camera_locked_to_origin = false 🔗
Se impostato su true, la scena sarà renderizzata come se la telecamera fosse bloccata sul XROrigin3D.
Nota: Questo non fornisce un'esperienza molto confortevole per gli utenti. Questa impostazione esiste per eseguire benchmarking o test automatizzati, in cui si desidera controllare cosa viene renderizzato tramite codice.
XRInterface primary_interface 🔗
void set_primary_interface(value: XRInterface)
XRInterface get_primary_interface()
La XRInterface primaria attualmente associata al XRServer.
Transform3D world_origin = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0) 🔗
void set_world_origin(value: Transform3D)
Transform3D get_world_origin()
L'origine attuale del nostro spazio di tracciamento nel mondo virtuale. Questo è utilizzato dal renderer per posizionare correttamente la telecamera con nuovi dati di tracciamento.
Nota: Questa proprietà è gestita dal nodo XROrigin3D attuale. È esposta per l'accesso da GDExtension.
La scala del mondo di gioco rispetto al mondo reale. Per impostazione predefinita, la maggior parte delle piattaforme AR/VR presuppone che 1 unità di gioco corrisponda a 1 metro del mondo reale.
Descrizioni dei metodi
void add_interface(interface: XRInterface) 🔗
Registra un oggetto XRInterface.
void add_tracker(tracker: XRTracker) 🔗
Registra un nuovo XRTracker che traccia un oggetto fisico.
void center_on_hmd(rotation_mode: RotationMode, keep_height: bool) 🔗
Questa è una funzione importante da capire correttamente. Le piattaforme AR e VR gestiscono tutte il posizionamento in modo leggermente diverso.
Per le piattaforme che non offrono il tracciamento spaziale, il nostro punto di origine (0, 0, 0) è la posizione del nostro HMD, ma hai poco controllo sulla direzione in cui è rivolto il giocatore nel mondo reale.
Per le piattaforme che offrono il tracciamento spaziale, il nostro punto di origine dipende molto dal sistema. Per OpenVR, il nostro punto di origine è solitamente il centro dello spazio di tracciamento, a terra. Per altre piattaforme, è spesso la posizione della telecamera di tracciamento.
Questo metodo ti consente di centrare il tuo tracciatore sulla posizione dell'HMD. Prenderà la posizione attuale dell'HMD e la utilizzerà per regolare tutti i tuoi dati di tracciamento; in sostanza, riallineando il mondo reale alla posizione attuale del tuo giocatore nel mondo di gioco.
Affinché questo metodo produca risultati utilizzabili, devono essere disponibili informazioni di tracciamento. Spesso ciò richiede qualche frame dopo l'avvio del gioco.
Si consiglia di chiamare questo metodo dopo qualche secondo. Ad esempio, quando l'utente richiede un riallineamento del display tenendo premuto un pulsante designato su un controller per un breve periodo di tempo, oppure quando si implementa un meccanismo di teletrasporto.
void clear_reference_frame() 🔗
Cancella il sistema di riferimento impostato dalle chiamate precedenti center_on_hmd().
XRInterface find_interface(name: String) const 🔗
Trova un'interfaccia tramite il suo nome (name). Ad esempio, se il tuo progetto utilizza le funzionalità di una piattaforma AR/VR, puoi trovare l'interfaccia per quella piattaforma tramite il nome e inizializzarla.
Transform3D get_hmd_transform() 🔗
Restituisce la trasformazione dell'interfaccia primaria.
XRInterface get_interface(idx: int) const 🔗
Restituisce l'interfaccia registrata all'indice idx specificato nella lista delle interfacce.
int get_interface_count() const 🔗
Restituisce il numero di interfacce attualmente registrate con il server AR/VR. Se il tuo progetto supporta più piattaforme AR/VR, puoi esaminare l'interfaccia disponibile e presentare all'utente una selezione, oppure provare a inizializzare ogni interfaccia e usare la prima che restituisce true.
Array[Dictionary] get_interfaces() const 🔗
Restituisce una lista di interfacce disponibili, con l'ID e il nome di ciascuna interfaccia.
Transform3D get_reference_frame() const 🔗
Restituisce la trasformazione del frame di riferimento. Utilizzato per lo più internamente ed esposto per le interfacce di build in GDExtension.
XRTracker get_tracker(tracker_name: StringName) const 🔗
Restituisce il tracciatore posizionale con il nome tracker_name.
Dictionary get_trackers(tracker_types: int) 🔗
Restituisce un dizionario di tracciatori per i tipi tracker_types.
void remove_interface(interface: XRInterface) 🔗
Rimuove l'interfaccia interface.
void remove_tracker(tracker: XRTracker) 🔗
Rimuove il tracciatore tracker.