Jolt Physics en Evergine

El primer paso hacia la simulación industrial y la Physical AI

Una carretilla elevadora transportando un palé por un almacén, simulada con Jolt Physics en Evergine

Evergine nació para crear aplicaciones 3D industriales: gemelos digitales, herramientas de formación y visualizaciones de procesos que funcionan en escritorio, web, móvil y XR. Cada vez más, a esas aplicaciones no solo se les pide mostrar las cosas, sino simular cómo se comportan. Y para que eso sea útil, la física tiene que ser creíble.

Por eso hemos reconstruido la física de Evergine sobre Jolt Physics, un motor de física moderno y multinúcleo. Sustituye a Bullet, que nos ha servido bien durante años, y es el primer paso de una hoja de ruta para hacer de Evergine una plataforma de simulación aún más potente: después llega MuJoCo, que hará el motor más capaz para la Physical AI.

En resumen:

En este artículo

Por qué importa la simulación

En la industria, cambiar el mundo real es caro. Reorganizar un almacén, poner en marcha una nueva línea de producción o formar a un operario en una máquina pesada cuesta tiempo, dinero y, a veces, seguridad. La simulación permite hacerlo antes en una copia virtual, donde equivocarse no cuesta nada:

Todo esto depende de lo mismo: cuando algo se empuja, se levanta, se cae o se conduce, tiene que reaccionar como lo haría en la realidad. Si la física no es creíble, la simulación no sirve para tomar decisiones.

Hacia dónde vamos

Mejorar la física de Evergine no es una funcionalidad aislada. Es una hoja de ruta con dos pasos, y los dos apuntan en la misma dirección: la Physical AI.

Diagrama: Jolt Physics y MuJoCo, dos pasos que refuerzan Evergine para la Physical AI

  1. Jolt Physics, disponible ya. Un motor en tiempo real, rápido y estable, para escenas industriales interactivas en todas las plataformas que soporta Evergine.
  2. MuJoCo, en desarrollo. El motor de referencia en la investigación en robótica, para simular robots con sus articulaciones, actuadores y contactos reales.

La Physical AI (IA física), la IA que percibe y actúa en el mundo físico, es hoy uno de los campos con más demanda, y se apoya en la simulación para entrenar y validar sus sistemas. Cada paso de esta hoja de ruta hace a Evergine más capaz para ella.

Este artículo trata de Jolt. Volvemos a MuJoCo al final.

Por qué Jolt

Logo de Jolt Physics

Jolt Physics es un motor de física de código abierto creado por Jorrit Rouwe y publicado bajo la licencia permisiva MIT. Se diseñó desde el principio para las CPU multinúcleo modernas, tiene una comunidad grande y muy activa, y ha demostrado lo que vale en producciones comerciales exigentes y de alto perfil. Su código fuente y su documentación de arquitectura son abiertos, así que sabemos exactamente qué hace el solver.

Bullet ha sido el motor de física de Evergine durante años y sigue siendo una librería respetada. Pero su desarrollo se ha ralentizado (su última versión, la 3.25, es de 2022), mientras que Jolt está en desarrollo activo y no deja de incorporar funcionalidades. Para nosotros, el cambio tiene que ver con el futuro: elegir el motor con el que queremos crecer.

Esto es lo que cambia para un desarrollador de Evergine:

Bullet (antes)Jolt (ahora)
PaqueteEvergine.Bullet, instalado aparteIncluido en Evergine.Framework
MultinúcleoCada paso se ejecutaba en un solo hiloCada paso se reparte entre los núcleos de la CPU
DeterminismoNo garantizadoOpcional: la misma escena da siempre el mismo resultado
VehículosVehículos con ruedasVehículos con ruedas y con orugas, con motor y caja de cambios
PersonajesControlador de personajes cinemáticoSube escalones, viaja sobre plataformas móviles y empuja objetos
Cuerpos blandosNo disponiblesTelas y cuerpos blandos presurizados y volumétricos
DesarrolloÚltima versión en 2022En desarrollo activo

Aplicaciones más rápidas y con mejor respuesta

La física en Evergine no sirve solo para simular máquinas. La mayoría de las aplicaciones interactivas la usan en cada frame, a menudo sin que nadie se dé cuenta: los colliders le dicen a la aplicación a qué está apuntando el usuario, los ray casts seleccionan objetos y los eventos de colisión disparan acciones. Es el caso de las aplicaciones XR, donde las manos y los mandos pulsan botones, cogen objetos y navegan por menús, y de las aplicaciones de escritorio donde los usuarios seleccionan y manipulan modelos 3D.

Con Jolt, todo esto es más rápido y responde mejor. La detección de colisiones y los ray casts tardan menos, los contactos son más estables y el trabajo se reparte entre los núcleos de la CPU, así que las interacciones responden al instante incluso en escenas con muchos objetos. Las aplicaciones hechas con Evergine MRTK, nuestro Mixed Reality Toolkit, se benefician directamente: sus botones, sliders, menús e interacciones con las manos se basan en colliders, y ahora reaccionan más rápido y con más suavidad.

El nuevo sample de física

Para mostrar la nueva física en un entorno industrial, hemos creado un sample nuevo: una carretilla elevadora en un almacén que recoge un palé de una estantería y lo transporta.

El nuevo sample de física, hecho con Evergine y Jolt Physics

La escena usa assets preparados para simulación, con escala y masas reales. La carretilla es un vehículo de 3,4 toneladas con motor y dirección real, su mástil y sus horquillas se mueven con motores, y los palés y las cajas pesan lo que pesarían en un almacén de verdad. En la puerta cuelga una cortina de tiras blanda. Toda la física está configurada desde Evergine Studio, sin código de física.

La vista desde el asiento del conductor, mirando a las estanterías

La cámara del conductor. Las estanterías, los palés y las cajas forman parte de la simulación

Puedes probarlo en tu navegador y consultar su código fuente en GitHub. Los modelos 3D proceden de NVIDIA SimReady y tienen licencia CC BY 4.0.

Novedades de la física de Evergine

Además del cambio de motor, la API de física se ha rediseñado con nombres más sencillos y hay mucho más que simular. Estas son las novedades más destacadas.

Vehículos

Un vehículo es un único cuerpo con un controlador: motor, caja de cambios, dirección, frenos y una suspensión para cada rueda. Así se mantiene estable a velocidad y es barato de simular. Junto a los vehículos con ruedas, ahora hay un controlador de vehículos con orugas para máquinas como bulldozers y excavadoras.

Un vehículo con orugas, nuevo en esta versión

Personajes y ragdolls

El nuevo controlador de personajes sube escalones, sigue las pendientes, viaja sobre plataformas móviles y empuja los objetos con los que choca. Es lo que necesitas para recorrer una planta o para representar a una persona en un escenario de formación.

El controlador de personajes subiendo escalones

Los ragdolls permiten que la simulación tome el control de una figura. Un personaje puede caminar siguiendo su animación y, en cualquier momento, caer y reaccionar físicamente, conservando la inercia que llevaba.

Una figura que pasa de su animación a ser un ragdoll

Cuerpos blandos y telas

Los cuerpos blandos (soft bodies) son totalmente nuevos. Las telas caen y se pliegan, un globo se aplasta al aterrizar y un cojín cede y recupera su forma. Cualquier malla puede convertirse en un cuerpo blando, y partes de ella pueden fijarse en el sitio o a otro objeto, como una pancarta en un mástil o la cortina de tiras del nuevo sample de física.

Telas y cuerpos blandos presurizados y volumétricos

Diseñado en Studio

Todo esto se puede configurar desde Evergine Studio, en el inspector, y probar con el Play Mode sin salir del editor. Puedes leer más en Novedades de Evergine Studio. Y cuando algo no se comporta como esperas, el debug rendering dibuja las formas físicas y las articulaciones sobre la escena.

Primeros pasos

La física está en el espacio de nombres Evergine.Framework.Physics. Registra un PhysicsManager en tu escena y añade un cuerpo y un collider a cualquier entidad:

using Evergine.Framework.Physics;

public class MyScene : Scene
{
    public override void RegisterManagers()
    {
        base.RegisterManagers();

        // Un mundo físico por escena
        this.Managers.AddManager(new PhysicsManager());
    }

    protected override void CreateScene()
    {
        // Una caja de 20 kg que cae y colisiona (añade una malla y un material para verla)
        var box = new Entity("box")
            .AddComponent(new Transform3D() { Position = new Vector3(0f, 3f, 0f) })
            .AddComponent(new RigidBody() { Mass = 20f })
            .AddComponent(new BoxCollider());

        this.Managers.EntityManager.Add(box);
    }
}

La sección de física de la documentación de Evergine explica cada componente en detalle, con vídeos y ejemplos.

Migrar desde Bullet

Si tu proyecto usa la física anterior, tendrás que migrarlo. El paquete Evergine.Bullet ya no es necesario y todos los componentes tienen un nombre nuevo: RigidBody3D pasa a ser RigidBody, BoxCollider3D pasa a ser BoxCollider, HingeJoint3D pasa a ser HingeConstraint, y así con el resto.

Para la parte mecánica del trabajo, hemos creado una herramienta de migración que actualiza el código C#, los ficheros de proyecto, las escenas y los prefabs. Por defecto se ejecuta en modo de prueba, sin cambiar nada, hace una copia de seguridad de cada fichero que modifica e informa de todo lo que requiere una decisión humana. La guía Migrating from Bullet, en la sección de física de la documentación de Evergine, tiene la lista completa de equivalencias y el proceso recomendado.

Lo que viene: MuJoCo y Physical AI

Jolt le da a Evergine una base sólida en tiempo real. El siguiente paso, en el que ya estamos trabajando, es integrar MuJoCo.

Logo de MuJoCo

MuJoCo, acrónimo de Multi-Joint dynamics with Contact, es un motor de física creado para la investigación en robótica, biomecánica y aprendizaje automático. Lo mantiene Google DeepMind desde 2021 y es de código abierto, con licencia Apache 2.0, desde 2022. MuJoCo describe un robot directamente a partir de sus articulaciones, así que un brazo no puede descomponerse y su dinámica se calcula con precisión. Cada robot se define en un fichero de modelo con las masas, las inercias, los límites de las articulaciones y los actuadores del hardware real, y ya existe un amplio catálogo de robots reales en ese formato. Por eso MuJoCo se ha convertido en uno de los simuladores de referencia en la investigación en robótica.

Llevar MuJoCo a Evergine permitirá colocar el modelo de un robot real en una escena industrial y verlo moverse como el real, renderizado con Evergine en cualquier plataforma.

Con MuJoCo, el motor de Evergine será aún más capaz para la Physical AI: sistemas de IA que perciben, entienden y actúan en el mundo físico, desde brazos robóticos y robots móviles autónomos hasta carretillas autónomas. Es hoy uno de los campos con más demanda y que más rápido crece. Estos sistemas se entrenan y se validan en simulación mucho antes de desplegarse, porque un simulador puede ejecutar miles de escenarios de forma segura y mucho más rápido que la realidad. Para ello necesitan una física fiable y entornos que se parezcan a los reales. Escenas industriales creíbles con Jolt, robots precisos con MuJoCo y el renderizado de Evergine en cualquier dispositivo son justo eso.

Pruébalo y cuéntanos qué te parece

Jolt Physics forma parte de la release de noviembre de 2026 de Evergine. Actualiza Evergine, abre una escena y dale algo que empujar, levantar y transportar.

Nos encantará ver lo que construyes y saber qué simulaciones te gustaría hacer a continuación.

David Ávila
Autor
David Ávila
Plain Concepts Research