Lanzamiento 1.0.0
Encuentra el registro de cambios completo a continuación.
Wonderland Engine 1.0.0 se centra en construir una base sólida para futuras versiones:
Al integrar NodeJS y esbuild para el empaquetado, podemos hacer que todos los proyectos se basen en NodeJS manteniendo la conveniencia del empaquetador interno anterior. Además, hemos facilitado más que nunca compartir componentes como paquetes de npm.
Reescribimos la API de JavaScript en TypeScript. Incluso si sigues usando JavaScript para tus proyectos, notarás cómo tu IDE es capaz de hacer sugerencias más inteligentes debido a esto. Pero entonces te perderías características nuevas interesantes como:
Con la reescritura, creamos un conjunto de pruebas exhaustivo y corregimos una gran cantidad de errores. Lee todo sobre la nueva API en nuestro blog “Migración de JavaScript de Wonderland Engine 1.0.0”.
Para el renderizado, hicimos algunos cambios importantes, como adaptar el modelo de iluminación
de nuestros sombreadores predeterminados para usar una configuración intensity
más intuitiva
para reemplazar attenuation
. Estos cambios están allanando el camino para características de
renderizado maravillosas en el futuro.
Editor de Wonderland es el corazón del flujo de trabajo de desarrollo de Wonderland Engine. Añadimos una nueva función experimental para lanzar tu proyecto directamente en dispositivos Android, por ejemplo, navegadores VR autónomos, configurando el reenvío de puertos por ti.
Finalmente, la web abierta te permite llegar a una amplia audiencia. No solo la compatibilidad de dispositivos, sino también el idioma puede ser una barrera. Añadimos herramientas para ayudarte a traducir tus proyectos y alcanzar a una audiencia aún más amplia.
Encuentra el registro de cambios completo a continuación.
Cambios Importantes
Debido a que nos importa mucho la compatibilidad hacia atrás, no solemos tener la oportunidad de romper cosas. Con el cambio de versión principal, tenemos una rara oportunidad para limpiar y hacer las cosas bien.
Así que fuimos exhaustivos, ¡pero llevamos a la comunidad con nosotros! Tus librerías favoritas ya están actualizadas y listas para usar con la nueva versión.
Aquí hay algunos ejemplos de los cambios que hicimos y cómo decidimos sobre ellos. Estamos emocionados de ver qué piensas del resultado.
Ejemplo: .getTranslationWorld()
y .getTransformationWorld()
son peligrosamente similares.
Incluso con autocompletado en tu IDE, podrías no darte cuenta de que estás usando la función incorrecta.
En su lugar, ahora usamos “Position” en lugar de “Translation” para describir la posición de un objeto.
Ejemplo: la antigua API almacenaba todo en un objeto global WL
. Eso dificultaba la integración de
Wonderland Engine en otras librerías o ejecutar múltiples instancias en una sola página. Ahora que las
instancias de Wonderland Engine están encapsuladas en una clase WonderlandEngine
, tienes control total
sobre cómo y cuándo la instancias.
Registro de Cambios
Editor
- Añadida vista de Benchmarking
- Añadida vista de Localización para ayudar en la traducción de experiencias WebXR
- Añadida macro JavaScript WL_EDITOR, que se establece en
true
cuando el editor empaqueta componentes - Añadido deslizador de valor alfa en selectores de color
- Añadida opción para ETC1S (más pequeño, por defecto) y UASTC (mayor calidad) para compresión de imágenes
- Añadidos valores predeterminados para propiedades colorStop de Material del Cielo
- Añadido menú desplegable de dispositivos para lanzar la página directamente en dispositivos Android conectados en lugar de en el dispositivo local (reenvío de puertos configurado automáticamente)
- Embalaje: Eliminados SVGs de botones VR y AR no utilizados
- Windows: Corregidos mensajes de error aleatorios producidos por observación de archivos
- El componente de Animación con animaciones vacías ahora está inactivo en tiempo de ejecución
- Detectar automáticamente componentes desde scripts y paquetes npm
- Corregido un error raro donde un componente añadido en el editor podía devolver
undefined
cuando se recuperaba en tiempo de ejecución - Corregido oscurecimiento aleatorio de toda la IU al hacer varios cambios en el proyecto
- Corregido comportamiento de Gizmo de rotación en objetos con ancestros escalados de manera no uniforme
- Corregidos bloqueos al cambiar proyectos
- Corregido redirección de algunos archivos FBX
- Corregidos bloqueos y errores de importación con algunos archivos FBX
- Al redireccionar, ahora se eliminan las pistas para las que no se puede encontrar un nuevo objetivo
- Hicimos que todos los valores alfa de propiedades de color por defecto sean
1.0
- Ahora se pueden establecer valores negativos de espaciado de texto del componente
- Eliminado empaquetador de JavaScript heredado en favor del empaquetador “esbuild” por defecto
- Eliminada configuración de “8thwallToken” en favor de especificar en el script de entrada
- Los materiales de texto ahora tienen miniaturas
- Las fuentes ahora tienen miniaturas
- CLI
- Corregido comando –import no instanciando la escena
- Se añadieron tokens como un método más seguro de pasar credenciales al editor para el empaquetado en CI
- Añadido marco de benchmarking
- Linux
- Corregida observación de archivos
- Corregidos estados de teclas modificadoras
- Vistas
- Navegador de Activos: Los archivos eliminados ahora se mueven a la carpeta de papelera del sistema en lugar de eliminarse permanentemente
- Navegador de Activos: Los directorios de trabajo para aplicaciones predeterminadas lanzadas con doble clic ahora son la raíz del proyecto
- Consola: Los estados de las casillas de Error, Advertencia e Información ahora se preservan por proyecto
- Consola: Corregido desplazamiento horizontal
- Configuración de Proyecto: Corregido gran retraso al cambiar el puerto del servidor del editor
- Propiedades: Corregida pega de rotaciones de Euler
- Recursos: Añadido desplazamiento horizontal para asegurar que toda la tabla pueda leerse incluso en pantallas más pequeñas
- Perfilador: Mejoradas las secciones de perfil habilitadas por defecto
- Importación de escena
- Procesamiento de mallas optimizado
- Añadida importación para más propiedades de luz
Motor
- Renderizado
- Corregida costura de textura en el sombreador de Cielo
- Actualizado a la última Biblioteca Slug
- Corregido error de sombreado debido a que el conteo interno de sombras no se actualizaba
- Mejoradas consultas de perfilado de GPU
- Velocidad de animación negativa ahora reproduce la animación hacia atrás
- Los sombreadores ahora se compilan de forma asíncrona para tiempos de carga aún más rápidos
- Soporte para compresión UASTC
- Cambiado motor de animación para funciones futuras
- Corrigieron sistemáticamente varios bloqueos raros debido al acceso a arreglos fuera de límites
- La “attenuation” de la luz fue eliminada en favor de una “intensity” más intuitiva
- Phong
- El término ambiente ahora se obtiene multiplicando el color ambiente con el término difuso
- El color difuso ahora se multiplica con la textura difusa
- El color del vértice ahora se multiplica con la textura difusa y el color
- El modelo de distancia de luz predeterminado ahora es una caída inversa al cuadrado estándar (el comportamiento antiguo está obsoleto pero sigue disponible a través de una casilla de verificación de características)
- Añadida una función básica de
TONE_MAPPING
- Flat
- El color del vértice ahora se multiplica con el color y la textura
- Tiempos de CPU optimizados del streaming de texturas
- Corregidos varios bloqueos raros de streaming de texturas
- Añadidas más secciones de perfil al perfilador
Tiempo de ejecución
- PWA: Corregidos varios archivos no almacenados en caché por el service worker para uso sin conexión
- Corregido un posible bloqueo en el perfilador
- Corregido tipo de entrada “Head”
- Los datos del archivo .bin totalmente consumidos ahora se descartan después de la carga, mejorando el uso de memoria
- Ahora es posible usar múltiples instancias del motor en una sola página web
- Máxima memoria disponible para WebAssembly reducida a 512 MB para una mejor experiencia de depuración y compatibilidad con hardware iOS más antiguo
- El WebAssembly ahora está propiamente modularizado para permitir su uso con cualquier otro módulo de WebAssembly
- El redimensionamiento ahora se maneja a través de
ResizeObserver
API de JavaScript
- TypeScript
- Añadido decorador
@property.<type>
para definir propiedades configurables directamente en el cuerpo de la clase - Reescribe completamente la API en TypeScript
- Añadido decorador
- Añadido
PhysXComponent.group
,PhysXComponent.block
y muchas más propiedades faltantes - Añadido
XR.currentReferenceSpace
,XR.currentReferenceSpaceType
yXR.referenceSpaceForType
- Añadido
XR
yWonderlandEngine.xr
para acceder al estado relacionado con WebXR - Añadida una gran cantidad de nuevas pruebas automatizadas
- Añadido un nuevo tipo de propiedad
Color
- Añadidos métodos equals() para Mesh, Material, Texture, Animation y Skin
- Añadido
LightComponent.setColor
- Añadidos
_wl_nextUpdate
y_wl_nextFrame
para permitir pruebas automatizadas de componentes - Añadidas las propiedades restantes de
LightComponent
LightComponent.color
ahora devuelve solo 3 elementos para RGB- Añadidas comprobaciones de compatibilidad de versiones de tiempo de ejecución y API
- Añadido
onRegister
para permitir ejecutar un comportamiento adicional cuando se registra un componente - Todo el estado global de la API ha sido eliminado
- Los componentes personalizados ahora son clases:
export class CustomComponent extends Component
- Corregido
AnimationComponent.state
devolviendo valores de enumeración incorrectos - Corregido
Object3D.lookAt()
y aclarado su comportamiento en la documentación - Corregida clonación de componentes con
Object3D.addComponent(type, otherComponent)
- Corregido
Component.destroy()
solo destruyendo, pero no eliminando componentes de objetos - Corregidos elementos
RayHit.objects
que no sonnull
para índices no usados - Parámetros predeterminados aplicados de manera consistente con el editor
- Eliminado callback
onXRSupported
, dado queWonderlandEngine.arSupported
yWonderlandEngine.vrSupported
ahora están disponibles desde el inicio de la aplicación - Renombrado
Material.shader
aMaterial.pipeline
- Reemplazadas las matrices de callbacks (
onSceneLoaded
,onXRSessionStart
, …) con una nueva claseEmitter
onXRSessionStart
ahora es unRetainEmitter
, que activa callbacks inmediatamente si ya se está ejecutando una sesión XR.AnimationComponent.animation
ahora devuelve correctamentenull
cuando no está configuradoComponent.onDestroy
ahora se llama cuando se carga una nueva escenaObject
ahora esObject3D
para evitar sombreado del tipo JavaScript incorporadoScene.load()
yScene.append()
ahora sonasync
- Renombradas funciones de
Translation
aPosition
para evitar confusión con funcionesTransform
Componentes
- Convertidos todos los componentes a clases
- Convertidos algunos componentes a TypeScript
- Añadido componente de rastro
- Añadido componente de detección de plano
- Añadido componente de anclaje
- cursor-target:
add*Function
obsoleto en favor de emisores de eventosonClick
,onHover
,onUnhover
,onMove
Problemas Conocidos
- La entrada a través de extensiones del Emulador WebXR no funciona
- La falta de componentes personalizados puede causar un ciclo de empaquetado en Windows