Ce projet est un simulateur de pont roulant. Il s’agit d’un projet interne à Audace, consistant à réadapter une version existante fonctionnant avec un casque VR relié à un ordinateur, vers une version compatible avec des casques autonomes, notamment les Oculus Quest 2 et 3.
Un pont roulant est un appareil de levage utilisé principalement dans les environnements industriels (ateliers, entrepôts, usines) pour déplacer des charges lourdes horizontalement et verticalement. Il se compose généralement de rails fixés en hauteur, sur lesquels circule un chariot motorisé équipé d’un crochet ou d’un palan permettant de soulever, déplacer et déposer des objets volumineux ou massifs.
J’ai été chargé d’essayer de comprendre et de réparer la physique des chaînes utilisés dans ce projet. Le package utilisé est Obi-Rope. Il y avait en effet un problème d'élasticité sur les chaînes, rendant ainsi inutilisable le simulateur. Finalement je n’ai pas réussi à corriger le problème donc le chef de projet m’a assigné de nouvelles tâches. Je devais réaliser certains scénarios.
Le projet contient trois scénarios interactifs ainsi qu’un menu de sélection des scénarios :
Mes responsabilités ont porté sur la réalisation complète des scénarios “Prise de poste” et “Levage / Descente de poutre”, ainsi que sur la création du menu principal permettant à l’utilisateur de choisir son scénario.
L’objectif ici est de faire une scène basique avec juste le fait de pouvoir choisir la scène que l’on veut lancer.
Ce scénario à 2 parties principales. La première partie consiste à approcher le crochet de la charge qu’on la va déplacer. Puis on attache une chaîne entre la charge et le crochet. La deuxième partie est la réalisation du parcours. Il faut déplacer la charge sur le parcours. Il ne faut pas que la charge soit trop haute du sol, trop proche de l’apprenant et pas qu’elle touche les obstacles. Le chemin à réaliser est représenté par la ligne bleue. Elle n’est visible que dans l’éditeur et pas dans la version lancée de l’application.
Le scénario prise de poste est, comme son nom l’indique, la prise du poste du pont roulant. Il y a plusieurs étapes à réaliser avant de commencer à travailler.
Je devais ajouter les objets que l’apprenant doit contrôler. Il y a le certificat de conformité, vérification périodique annuelle (pont, apparaux), carnet de maintenance, notice d'utilisation, extincteur(cabine). On n'avait pas de modèle 3D donc j’ai utilisé des placeholder. J’ai créé un système qui permet de valider quand on sélectionne un objet en question et le met dans la même occasion en surbrillance.
J’ai commencé avec l’extincteur. Pour ça j’ai utilisé un cube fourni par Unity
Ensuite pour le crochet j’ai utilisé celui déjà présent dans la scène et j’ai ajouté le fait de pouvoir le sélectionner et d’avoir la surbrillance.
Et enfin les documents je les ai rassemblés sur une table. J’ai mis plus de documents qu’il fallait car l’apprenant devra choisir les bon documents à vérifier. S' il sélectionne les mauvais cela mettra une erreur. J’ai aussi ajouté un bouton dans la scène pour pouvoir valider quand on a terminé de vérifier chaque élément.
Dans ce scénario, l’objectif est de soulever une poutre à l’aide de quatre points d’accroche, puis de la reposer correctement, tout en maintenant sa stabilité durant toute la manœuvre. Avant de procéder au levage, l’utilisateur doit sélectionner les chaînes qu’il souhaite utiliser pour soulever la poutre depuis la planche.
C’est dans ce contexte que j’ai été amené à travailler sur la physique des chaînes, qui posait problème. Lors du levage, les chaînes se comportaient comme des élastiques, ce qui provoque des mouvements anormaux de la poutre. Celle-ci commençait à tourner lentement sur elle-même, puis de manière de plus en plus rapide, rendant la simulation irréaliste et inexploitable.
Le scénario “Levage / Descente de poutre” se déroule en plusieurs étapes visant à simuler une manœuvre de levage en toute sécurité. L’utilisateur commence par positionner le pont roulant au-dessus de la planche, puis descend le crochet. Il doit ensuite choisir une chaîne parmi celles disponibles au sol, la ramasser, et l'accrocher successivement au crochet puis à chacun des quatre points d’accroche situés sur la poutre. Une fois les chaînes installées, l’utilisateur remonte le crochet, ce qui permet de lever la planche. L’objectif est de maintenir la stabilité de la poutre tout au long de l’opération, jusqu’à sa repose contrôlée sur le sol.
Pour représenter les chaînes posées au sol, j’ai utilisé des objets placeholders en forme de parallélépipèdes rectangles, ce qui a permis de faciliter le prototypage et de rester concentré sur la logique fonctionnelle avant l’intégration des assets définitifs. Chaque chaîne au sol possède deux paramètres spécifiques : sa taille et le nombre d’attaches qu’elle permet. L’utilisateur doit donc choisir la chaîne adaptée en fonction de la configuration de la poutre.
Afin d’améliorer la lisibilité visuelle et l’expérience utilisateur, j’ai mis en place un système de surbrillance dynamique. Lorsqu’une chaîne est sélectionnée, elle s’illumine en jaune, signalant qu’elle est en cours d’interaction. Une fois correctement fixée au crochet, la surbrillance passe en blanc, et le matériau devient partiellement transparent, ce qui permet à l’utilisateur de visualiser clairement la scène tout en comprenant que l’attache est validée.
L’étape suivante consiste à accrocher la chaîne aux différents points d’attache de la poutre. L’utilisateur commence par sélectionner le crochet, qui se met également en surbrillance jaune pour confirmer l’action. Il sélectionne ensuite successivement chaque point d’attache présent sur la poutre. Une chaîne visuelle est alors générée dynamiquement entre le crochet et le point d’attache. Cette opération est à répéter pour les quatre points d’accroche, chacun nécessitant une liaison distincte. Ce système permet de simuler de manière simple mais efficace la préparation d’un levage sécurisé.