Valorizziamo la tua privacy. Usiamo i cookie per migliorare la tua esperienza sul nostro sito. Utilizzando questo sito accetti la nostra Informativa sulla privacy.

Componenti JavaScript

8thwall-camera 

Componente della 8thwall camera.

Deprecato: Usa i componenti in https://github.com/WonderlandEngine/wonderland-ar-tracking invece.

ParamTipoDescrizione
deprecatedbool

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:

1cursorTarget.onClick.add((object, cursor, originalEvent) => {
2    /* Solo eventi in XR avranno un frame allegato */
3    if(!originalEvent.frame) return;
4    Anchor.create(anchorObject, {uuid: id, persist: true}, originalEvent.frame);
5});
ParamTipoDescrizione
persistbool
uuidstringIdentificatore 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.

ParamTipoDescrizione
collisionGroupintGruppo di collisione per il cast del raggio. Solo gli oggetti in questo gruppo saranno influenzati da questo cursore.
cursorObjectobject(opzionale) Oggetto che visualizza la posizione dell’impatto del cursore.
cursorRayObjectobject(opzionale) Oggetto che visualizza il raggio del cursore.
cursorRayScalingAxisenumAsse lungo il quale scalare il cursorRayObject.
handednessenumMano per i cursori VR per accettare eventi trigger solo dal rispettivo controller.
maxDistancefloatDistanza massima per il cast del raggio del cursore.
rayCastModeenumModalità per il raycasting, se utilizzare componenti di collisione semplici o PhysX
styleCursorboolSe impostare lo stile CSS del cursore del mouse su desktop
useWebXRHitTestboolUtilizza 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:

1start: function() {
2  let target = this.object.addComponent('cursor-target');
3  target.onClick.add(this.onClick.bind(this));
4},
5onClick: function() {
6  console.log(this.object.name, "è stato cliccato!");
7}

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.

ParamTipoDescrizione
objobjectUn 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.

ParamTipoDescrizione
fixedFoveationfloatQuantità 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.

ParamTipoDescrizione
controllerToDeactivateobjectOggetti controller da attivare inclusi i figli se non è disponibile alcuna posa
deactivateChildrenWithoutPoseboolDisattiva i figli se non è stata tracciata alcuna posa
handSkinskin(opzionale) Skin da applicare alle pose articolari tracciate. Se non presente,
i giunti sferici verranno utilizzati per la visualizzazione.
handednessenumMano che determina se ricevere input di tracciamento dalla mano destra o sinistra
jointMaterialmaterialMateriale da usare per la visualizzazione. Applicato sia alla mesh skinnata generata che ai giunti sferici.
jointMeshmesh(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.
ParamTipoDescrizione
scaleObjectboolPer 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”
ParamTipoDescrizione
materialmaterialMateriale su cui applicare la texture video
texturePropertystringNome della proprietà della texture da impostare
urlstringURL da cui scaricare l’immagine

input-profile 

Carica e mappa dinamicamente i profili di input per i controlli XR.

ParamTipoDescrizione
addVrModeSwitchboolSe vero, aggiunge un componente di cambio modalità VR al modello del controller caricato.
customBasePathstringPercorso opzionale per caricare profili di input XR personalizzati.
defaultBasePathstringIl percorso base dove sono memorizzati i profili di input XR.
defaultControllerobjectModello predefinito del controller 3D usato quando un modello personalizzato non riesce a caricare.
handednessenumL’indice che rappresenta la mano del controller (0 per sinistra, 1 per destra).
mapToDefaultControllerboolSe vero, il profilo di input sarà mappato al controller predefinito e non verrà caricato nessun modello 3D dinamico del controller.
trackedHandobjectL’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.

ParamTipoDescrizione
mouseButtonIndexintSe “moveOnClick” è attivo, il pulsante del mouse che deve
essere tenuto premuto per controllare la vista
pointerLockOnClickboolAbilita il blocco del puntatore sull’evento “mousedown” sulla canvas
requireMouseDownboolRichiede che un pulsante del mouse sia premuto per controllare la vista.
Altrimenti la vista seguirà sempre il movimento del mouse
sensitityfloatSensibilità 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.

ParamTipoDescrizione
dampingfloat
maxElevationfloat
maxZoomfloat
minElevationfloat
minZoomfloat
mouseButtonIndexint
radialfloat
xSensitivityfloat
ySensitivityfloat
zoomSensitivityfloat

plane-detection 

Genera mesh e collisioni per XRPlanes usando WebXR Device API - Plane Detection.

ParamTipoDescrizione
collisionMaskintMaschera di collisione da assegnare ai componenti di collisione appena creati o un valore negativo se
i componenti di collisione non devono essere creati.
planeMaterialmaterialMateriale 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’.

ParamTipoDescrizione
heightfloat

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.

ParamTipoDescrizione
frameratefloat

teleport 

Teletrasporto per la locomozione VR.

Vedi Esempio di Teletrasporto.

ParamTipoDescrizione
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.

ParamTipoDescrizione
intervalfloatIntervallo di tempo prima di registrare un nuovo punto
materialmaterialMateriale da applicare alla mesh della scia
resetThresholdfloatDelta 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).
segmentsintNumero di segmenti nella mesh della scia
taperboolSe la scia debba o meno assottigliarsi
widthfloatLarghezza della scia (in spazio mondiale)

two-joint-ik-solver 

Inverse kinematics per catene a due giunti (ad esempio, ginocchia o gomiti)

ParamTipoDescrizione
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:

1  let videoTexture = this.object.getComponent('video-texture');
2  videoTexture.video.play();
3  videoTexture.video.pause();

Vedi Esempio di Video.

ParamTipoDescrizione
autoplayboolSe avviare automaticamente la riproduzione del video
loopboolSe ripetere il video
materialmaterialMateriale su cui applicare la texture video
mutedboolSe silenziare il suono
texturePropertystringNome della proprietà della texture da impostare
urlstringURL 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.

ParamTipoDescrizione
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)
ParamTipoDescrizione
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.

ParamTipoDescrizione
headObjectobjectOggetto di cui l’orientamento è usato per determinare la direzione anteriore
lockYboolFlag per muovere l’oggetto solo sugli assi x & z globali
speedfloatVelocità di movimento in m/s.