Jolt Physics dans Evergine

Un premier pas vers la simulation industrielle et la Physical AI

Un chariot élévateur transportant une palette dans un entrepôt, simulé avec Jolt Physics dans Evergine

Evergine est né pour créer des applications 3D industrielles : jumeaux numériques, outils de formation et visualisations de processus qui fonctionnent sur desktop, sur le web, sur mobile et en XR. De plus en plus, ces applications doivent non seulement montrer les choses, mais aussi simuler leur comportement. Pour être utile dans ce contexte, la physique doit être crédible.

C’est pourquoi nous avons reconstruit la physique d’Evergine sur Jolt Physics, un moteur physique moderne et multicœur. Il remplace Bullet, qui nous a bien servi pendant des années, et constitue la première étape d’une feuille de route visant à faire d’Evergine une plateforme de simulation encore plus solide : la prochaine étape est MuJoCo, qui rendra le moteur plus performant pour la Physical AI.

En bref :

Dans cet article

Pourquoi la simulation est importante

Dans l’industrie, modifier le monde réel coûte cher. Réorganiser un entrepôt, mettre en service une nouvelle ligne de production ou former un opérateur sur une machine lourde, tout cela coûte du temps, de l’argent et parfois de la sécurité. La simulation vous permet de le faire d’abord sur une copie virtuelle, où les erreurs ne coûtent rien :

Tous ces cas reposent sur la même chose : lorsqu’un objet est poussé, soulevé, lâché ou conduit, il doit réagir comme il le ferait dans la réalité. Si la physique n’est pas crédible, la simulation n’est pas utile pour prendre des décisions.

Où nous allons

Une meilleure physique dans Evergine n’est pas une fonctionnalité ponctuelle. C’est une feuille de route en deux étapes, qui pointent toutes deux dans la même direction : la Physical AI.

Schéma : Jolt Physics et MuJoCo, deux étapes qui renforcent Evergine pour la Physical AI

  1. Jolt Physics, disponible dès maintenant. Un moteur temps réel rapide et stable pour les scènes industrielles interactives, sur toutes les plateformes prises en charge par Evergine.
  2. MuJoCo, en cours. Le moteur de référence de la recherche en robotique, pour simuler des robots avec leurs articulations, actionneurs et contacts réels.

La Physical AI, l’IA qui perçoit le monde physique et y agit, est aujourd’hui l’un des domaines les plus demandés, et elle s’appuie sur la simulation pour entraîner et valider ses systèmes. Chaque étape de cette feuille de route rend Evergine plus performant dans ce domaine.

Cet article porte sur Jolt. Nous reviendrons sur MuJoCo à la fin.

Pourquoi Jolt

Logo de Jolt Physics

Jolt Physics est un moteur physique open source créé par Jorrit Rouwe et publié sous la licence permissive MIT. Il a été conçu dès l’origine pour les CPU multicœurs modernes, il bénéficie d’une communauté vaste et très active, et il a fait ses preuves dans des productions commerciales exigeantes et de premier plan. Son code source et sa documentation d’architecture sont ouverts : nous savons donc exactement ce que fait le solveur.

Bullet a été le moteur physique d’Evergine pendant des années, et il reste une bibliothèque respectée. Mais son développement a ralenti (sa dernière release, la 3.25, date de 2022), alors que Jolt est activement développé et continue de s’enrichir. Pour nous, ce changement était une question d’avenir : choisir le moteur avec lequel nous voulons évoluer.

Voici ce qui change pour un développeur Evergine :

Bullet (avant)Jolt (maintenant)
PackageEvergine.Bullet, installé séparémentIntégré à Evergine.Framework
MulticœurLe pas de simulation s’exécutait sur un seul threadLe pas de simulation est réparti sur les cœurs du CPU
DéterminismeNon garantiEn option : la même scène donne toujours le même résultat
VéhiculesVéhicules à rouesVéhicules à roues et à chenilles, avec moteur et boîte de vitesses
PersonnagesContrôleur de personnage cinématiqueMonte les marches, se déplace sur des plateformes mobiles et pousse des objets
Corps mousNon disponibleTissus, corps mous pressurisés et volumétriques
DéveloppementDernière release en 2022Activement développé

Des applications plus rapides et plus réactives

Dans Evergine, la physique ne sert pas seulement à simuler des machines. La plupart des applications interactives s’appuient sur elle à chaque frame, souvent sans que personne ne s’en aperçoive : les colliders indiquent à l’application ce que l’utilisateur pointe, les ray casts sélectionnent les objets et les événements de collision déclenchent des actions. C’est le cas des applications XR, où les mains et les contrôleurs appuient sur des boutons, saisissent des objets et naviguent dans des menus, ainsi que des applications desktop dans lesquelles les utilisateurs sélectionnent et manipulent des modèles 3D.

Avec Jolt, tout cela est plus rapide et plus réactif. La détection des collisions et les ray casts prennent moins de temps, les contacts sont plus stables et le travail est réparti sur les cœurs du CPU : les interactions répondent immédiatement, même dans des scènes comportant de nombreux objets. Les applications développées avec Evergine MRTK, notre Mixed Reality Toolkit, en bénéficient directement : ses boutons, curseurs, menus et interactions manuelles reposent tous sur des colliders, et ils réagissent désormais plus vite et de manière plus fluide.

Le nouvel exemple de physique

Pour montrer la nouvelle physique dans un contexte industriel, nous avons créé un nouvel exemple : un chariot élévateur dans un entrepôt qui prend une palette sur un rayonnage et la transporte.

Le nouvel exemple de physique, développé avec Evergine et Jolt Physics

La scène utilise des assets prêts pour la simulation, avec des échelles et des masses réelles. Le chariot élévateur est un véhicule de 3,4 tonnes doté d’un moteur et d’une direction réaliste, son mât et ses fourches sont actionnés par des moteurs, et les palettes et les cartons pèsent ce qu’ils pèseraient dans un véritable entrepôt. Un rideau à lanières souple est suspendu à la porte. Toute la physique est configurée depuis Evergine Studio, sans code physique.

La vue depuis le siège du conducteur, face aux rayonnages

La caméra conducteur. Rayonnages, palettes et cartons font tous partie de la simulation

Vous pouvez l’essayer dans votre navigateur et parcourir son code source sur GitHub. Les modèles 3D proviennent de NVIDIA SimReady et sont publiés sous licence CC BY 4.0.

Les nouveautés de la physique d’Evergine

Au-delà du changement de moteur, l’API physique a été repensée avec des noms plus simples, et il y a beaucoup plus de choses à simuler. Voici les points forts.

Véhicules

Un véhicule est un corps unique doté d’un contrôleur : un moteur, une boîte de vitesses, une direction, des freins et une suspension pour chaque roue. Il reste ainsi stable à grande vitesse et peu coûteux à simuler. Aux côtés des véhicules à roues, il existe désormais un contrôleur de véhicule à chenilles pour des engins comme les bulldozers et les excavatrices.

Un véhicule à chenilles, nouveauté de cette release

Personnages et ragdolls

Le nouveau contrôleur de personnage monte les marches, suit les pentes, se déplace sur des plateformes mobiles et pousse les objets qu’il rencontre. C’est ce qu’il vous faut pour la visite virtuelle d’une usine ou pour une personne dans un scénario de formation.

Le contrôleur de personnage montant des marches

Les ragdolls permettent à la simulation de prendre le contrôle d’un personnage. Un personnage peut marcher sous l’effet de son animation et, à tout moment, tomber et réagir physiquement, en conservant l’élan qu’il avait.

Un personnage passant de son animation à un ragdoll

Corps mous et tissus

Les corps mous sont une nouveauté complète. Les tissus tombent et se plissent, un ballon s’écrase en touchant le sol et un coussin cède avant de reprendre sa forme. N’importe quel mesh peut devenir un corps mou, et certaines de ses parties peuvent être fixées sur place ou à un autre objet, comme une bannière sur un mât ou le rideau à lanières du nouvel exemple de physique.

Tissus, corps mous pressurisés et volumétriques

Conçu dans Studio

Tout cela peut être configuré depuis Evergine Studio, dans l’inspecteur, et testé avec le Play Mode sans quitter l’éditeur. Pour en savoir plus, lisez Les nouveautés d’Evergine Studio. Lorsque quelque chose ne se comporte pas comme prévu, le rendu de débogage dessine les formes physiques et les articulations par-dessus la scène.

Prise en main

La physique se trouve dans le namespace Evergine.Framework.Physics. Enregistrez un PhysicsManager dans votre scène, puis ajoutez un corps et un collider à n’importe quelle entité :

using Evergine.Framework.Physics;

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

        // One physics world per scene
        this.Managers.AddManager(new PhysicsManager());
    }

    protected override void CreateScene()
    {
        // A 20 kg box that falls and collides (add a mesh and a material to see it)
        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 section physique de la documentation d’Evergine décrit chaque composant en détail, avec des vidéos et des exemples.

Migrer depuis Bullet

Si votre projet utilise la physique précédente, il devra être migré. Le package Evergine.Bullet n’est plus nécessaire, et chaque composant porte un nouveau nom : RigidBody3D devient RigidBody, BoxCollider3D devient BoxCollider, HingeJoint3D devient HingeConstraint, et ainsi de suite.

Pour la partie mécanique du travail, nous avons créé un outil de migration qui met à jour le code C#, les fichiers de projet, les scènes et les prefabs. Par défaut, il s’exécute en mode simulation, crée une sauvegarde de chaque fichier qu’il modifie et signale tout ce qui nécessite une décision humaine. Le guide Migrating from Bullet, dans la section physique de la documentation d’Evergine, contient la liste complète des équivalences et la démarche recommandée.

Et ensuite : MuJoCo et la Physical AI

Jolt offre à Evergine une base temps réel solide. La prochaine étape, sur laquelle nous travaillons déjà, est l’intégration de MuJoCo.

Logo de MuJoCo

MuJoCo, abréviation de Multi-Joint dynamics with Contact, est un moteur physique créé pour la recherche en robotique, en biomécanique et en machine learning. Il est maintenu par Google DeepMind depuis 2021 et est open source sous licence Apache 2.0 depuis 2022. MuJoCo décrit un robot directement par ses articulations : un bras ne peut donc pas se disloquer et sa dynamique est calculée avec précision. Un robot est défini dans un fichier de modèle avec les masses, les inerties, les limites articulaires et les actionneurs du matériel réel, et un vaste catalogue de robots réels est déjà disponible dans ce format. C’est pourquoi MuJoCo est devenu l’un des simulateurs de référence de la recherche en robotique.

L’intégration de MuJoCo à Evergine vous permettra de placer un véritable modèle de robot dans une scène industrielle et de le voir bouger comme le vrai, avec le rendu d’Evergine sur n’importe quelle plateforme.

Avec MuJoCo, le moteur d’Evergine devient encore plus performant pour la Physical AI : des systèmes d’IA qui perçoivent, comprennent le monde physique et y agissent, des bras robotisés et robots mobiles autonomes jusqu’aux chariots élévateurs autonomes. C’est aujourd’hui l’un des domaines les plus demandés et dont la croissance est la plus rapide. Ces systèmes sont entraînés et validés en simulation bien avant d’être déployés, car un simulateur peut exécuter des milliers de scénarios en toute sécurité et bien plus vite que la réalité. Pour cela, ils ont besoin d’une physique fiable et d’environnements fidèles à la réalité. Des scènes industrielles crédibles avec Jolt, des robots précis avec MuJoCo et le rendu d’Evergine sur tous les appareils : c’est exactement ce qu’il leur faut.

Essayez-le et donnez-nous votre avis

Jolt Physics fait partie de la release de novembre 2026 d’Evergine. Mettez à jour Evergine, ouvrez une scène et donnez-lui quelque chose à pousser, soulever et transporter.

Nous avons hâte de voir ce que vous allez créer et de savoir quelles simulations vous aimeriez réaliser ensuite.

David Ávila
Auteur
David Ávila
Plain Concepts Research