Componenti JavaScript
8thwall-camera
Componente della 8thwall camera.
Deprecato: Usa i componenti in https://github.com/WonderlandEngine/wonderland-ar-tracking invece.
Param | Tipo | Descrizione |
---|---|---|
deprecated | bool |
anchor
Imposta la posizione dell’oggetto sulla posizione di un XRAnchor.
Crea ancoraggi utilizzando la funzione statica Anchor.create()
.
Esempio per l’uso con il cursore:
Param | Tipo | Descrizione |
---|---|---|
persist | bool | |
uuid | string | Identificatore univoco per caricare un ancoraggio persistente o vuoto/null se sconosciuto |
audio-listener
Rappresenta un componente audio listener di Wonderland. Aggiorna la posizione e l’orientamento di un’istanza di ascoltatore WebAudio.
Nota: Solo un ascoltatore dovrebbe essere attivo alla volta.
audio-source
Rappresenta una sorgente audio nel Wonderland Engine, permettendo la riproduzione di file audio.
cursor
Cursore 3D per desktop/mobile/VR.
Implementa un cursore ray-casting nella scena. Per reagire a clic/superamento/passerella/pulsanti giù/su/muovere usa un cursor-target.
Per il VR, il raggio è orientato nella direzione di this.object.getForward(). Per desktop e mobile, il vettore forward è proiettato inversamente per tener conto di dove l’utente ha cliccato sullo schermo.
.globalTarget
può essere utilizzato per chiamare callback per tutti gli oggetti, anche quelli che
non hanno un target del cursore allegato, ma che corrispondono al gruppo di collisione.
.hitTestTarget
può essere usato per chiamare callback dei risultati di hit test WebXR,
Vedi Esempio di Animazione.
Param | Tipo | Descrizione |
---|---|---|
collisionGroup | int | Gruppo di collisione per il cast del raggio. Solo gli oggetti in questo gruppo saranno influenzati da questo cursore. |
cursorObject | object | (opzionale) Oggetto che visualizza la posizione dell’impatto del cursore. |
cursorRayObject | object | (opzionale) Oggetto che visualizza il raggio del cursore. |
cursorRayScalingAxis | enum | Asse lungo il quale scalare il cursorRayObject . |
handedness | enum | Mano per i cursori VR per accettare eventi trigger solo dal rispettivo controller. |
maxDistance | float | Distanza massima per il cast del raggio del cursore. |
rayCastMode | enum | Modalità per il raycasting, se utilizzare componenti di collisione semplici o PhysX |
styleCursor | bool | Se impostare lo stile CSS del cursore del mouse su desktop |
useWebXRHitTest | bool | Utilizza il WebXR hit-test se disponibile. |
Attribuisce un componente hit-test-location al cursorObject, che verrà utilizzato dal cursore per inviare eventi al hitTestTarget con HitTestResult.|
cursor-target
Bersaglio per click/hover/move/button per cursor.
Per attivare il codice quando clicchi, passi sopra, scendi, muovi il cursore, premi
o rilasci il pulsante del cursore, utilizza .addClickFunction(f)
,
.addHoverFunction(f)
, .addUnHoverFunction(f)
,
.addMoveFunction(f)
, .addDownFunction(f)
e
.addUpFunction(f)
rispettivamente con qualsiasi function f() {}
.
Per chiamare membri su un diverso componente, puoi impostare un target del cursore nel seguente modo:
Funzioni:
1const target = this.object.getComponent(CursorTarget);
2const callback = function(object, cursorComponent) {};
3
4target.onHover.add(callback);
5target.onHover.remove(callback);
6
7target.onUnHover.add(callback);
8target.onUnHover.remove(callback);
9
10target.onClick.add(callback);
11target.onClick.remove(callback);
12
13target.onMove.add(callback);
14target.onMove.remove(callback);
15
16target.onDown.add(callback);
17target.onDown.remove(callback);
18
19target.onUp.add(callback);
20target.onUp.remove(callback);
Requisiti:
- un componente
collision
da essere allegato allo stesso oggetto.
Vedi Esempio di Animazione.
debug-object
Stampa alcune informazioni di debug limitate sull’oggetto.
Le informazioni consistono in: il nome dell’oggetto, il nome di un parametro dell’oggetto, la traduzione mondiale dell’oggetto, la trasformazione globale e la trasformazione locale.
Utilizzato principalmente dagli sviluppatori del motore per scopi di debug o come esempio di codice.
Param | Tipo | Descrizione |
---|---|---|
obj | object | Un secondo oggetto di cui stampare il nome |
device-orientation-look
Recupera l’orientamento del dispositivo da un dispositivo mobile e imposta di conseguenza l’orientamento dell’oggetto.
Utile per esperienze a finestra magica.
finger-cursor
0.8.5+Abilita l’interazione con i target del cursore tramite sovrapposizioni di collisione, ad esempio sulla punta di un dito su una mano tracciata.
Requisiti:
- Un componente di collisione (solitamente una sfera con raggio
0.05
) sullo stesso oggetto
fixed-foveation
Applica la foveazione fissa una volta avviata una sessione WebXR.
La foveazione fissa riduce i costi di shading alla periferia rendendo a risoluzioni più basse ai bordi della visione degli utenti.
Param | Tipo | Descrizione |
---|---|---|
fixedFoveation | float | Quantità da applicare da 0 (nessuna) a 1 (piena) |
hand-tracking
Tracciamento delle mani facile tramite l’API WebXR Device “Hand Input” API.
Permette di visualizzare le mani sia come giunti a sfera che come mesh skinnate.
Per reagire alla presa, usa this.isGrabbing()
. Per altri gesti, consulta
this.joints
- un array di Object3D e usa gli indici dei giunti elencati nella specifica WebXR Hand Input.
Spesso si preferisce usare o il tracciamento delle mani o i controlli, non entrambi.
Questo componente offre deactivateChildrenWithoutPose
per nascondere la visualizzazione del tracciamento delle mani se non è disponibile una posa e controllerToDeactivate
per disabilitare un altro oggetto una volta che è disponibile una posa di tracciamento delle mani.
Fuori dalle sessioni XR, il tracciamento o i controlli non sono né abilitati né disabilitati
per giocare bene con il componente vr-mode-active-switch.
Requisiti:
- Per utilizzare il tracciamento delle mani, abilita il “tracciamento delle articolazioni” in
chrome://flags
su Oculus Browser per Oculus Quest/Oculus Quest 2.
Vedi Esempio di Tracciamento delle Mani.
Param | Tipo | Descrizione |
---|---|---|
controllerToDeactivate | object | Oggetti controller da attivare inclusi i figli se non è disponibile alcuna posa |
deactivateChildrenWithoutPose | bool | Disattiva i figli se non è stata tracciata alcuna posa |
handSkin | skin | (opzionale) Skin da applicare alle pose articolari tracciate. Se non presente, |
i giunti sferici verranno utilizzati per la visualizzazione. | ||
handedness | enum | Mano che determina se ricevere input di tracciamento dalla mano destra o sinistra |
jointMaterial | material | Materiale da usare per la visualizzazione. Applicato sia alla mesh skinnata generata che ai giunti sferici. |
jointMesh | mesh | (opzionale) Mesh da utilizzare per visualizzare i giunti |
hit-test-location
Imposta un Hit Test della WebXR Device API e posiziona l’oggetto nella posizione dell’hit.
Requisiti:
- Specificare
'hit-test'
nelle funzionalità richieste o opzionali sul pulsante AR nel tuo file HTML. Vedi Wastepaperbin AR come esempio.
Param | Tipo | Descrizione |
---|---|---|
scaleObject | bool | Per mantenere la compatibilità con le versioni precedenti: se scalare l’oggetto a 0 e indietro. |
Deprecato: Usa onHitLost e onHitFound invece.|
image-texture
Scarica un’immagine dall’URL e la applica come diffuseTexture
o flatTexture
a un componente mesh allegato.
I materiali dei seguenti shader sono supportati:
- “Phong Opaque Textured”
- “Flat Opaque Textured”
- “Background”
- “Physical Opaque Textured”
- “Foliage”
Param | Tipo | Descrizione |
---|---|---|
material | material | Materiale su cui applicare la texture video |
textureProperty | string | Nome della proprietà della texture da impostare |
url | string | URL da cui scaricare l’immagine |
input-profile
Carica e mappa dinamicamente i profili di input per i controlli XR.
Param | Tipo | Descrizione |
---|---|---|
addVrModeSwitch | bool | Se vero, aggiunge un componente di cambio modalità VR al modello del controller caricato. |
customBasePath | string | Percorso opzionale per caricare profili di input XR personalizzati. |
defaultBasePath | string | Il percorso base dove sono memorizzati i profili di input XR. |
defaultController | object | Modello predefinito del controller 3D usato quando un modello personalizzato non riesce a caricare. |
handedness | enum | L’indice che rappresenta la mano del controller (0 per sinistra, 1 per destra). |
mapToDefaultController | bool | Se vero, il profilo di input sarà mappato al controller predefinito e non verrà caricato nessun modello 3D dinamico del controller. |
trackedHand | object | L’oggetto che ha il componente HandTracking aggiunto. |
mouse-look
Controlla l’orientamento della fotocamera tramite il movimento del mouse.
Implementato in modo efficiente per modificare l’orientamento dell’oggetto solo quando il mouse si muove.
Param | Tipo | Descrizione |
---|---|---|
mouseButtonIndex | int | Se “moveOnClick” è attivo, il pulsante del mouse che deve |
essere tenuto premuto per controllare la vista | ||
pointerLockOnClick | bool | Abilita il blocco del puntatore sull’evento “mousedown” sulla canvas |
requireMouseDown | bool | Richiede che un pulsante del mouse sia premuto per controllare la vista. |
Altrimenti la vista seguirà sempre il movimento del mouse | ||
sensitity | float | Sensibilità del controllo mouse look |
orbital-camera
Il componente OrbitalCamera permette all’utente di orbitare attorno a un punto di riferimento, che è la posizione dell’oggetto stesso. Ruota alla distanza specificata.
Osservazioni: Il componente funziona utilizzando il mouse o il tocco. Pertanto non funziona in VR.
Param | Tipo | Descrizione |
---|---|---|
damping | float | |
maxElevation | float | |
maxZoom | float | |
minElevation | float | |
minZoom | float | |
mouseButtonIndex | int | |
radial | float | |
xSensitivity | float | |
ySensitivity | float | |
zoomSensitivity | float |
plane-detection
Genera mesh e collisioni per XRPlanes usando WebXR Device API - Plane Detection.
Param | Tipo | Descrizione |
---|---|---|
collisionMask | int | Maschera di collisione da assegnare ai componenti di collisione appena creati o un valore negativo se |
i componenti di collisione non devono essere creati. | ||
planeMaterial | material | Materiale da assegnare alle mesh del piano create o null se le mesh non devono essere create. |
player-height
Imposta l’altezza del giocatore per uno spostamento Y sopra il suolo per spazi di riferimento ’locali’ e ‘viewer’.
Param | Tipo | Descrizione |
---|---|---|
height | float |
target-framerate
Imposta il framerate target
Aggiorna il framerate target
al framerate target supportato
più vicino al framerate
specificato.
Il framerate target viene utilizzato per il compositor VR del dispositivo come indicazione della frequenza con la quale aggiornare lo schermo con nuove immagini. Ciò significa che l’app verrà chiesta di produrre frame a intervalli più regolari, potenzialmente riducendo il tempo per i frame che potrebbero essere scartati.
Per le applicazioni con un carico pesante, impostare un framerate target ben corrispondente può migliorare la stabilità del rendering dell’app e ridurre il tremolio.
Allo stesso modo, il framerate target può essere utilizzato per abilitare frequenze di aggiornamento a 120Hz su Oculus Quest 2 per applicazioni più semplici.
Param | Tipo | Descrizione |
---|---|---|
framerate | float |
teleport
Teletrasporto per la locomozione VR.
Vedi Esempio di Teletrasporto.
Param | Tipo | Descrizione |
---|---|---|
cam | ? | Telecamera non VR per utilizzo al di fuori del VR |
camRoot | ? | Radice del giocatore, l’oggetto che verrà posizionato sulla destinazione del teletrasporto. |
eyeLeft | ? | Occhio sinistro per l’uso in VR |
eyeRight | ? | Occhio destro per l’uso in VR |
floorGroup | ? | Gruppo di collisione degli oggetti “pavimento” validi su cui è possibile teletrasportarsi |
handedness | ? | Mano per i cursori VR per accettare eventi trigger solo dal rispettivo controller. |
indicatorYOffset | ? | Offset da applicare all’oggetto indicatore, ad esempio per evitare che si sovrapponga al pavimento |
maxDistance | ? | Distanza massima per raycast PhysX |
rayCastMode | ? | Modalità per raycasting, sia che si usi componenti di collisione semplici o PhysX |
teleportIndicatorMeshObject | ? | Oggetto che sarà posizionato come indicazione per la posizione a cui il giocatore si teletrasporterà. |
thumbstickActivationThreshhold | ? | Quanto deve essere spinto lo thumbstick per far apparire l’indicatore di destinazione del teletrasporto |
thumbstickDeactivationThreshhold | ? | Quanto deve essere rilasciato lo thumbstick per eseguire il teletrasporto |
trail
Scia dinamica basata su mesh
Questo componente tiene traccia della posizione globale dell’oggetto a cui è stato aggiunto. A intervalli regolari, la posizione globale viene memorizzata come punti iniziali e finali dei segmenti della scia.
La scia si assottiglia lungo la sua lunghezza. Le coordinate della texture UV sono impostate in modo tale che l’asse U copra la larghezza della scia e l’asse V copra la lunghezza della scia. Ciò consente di definire l’aspetto della scia utilizzando una texture.
Param | Tipo | Descrizione |
---|---|---|
interval | float | Intervallo di tempo prima di registrare un nuovo punto |
material | material | Materiale da applicare alla mesh della scia |
resetThreshold | float | Delta massimo di tempo in secondi, oltre il quale la scia si resetta. |
Questo previene che la scia salti in giro quando gli aggiornamenti avvengono | ||
in modo poco frequente (ad esempio quando la tab non ha il focus). | ||
segments | int | Numero di segmenti nella mesh della scia |
taper | bool | Se la scia debba o meno assottigliarsi |
width | float | Larghezza della scia (in spazio mondiale) |
two-joint-ik-solver
Inverse kinematics per catene a due giunti (ad esempio, ginocchia o gomiti)
Param | Tipo | Descrizione |
---|---|---|
copyTargetRotation | ? | Flag per copiare la rotazione dal target al termine |
end | ? | Osso collegato al centro |
helper | ? | Oggetto helper da usare per determinare l’asse di rotazione del giunto |
middle | ? | Osso collegato alla radice |
root | ? | Osso di radice, non si muove mai |
target | ? | Target che i giunti dovrebbero raggiungere |
video-texture
Scarica un video dall’URL e lo applica come diffuseTexture
o flatTexture
sul materiale specificato.
Le texture video devono essere aggiornate regolarmente ogni volta che è disponibile un nuovo frame. Questo componente gestisce il rilevamento di un nuovo frame e aggiorna la texture per riflettere il frame attuale del video.
I materiali dai seguenti shader sono supportati:
- “Phong Opaque Textured”
- “Flat Opaque Textured”
- “Background”
- “Physical Opaque Textured”
- “Foliage”
Il video può essere accesso tramite this.video
:
Vedi Esempio di Video.
Param | Tipo | Descrizione |
---|---|---|
autoplay | bool | Se avviare automaticamente la riproduzione del video |
loop | bool | Se ripetere il video |
material | material | Materiale su cui applicare la texture video |
muted | bool | Se silenziare il suono |
textureProperty | string | Nome della proprietà della texture da impostare |
url | string | URL da cui scaricare il video |
vr-mode-active-switch
Permette di attivare/disattivare tutti gli altri componenti su un oggetto a seconda che una sessione VR/AR sia attiva.
Utile per nascondere i controller finché l’utente non entra in VR, per esempio.
Param | Tipo | Descrizione |
---|---|---|
activateComponents | ? | Quando i componenti dovrebbero essere attivi: in VR o quando non in VR |
affectChildren | ? | Se i componenti degli oggetti figli debbano essere interessati |
vrm
Componente per caricare e gestire modelli VRM 1.0.
La posa del modello deve essere esclusivamente fatta ruotando le ossa. Queste possono essere
accedute usando la proprietà .bones
e seguono la denominazione degli ossi VRM. Nota che non
tutti i modelli VRM avranno tutte le ossa possibili. La posa di riposo (T-pose) è catturata nella
proprietà .restPose
. Resettare un osso alla sua posa di riposo può essere fatto come segue:
1vrmComponent.bones[vrmBoneName].rotationLocal = vrmComponent.restPose[vrmBoneName];
Muovere il modello nel mondo dovrebbe essere fatto muovendo l’oggetto a cui è attaccato questo componente. In altre parole, muovendo la radice del modello VRM. Le ossa e qualsiasi oggetto discendente non dovrebbero essere usati per muovere il modello VRM.
L’estensione core VRMC_vrm
così come le estensioni VRMC_springBone
e VRMC_node_constraint
sono supportate.
Limitazioni:
- Nessun supporto per
VRMC_material_mtoon
- Le espressioni non sono supportate
- Il lookAt basato sulle espressioni non è supportato
- La modalità di annotazione della mesh
auto
non è supportata (modalità prima persona)
Param | Tipo | Descrizione |
---|---|---|
lookAtTarget | ? | Oggetto a cui il VRM sta guardando |
src | ? | URL a un file VRM da caricare |
wasd-controls
Movimento base con i tasti W/A/S/D.
Param | Tipo | Descrizione |
---|---|---|
headObject | object | Oggetto di cui l’orientamento è usato per determinare la direzione anteriore |
lockY | bool | Flag per muovere l’oggetto solo sugli assi x & z globali |
speed | float | Velocità di movimento in m/s. |