Poste : Ingénieur Développement en Réalité
Virtuelle
Entreprise : Assystem — agence de Venelles
(Bouches-du-Rhône)
Durée : 6 mois (mars – août 2025)
Filière ISIMA : Informatique des systèmes interactifs
pour l’embarqué et le virtuel
Technologies principales : Unity, C#, Python, Pixyz,
HTC VIVE, CATIA
Domaine applicatif : Nucléaire — projet ITER / CEA
Cadarache
Assystem est un groupe international d’ingénierie spécialisé dans la gestion de projets à forte composante technologique (énergie nucléaire, infrastructures critiques, transports, santé). L’agence de Venelles contribue notamment au projet ITER (International Thermonuclear Experimental Reactor), réacteur expérimental de fusion nucléaire implanté à Cadarache, et accompagne le CEA Cadarache sur plusieurs projets de sûreté nucléaire.
Face à des environnements industriels complexes, dangereux ou inaccessibles physiquement, Assystem a fait le choix stratégique d’intégrer la Réalité Virtuelle (RV) à ses processus d’ingénierie. La RV permet de simuler des interventions humaines (assemblage, maintenance, démantèlement) pour :
évaluer la faisabilité ergonomique des gestes techniques dans des espaces confinés ;
quantifier la dose radiologique reçue par les opérateurs lors de chaque scénario ;
réduire les erreurs de conception avant toute fabrication physique.
L’objectif central du stage était de rendre ces simulations accessibles à des ingénieurs non développeurs, en réduisant le temps de préparation et en industrialisant les workflows Unity.
Les deux projets existants (ergonomie et dosimétrie) étaient maintenus séparément, entraînant une duplication des assets et des changements de contexte coûteux. J’ai fusionné ces projets en un seul template générique activable par modules, ce qui réduit l’espace disque et simplifie la gestion de versions.
Intégration du projet étudiant (Centrale Lyon) : un module de manipulation d’objets en scène (instanciation, translation/rotation, étiquetage) développé par des étudiants sous émulateur a été adapté aux contrôleurs HTC VIVE d’Assystem, en corrigeant les incompatibilités d’UI/UX.
Outils instanciables : développement d’un éditeur Unity permettant d’ajouter un outil 3D (format FBX) à une simulation en quelques clics — attribution automatique de collisions, gravité et saisie VR, génération d’une icône identifiante — sans compétence Unity requise.
CamViewTool : interface de contrôle des caméras spectateurs depuis l’inspecteur Unity (caméra orbitale, mode libre clavier, caméras fixes, sélection automatique par comptage de pixels de l’opérateur visible). Intègre l’activation de l’analyse REBA.
PrefabCleaner : outil de nettoyage automatique des Prefabs importés via Pixyz — suppression des scripts manquants, conversion des matériaux vers URP/Lit, application d’un matériau par défaut — pour éliminer erreurs et warnings bloquants sans expertise Unity.
Volume Filter Tool : suppression automatique des petits éléments 3D (vis, boulons…) en-dessous d’un seuil de volume défini par référence, allégeant significativement les scènes.
Le REBA (Rapid Entire Body Assessment) est une méthode d’analyse ergonomique évaluant le risque musculosquelettique d’une posture en tenant compte de l’ensemble du corps (tronc, cou, jambes, bras, avant-bras, poignets, charges). À ma connaissance, aucun plugin commercial ne propose d’implémentation REBA clé en main dans Unity.
J’ai développé un calculateur REBA natif Unity :
Référencement des segments corporels via l’inspecteur du mannequin VR ;
Mesure des angles articulaires à chaque frame par calcul vectoriel entre segments parent/enfant ;
Fonction de calibration sur posture neutre pour corriger la morphologie initiale ;
Application des règles de notation REBA par segment (scores +1 pour inclinaisons/rotations) ;
Évaluation bilatérale (gauche et droit) avec conservation du score le plus conservatif ;
Cases à cocher pour renseigner charge soulevée et qualité de préhension ;
Visualisation temps réel du squelette colorisé et du score global dans l’interface de supervision.
Reformatage de fichiers : développement d’un script Python convertissant automatiquement deux formats de cartes radiologiques (données fournies par d’autres équipes) vers le format compatible avec le système Unity. Ajout d’une décimation du nuage de points pour limiter la latence de rendu.
Outil de placement de zone : nouveau composant Unity permettant de matérialiser, déplacer et redimensionner interactivement le nuage de radiation dans la scène, comblant l’absence totale d’outil de repositionnement dans l’existant.
Les modèles CATIA (format 3DXML) n’étant pas directement compatibles avec Unity, Pixyz est utilisé comme couche de conversion et d’optimisation. J’ai défini un projet Unity préconfiguré avec des Rule Engines Pixyz adaptés à deux cas d’usage :
Objets manipulables : haute précision géométrique + colliders précis ;
Éléments passifs (structures, conduites) : simplification poussée pour les performances.
Le système LOD (Levels of Detail) a été évalué puis écarté, sa configuration par-modèle étant incompatible avec l’objectif de préparation rapide et standardisée.
Développement 3D/RV : Unity (C#), outils éditeur custom, XR Interaction Toolkit, HTC VIVE.
Traitement de données : Python (conversion/décimation de nuages de points), formats CAO.
Pipeline CAO : Pixyz (Rule Engine, optimisation maillage, colliders), 3DXML, FBX.
Ergonomie : méthode REBA, analyse posturale, calcul d’angles articulaires en temps réel.
Radioprotection : dosimétrie VR, nuages de radiation, algorithme Octree.
Transversal : documentation technique, UX/UI pour non-développeurs.
Ce stage m’a permis de mener des développements complets sur un périmètre large — du traitement de données CAO jusqu’à l’ergonomie et la radioprotection — dans un contexte industriel exigeant (nucléaire, contraintes réglementaires). Le fil directeur, rendre la RV accessible à des ingénieurs non informaticiens, m’a conduit à soigner autant l’expérience développeur (outils éditeur Unity, documentation) que les performances runtime.
Sur le plan personnel, cette expérience a renforcé ma capacité à identifier rapidement les manques d’une solution existante, à proposer des architectures pragmatiques et à arbitrer entre généricité et performance — compétence particulièrement sollicitée sur les sujets Pixyz/LOD et REBA/automatisation squelettique.
Mots-clés : Unity, C#, Python, Réalité Virtuelle, REBA, Pixyz, Dosimétrie, ITER, Ergonomie, Nucléaire.