Rilascio 1.0.0
Trova il changelog completo qui di seguito.
Wonderland Engine 1.0.0 è dedicato a costruire una solida base per le versioni future:
Integrando NodeJS e esbuild per il bundling, siamo in grado di rendere tutti i progetti basati su NodeJS, mantenendo la comodità del precedente bundler interno. Inoltre, abbiamo reso la condivisione dei componenti come pacchetti npm più facile che mai.
Abbiamo riscritto l’API JavaScript in TypeScript. Anche se continui a utilizzare JavaScript per i tuoi progetti, noterai come il tuo IDE possa fare suggerimenti più intelligenti grazie a questo. Ma non vorrai perderti le nuove caratteristiche interessanti come:
Con la riscrittura, abbiamo creato una suite di test completa e risolto un gran numero di bug. Leggi tutto sulla nuova API nel nostro post sul blog “Wonderland Engine 1.0.0 Migrazione JavaScript”.
Per quanto riguarda il rendering, abbiamo apportato alcune modifiche importanti, come l’adattamento del modello di illuminazione dei nostri shader predefiniti per utilizzare un’impostazione intensity
più intuitiva al posto di attenuation
. Queste modifiche stanno spianando la strada a meravigliose funzionalità di rendering per il futuro.
Wonderland Editor è il cuore del flusso di lavoro di sviluppo di Wonderland Engine. Abbiamo aggiunto una nuova funzionalità sperimentale per lanciare il tuo progetto direttamente su dispositivi Android, ad esempio nei browser VR standalone, configurando il port-forwarding per te.
Infine, il web aperto consente di raggiungere un vasto pubblico. Non solo la compatibilità con i dispositivi, ma anche la lingua può essere una barriera. Abbiamo aggiunto strumenti per aiutarti a tradurre i tuoi progetti e raggiungere un pubblico ancora più ampio.
Trova il changelog completo qui di seguito.
Cambiamenti che Rompono la Compatibilità
Poiché teniamo molto alla retrocompatibilità, raramente abbiamo l’opportunità di rompere la compatibilità. Con il passaggio alla versione principale, abbiamo un’opportunità rara per sistemare e correggere le cose.
Quindi siamo stati scrupolosi, ma abbiamo portato con noi la comunità! Le tue librerie preferite sono già aggiornate e pronte per la nuova versione.
Ecco alcuni esempi di modifiche che abbiamo fatto e come abbiamo deciso di attuarle. Siamo entusiasti di sapere cosa ne pensi del risultato.
Esempio: .getTranslationWorld()
e .getTransformationWorld()
sono pericolosamente simili. Anche con l’auto-completamento nel tuo IDE, potresti non renderti conto di utilizzare la funzione sbagliata.
Invece, ora utilizziamo “Position” al posto di “Translation” per descrivere la posizione di un oggetto.
Esempio: l’API precedente memorizzava tutto in un oggetto globale WL
. Ciò rendeva difficile incorporare Wonderland Engine in altre librerie o eseguire più istanze sulla stessa pagina. Ora che le istanze di Wonderland Engine sono racchiuse in una classe WonderlandEngine
, hai il pieno controllo su come e quando instanziarla.
Changelog
Editor
- Aggiunta la visualizzazione di Benchmarking
- Aggiunta la visualizzazione di Localizzazione per aiutare nella traduzione delle esperienze WebXR
- Aggiunto il macro JavaScript WL_EDITOR, impostato su
true
quando l’editor effettua il bundling dei componenti - Aggiunto lo slider per il valore alfa ai selettori di colore
- Aggiunta la scelta per ETC1S (più piccolo, predefinito) e UASTC (qualità superiore) per la compressione delle immagini
- Aggiunti valori predefiniti per le proprietà colorStop dei materiali del cielo
- Aggiunto il menu a tendina dei dispositivi per avviare la pagina direttamente sui dispositivi Android collegati anziché sul dispositivo locale (configurazione del port forwarding automatica)
- Packaging: Rimosse le SVG dei bottoni VR e AR non utilizzate
- Windows: Risolti messaggi di errore casuali prodotti dal file watch
- Il componente di Animazione con animazioni vuote ora è inattivo a runtime
- Rilevamento automatico dei componenti dagli script e pacchetti npm
- Corretto un raro bug in cui un componente aggiunto nell’editor poteva restituire
undefined
quando recuperato a runtime - Risolto l’oscuramento casuale dell’intera interfaccia utente durante varie modifiche al progetto
- Comportamento corretto del Gizmo di rotazione su oggetti con antenati scalati in modo non uniforme
- Risolti arresti anomali durante il cambio di progetti
- Risolte retarget degli alcuni file FBX
- Risolti arresti anomali ed errori di importazione con alcuni file FBX
- Quando si ritargetizza, le tracce per cui non è stato trovato un nuovo obiettivo sono ora eliminate
- Tutti i valori alfa delle proprietà colore ora predefiniti a
1.0
- I valori di spaziatura negativi del componente testuale possono ora essere impostati
- Rimosso il legacy JavaScript bundler a favore del bundler predefinito “esbuild”
- Rimosso l’impostazione “8thwallToken” a favore di specificare nello script entrypoint
- I materiali testuali ora hanno le miniature
- I font ora hanno le miniature
- CLI
- Corretto il comando –import che non istanziava la scena
- Sono stati aggiunti i token come metodo più sicuro di trasmissione delle credenziali all’editor per l’imballaggio su CI
- Aggiunta struttura di benchmarking
- Linux
- Corretto il file watching
- Corrette le stati dei tasti modificatori
- Visualizzazioni
- Asset Browser: I file eliminati ora vengono spostati nella cartella del cestino di sistema invece di essere eliminati definitivamente
- Asset Browser: Le directory di lavoro per le applicazioni predefinite avviate con doppio clic ora sono nella radice del progetto
- Console: Gli stati della casella di controllo Error, Warning, Info ora vengono conservati per progetto
- Console: Corretta la barra di scorrimento orizzontale
- Impostazioni del Progetto: Risolto il grande lag quando si modificava la porta del server dell’editor
- Proprietà: Corretto l’incollaggio delle rotazioni di Eulero
- Risorse: Aggiunto lo scorrimento orizzontale per garantire che l’intero contenuto delle tabelle possa essere letto anche su schermi più piccoli
- Profiler: Migliorato quali sezioni del profilo sono abilitate per impostazione predefinita
- Importazione della Scena
- Ottimizzato il processamento delle mesh
- Aggiunta l’importazione per più proprietà della luce
Engine
- Rendering
- Corretta la cucitura delle texture sullo shader Sky
- Aggiornato all’ultima libreria Slug
- Corretto bug di shadowing dovuto al conteggio interno delle ombre non aggiornato
- Migliorate le query di profilazione GPU
- La velocità di animazione negativa ora riproduce l’animazione al contrario
- Gli shader ora sono compilati in modo asincrono per tempi di caricamento ancora più rapidi
- Supporto per la compressione UASTC
- Cambiato il motore di animazione per le prossime caratteristiche
- Sistematicamente corrette varie rare crash dovuti all’accesso fuori dai limiti dell’array
- La “attenuazione” della luce è stata rimossa a favore di un’impostazione “intensità” più intuitiva
- Phong
- Il termine ambientale ora viene recuperato moltiplicando il colore ambientale con il termine diffuso
- Il colore diffuso ora è moltiplicato con la texture diffusa
- Il colore del vertice ora è moltiplicato con la texture diffusa e il colore
- Il modello di distanza della luce predefinito ora è uno standard inverso a caduta quadrata (il vecchio comportamento è deprecato ma ancora disponibile tramite una casella di controllo caratteristica)
- Aggiunta una funzionalità di base
TONE_MAPPING
- Flat
- Il colore del vertice ora è moltiplicato con colore e texture
- Ottimizzati i tempi della CPU per lo Streaming delle Texture
- Corretti vari rari crash dello Streaming delle Texture
- Aggiunte più sezioni di profilo al Profiler
Runtime
- PWA: Risolti vari file non memorizzati nella cache dal service worker per l’uso offline
- Corretto un potenziale crash nel Profiler
- Tipo di input “Head” corretto
- I dati del file .bin completamente consumati ora vengono eliminati dopo il caricamento, migliorando l’uso della memoria
- Ora è possibile utilizzare più istanze del motore su una singola pagina web
- Ridotta la memoria massima disponibile per WebAssembly a 512 MB per una migliore esperienza di debug e compatibilità hardware iOS più vecchio
- Il WebAssembly ora è correttamente modulare per consentire l’uso con qualsiasi altro modulo WebAssembly
- La ridimensione ora viene gestita tramite
ResizeObserver
JavaScript API
- TypeScript
- Aggiunto decoratore
@property.<type>
per definire proprietà configurabili direttamente nel corpo della classe - Interamente riscritta l’API in TypeScript
- Aggiunto decoratore
- Aggiunti
PhysXComponent.group
,PhysXComponent.block
e molte altre proprietà mancanti - Aggiunti
XR.currentReferenceSpace
,XR.currentReferenceSpaceType
eXR.referenceSpaceForType
- Aggiunti
XR
eWonderlandEngine.xr
per l’accesso allo stato correlato a WebXR - Aggiunta una grande quantità di nuovi test automatici
- Aggiunto un nuovo tipo di proprietà
Color
- Aggiunti metodi equals() per Mesh, Material, Texture, Animation e Skin
- Aggiunto
LightComponent.setColor
- Aggiunti
_wl_nextUpdate
e_wl_nextFrame
per consentire il test automatico dei componenti - Aggiunte le rimanenti proprietà di
LightComponent
LightComponent.color
ora restituisce solo 3 elementi per RGB- Aggiunti controlli di compatibilità per versione runtime e API
- Aggiunto
onRegister
per consentire l’esecuzione di comportamenti aggiuntivi quando un componente è registrato - Tutto lo stato globale dell’API è stato rimosso
- I componenti personalizzati ora sono classi:
export class CustomComponent extends Component
- Corretto
AnimationComponent.state
che restituiva valori enum errati - Corretto
Object3D.lookAt()
e chiarito il suo comportamento nella documentazione - Corretto clonaggio dei componenti con
Object3D.addComponent(type, otherComponent)
- Corretto
Component.destroy()
che distruggeva, ma non rimuoveva i componenti dagli oggetti - Corretto gli elementi
RayHit.objects
che non eranonull
per gli indici non utilizzati - Applicazione coerente dei parametri predefiniti come nell’editor
- Rimosso callback
onXRSupported
, dato cheWonderlandEngine.arSupported
eWonderlandEngine.vrSupported
sono ora disponibili dall’inizio dell’applicazione - Rinominate le funzioni
Material.shader
inMaterial.pipeline
- Sostituiti array di callback (
onSceneLoaded
,onXRSessionStart
, …) con una nuova classeEmitter
onXRSessionStart
ora è unRetainEmitter
, che attiva immediatamente i callback se una sessione XR è già in corso.AnimationComponent.animation
ora restituisce correttamentenull
quando non impostatoComponent.onDestroy
ora è chiamato quando viene caricata una nuova scenaObject
è oraObject3D
per evitare di ombreggiare il tipo integrato JavaScriptScene.load()
eScene.append()
ora sonoasync
- Funzioni
Translation
rinominate inPosition
per evitare confusione con le funzioniTransform
Componenti
- Convertiti tutti i componenti in classi
- Convertiti alcuni componenti in TypeScript
- Aggiunto componente trail
- Aggiunto componente plane-detection
- Aggiunto componente anchor
- cursor-target: Deprecato
add*Function
a favore degli eventionClick
,onHover
,onUnhover
,onMove
Problemi Conosciuti
- L’input tramite estensioni WebXR Emulator non funziona
- Componenti personalizzati mancanti possono causare un loop di impacchettamento su Windows