Plateforme Radium-Engine

Responsable : Nicolas MELLADO

Radium-Engine est une plateforme logicielle dédiée au développement d’applications 3D. Conçue sous forme de bibliothèques C++, cette plateforme met à disposition des utilisateurs et des développeurs un ensemble d’outils pour la synthèse d’image temps réel, l’animation de personnages, ainsi que l’analyse et le traitement de données géométriques 3D. Les sujets actuellement traités sont par exemple :

  • Traitement géométrique d’objets 3D représentés sous forme de maillages : décimation et simplification pour visualisation sur le web,
  • Visualisation et traitement de nuages de points (acquisition LiDaR, photogrammétrie, cartes de profondeurs, caméras RGBD): extraction de primitives, deep learning,
  • Rendu temps réel PBR (Physically-Based Rendering)
  • Déformation pour l’animation de personnages: skinning, rigging.
  • Rendu stylisé, simulation des media traditionnelles

Les objectifs de cette plateforme sont multiples :

  1. Faciliter la création de prototypes de recherche pour les applications d’informatique graphique 3D.
  2. Favoriser la diffusion et la réplicabilitité des articles de recherches en fournissant un écosystème logiciel libre exploitable par la communauté de recherche,
  3. Fournir une base de développement adaptée à la formation des étudiants en Informatique Graphique et 3D.
  4. Simplifier les phases d’industrialisation des prototypes de recherches dans le cadre de maturations et transfert vers l’industrie.

La plateforme est composée de bibliothèques fournissant structures de données et algorithmes, sur lesquelles s’appuient plusieurs applications et plugins.

Les usagers premiers sont les membre de l’équipe STORM, leurs collaborateurs (entreprise Innersense dans le cadre du projet SI3DCO), d’autres chercheurs de la communauté informatique graphique en france (Manao/INRIA Bordeaux, X – Institut Polytechnique de Paris), ainsi que les étudiants du Master IGAI de l’Université Paul Sabatier.

Il y a actuellement 27 fork et 57 stars sur le dépôt github.

Positionnement de la plateforme par rapport aux plateformes existantes (locales et nationales)

Radium-Engine se positionne comme un environnement logiciel issus du milieu académique, maintenu par des équipes de recherche et intégrant des algorithmes implémentant l’état de l’art scientifique.

Couverture thématique

La particularité de Radium-Engine est sa couverture thématique : alors que les solutions existantes se focalisent sur un sujet bien précis (voir liste non-exhaustive ci-dessous), Radium-Engine permet de combiner des méthodes développées dans différentes sous-communautés scientifiques (toujours dans le domaine de l’Informatique Graphique) au sein d’un même environnement.

Exemples de plateformes existantes au niveau national et leur couverture thématique :

MEPP (LIRIS) : Traitement de maillages, utilise CGAL (voir détails ci-après)

OASIS (LIRIS) : Réalité Augmentée, dont animation et déformation de personnages

Geogram (LORIA-Inria Nancy) : Traitement de maillages

Exemples de plateformes existantes (au niveau international) et leur couverture thématique :

  • Meshlab, libigl, CGAL, OpenMesh, Polyscope pour la géométrie,
  • Unity pour le rendu temps réel,
  • Mitsuba, Mitsuba 2, PBRT pour le rendu réaliste.

Passerelles vers les plateformes existantes

Ces plateformes spécialisées sont en général maintenues par des structures de recherche ayant un support dédié (spin-off INRIA pour maintenir CGAL) et proposent une très forte technicité sur les sujets concernés. Afin d’éviter de positionner Radium-Engine en concurrence avec ces outils, nous proposons plutôt d’utiliser des passerelles (wrappers) permettant de les combiner avec Radium- Engine.

Aujourd’hui, Radium est compatible avec OpenMesh pour représenter des maillages topologiques, qui peuvent également être traités via les algorithmes implémentés dans CGAL. Une passerelle vers PBRT est en cours de développement pour permettre d’effectuer des calculs de simulation d’éclairage réaliste hors-ligne, tandis qu’un support quasi complet de la n 3 permet d’afficher ces géométries en temps réel avec un rendu physiquement réaliste.

Description technique, organisationnelle, taux d’utilisation

La plateforme Radium-Engine est structurée en bibliothèque c++. Il y a actuellement quatre bibliothèques :

  • Core : les fonctionnalités et structures de données de base pour la représentation des données 3D.
  • Engine : les fonctionnalités de rendu temps réel et d’animation.
  • GuiBase : les éléments d’interface utilisateur réutilisable pour les applications
  • IO : la gestion des entrées sorties (lecture de fichiers 3D)

Axée sur la performance, la plateforme utilise les bibliothèques externe Eigen pour l’algèbre linéaire et la représentation des matrices et vecteurs ainsi que OpenGL pour la communication avec les cartes graphique et obtenir un rendu temps réel.

La base de code actuelle comprend plus de 40000 lignes de c++, ainsi que 2500 lignes de code glsl, langage de programmation des cartes graphiques.

Historiquement porté par deux doctorants de l’équipe VORTEX, Radium-Engine est aujourd’hui porté par les permanents de l’équipe STORM, et largement utilisé et amélioré par les doctorants actuels de l’équipe. Jusqu’en juillet 2020, un ingénieur sur projet ANR participait aussi à l’ajout de fonctionnalités et à la maintenance.

La base de code est hebergée sur github, et nous avons mis en place les processus d’intégration continue (Windows, MacOs, Linux), ainsi que des relectures systématiques du code lors de l’ajout de fonctionnalités. La chaîne de compilation s’appuie sur cmake et intègre une gestion automatique des dépendances et des procédures d’installation sur Windows MacOs et Linux.

Radium Engine a servi de base de code pour la recherche et la production de résultats de plusieurs articles de recherche de l’équipe :

  • Persistence Analysis of Multi-scale Planar Structure Graph in Point Clouds T. Lejemble, C. Mura, L. Barthe, N. Mellado Computer Graphics Forum, 2020
  • Proximity-Aware Multiple Meshes Decimation using Quadric Error Metric A. Ghazanfarpour, N. Mellado, C. Himeur, L. Barthe, J. Jessel Graphical Models, 2020
  • Dynamic implicit muscles for character skinning V. Roussellet, N. Abu Rumman, F.Canezin, N. Mellado, L. Kavan, L. Barthe Computers and Graphics, 2018