Optimiser#
augmenter les performances de ma scène
Pourquoi optimiser mon modèle ?#
Un moteur de rendu temps réel comme celui d'EgoCAPT ainsi que son moteur physique XDE nécessitent beaucoup les ressources. Les processeurs de votre ordinateur sont hautement sollicités notamment pour les calculs de collisions, mais également la carte graphique (le calcul des images) et la mémoire vive, avec un impact sur les performances.
Lorsque le nombre d'objets dans la scène augmente, lorsque le nombre de collisions augmente lors des simulations, vous pourrez constater une baisse de la fréquence d'affichage, à l'écran comme dans le casque (on parle du nombre d'images affichées chaque seconde (IPS) ou frame rate et Frame Per Second (FPS) en anglais. Dans ce cas, vous pourrez optimiser le modèle 3D.
Gérer les compromis qualité / performance#
Vous devrez trouver un compromis entre la qualité du modèle (la fidélité à sa surface d'origine) et la rapidité de traitement que nécessite une expérience en réalité virtuelle. Si le fichier est trop gros, trop complexe, le temps de calcul de chaque image s'allonge et le nombre d'images par seconde (FPS ou Frames Per Second) va baisser. Sous le seuil de 30 FPS, les sensations sous le casque seront dégradées avec des risques d'inconfort. Voir Tester les performances ci-dessous.
Recommandation
Toujours privilégier la performance, sauf si la précision des collisions est votre priorité (ex : introduction d'une canne dans un fourreau). Dans ce cas, limiter le nombre de pièces pour alléger le modèle.
Avant l'import#
Dans le logiciel d'origine, demandez au concepteur du projet d'optimiser le modèle 3D qu'il va exporter pour vous.
Points de vigilance :
- Ignorer les objets inutiles à l'expérience VR
- Ignorer les petits objets. Les vis et les écrous sont souvent présents en grand nombre. Il est facile de les filtrer et de les cacher/supprimer à ce stade.
- Ignorer les objets qui ne seront jamais visibles, comme le contenu d'armoires électriques ou les moteurs dans les parties inaccessibles.
- Eviter les arborescence en peigne avec tous les objets Ă la racine du projet.
Pour vous faciliter la tâche :
- Donner un nom explicite au parent des groupes d'objets importants
- Séparer sous un parent spécifique les objets qui vont être manipulés
- Exporter dans un format qui préserve les BREP (objets surfaciques / vectoriels), comme STEP ou CATIA.
- Trouver le format d'export et les options qui conservent le maximum d'informations :
- Le nom des objets
- L'arborescence
- Les couleurs
- ...
Durant l'import#
Lors de l'importation du fichier CAD dans ErgoCAPT, utiliser les options Ă bon escient.
Tessellation#
Le moteur d'affichage temps réel d'ErgoCAPT et son moteur physique ne travaillent qu'avec des modèles 3D triangulés.
La tessellation est l'opération qui consiste a convertir un objet surfacique (description mathématique) en un objet triangulé (décomposé en triangles), en appliquant des règles pour respecter plus ou moins fidèlement la surface d'origine.
Plus la tessellation des surfaces courbes doit être fidèle, plus les triangles doivent être petits et nombreux. En conséquence, l'augmentation de la taille du fichier est exponentielle, les opérations d’affichage ou de détection de collisions se complexifient et les performances diminuent.
Pour réduire le nombre de triangles et accélérer ces opérations, il est possible d'alléger les règles : les triangles sont moins nombreux au détriment de la représentation de la surface.
Lors de l'importation de formats industriels surfaciques dans ErgoCAP, une tessellation est appliquée avec, au choix, trois niveaux de qualité : High, Médium, Low.
Recommandation
Choisissez Low si la précision des surfaces n'est pas une priorité. Eviter High sur des modèles grands et/ou complexes.
Info
Si vous importez des formats qui sont déjà triangulés (FBX, OBJ...), le paramètre Quality n'a pas d'effet : le modèle est importé tel quel.
Merge final level#
Les derniers enfants d'une arborescence (ce qu'on appelle les fruits ou les feuilles) sont rarement manipulés individuellement. Utiliser l'option Merge Final Level lors de l'import du fichier CAD pour fusionner les fruits avec leur parent direct. Les résultats dépendent du modèle.
Info
Tester rapidement le résultat après import. Si trop d'objets sont fusionnés, vous devrez recommencer l'import en décochant cette option.
Echelle#
Si vous connaissez l'unité du fichier CAD, renseigner Scale Factor avec le facteur de multiplication correspondant pour obtenir 1m en sortie. Si vous ne connaissez pas l'unité, vous devrez faire des essais.
Orientation#
Tester les options d'import Left Handed et Z Up jusqu'à ce que le modèle arrive à plat (c'est Z Up ou Y Up) et dans le bon sens. Si des textes sont à l'envers, changer l'option Left Handed.
Tip
Noter le résultat obtenu, il sera le même pour tous les fichiers envoyés par ce concepteur.
Après import#
Une fois le fichier CAD importé dans l'espace de travail d'ErgoCAPT, tester les performances brutes (voir Tester les performances ci-dessous). Si le frame rate n'est pas au rendez-vous, vous pouvez nettoyer la scène pour gagner en performances.
Nettoyage de la scène#
Inspection#
Dans le menu Help, cliquer sur Scene Stats pour afficher un compteur d'objets et de polygones (les triangles qui décrivent les objets) pour tous les objets de la scène et pour l'objet sélectionné.
Ensuite, passer les groupes d'objets en revue. Vérifier qu'un groupe ne contient pas trop d'objets ou des objets très complexes (ex : une pompe très détaillée cachée dans une armoire).
Suppression objets inutiles#
Supprimer les groupes d'objets inutiles (ex : une armoire électrique remplie de composants située dans une zone où aucune simulation ne sera effectuée ; une pompe complexe cachée dans une armoire située à l'étage).
Supprimer (ou cacher) les objets qui limitent vos déplacements ou votre visibilité (la sphère qui matérialise la zone d'évolution d'un bras robotique par exemple).
Merge#
Réduire le nombre d'objets est un facteur important de performances. Si des objets enfants n'ont pas à être manipulés individuellement, vous pouvez sélectionner leur parent et les fusionner ensemble avec la commande Merge.
Tip
Il vaut mieux 1 objet de 100.000 triangles que 100 objets de 1000 triangles.
Créer une scène contenant uniquement le poste à étudier#
Une des façons simples d'augmenter les performances est de séparer votre modèle en plusieurs scènes distinctes. Vous pouvez par exemple créer une scène par zone, ou une scène par poste. Vous pouvez procéder de la manière suivante :
- Créer une scène
scene_completavec le modèle 3D complet. Nettoyer ce modèle autant que possible. - Enregistrer la même scène plusieurs fois avec un nom différent, par exemple une scène pour chaque zone nommées
scene_zone1,scene_zone2, etc. - Utiliser File > New Scene pour vider l'espace de travail.
- File > Load Scene pour charger la scène
scene_zone1 - Supprimer les objets inutiles en ne gardant que l'essentiel (dans notre exemple, les objets dans la zone concernée). Enregistrer cette scène.
- Utiliser de nouveau File > New Scene pour vider l'espace de travail, puis recommencer de la même façon avec la scène
scene_zone2, etc.
Vous avez alors des scènes légères, pratiques a utiliser, rapides a charger et fluides lors des sessions en réalité virtuelle. Continuez a préparer chaque scène, en physicalisant les objets a manipuler ou en préparant des scénarios.
Tester les performances#
Une scène contenant beaucoup d'objets, de triangles et d'objets physicalisés peut vite faire peiner le moteur de rendu temps réel d'ErgoCAPT. Les performances vont baisser, notamment le nombre d'images qui peuvent être calculées chaque seconde : c'est le frame rate ou fps (frames per second). Ce nombre est déterminant pour le confort de l'utilisateur lors d'une session de réalité virtuelle. Si le nombre d'images affichées par le casque est insuffisant, les déplacements saccadés des objets et des mains peuvent incommoder ou provoquer des nausées (mal des transports).
Durant la réparation d'une scène ErgoCAPT, il est recommandé de tester régulièrement sa scène en VR en basculant temporairement dans l'atelier CAPTURE pour vérifier le frame rate. Noter les progrès réalisés :-)
- Enregistrer la scène si besoin
- Vérifier que le player = VR_Controller et que le casque et les deux controleurs sont fonctionnels
- Passer dans l'atelier CAPTURE
- Déplacer le casque en visant les différentes zones de votre modèle 3D (inutile de le mettre sur la tête si vous êtes seul, vous pouvez le déplacer à la main). Si vous êtes loin du modèle, revenir en PREPARATION, sélectionner le Player et le rapprocher de votre 3D par téléportation.
- Lire le frame rate qui est affiché en haut de l'écran, au centre (nn fps)
- Si fps<15 : vous devez optimiser la scène
- Si 15<fps<30 : ça reste supportable mais peut indisposer les personnes sensibles
- Si fps>30 : ça devient confortable
- Au delà de 60 fps, c'est top !