Modeleur 3D de structures en toiles tendues
Calcul de formes de toiles tendues
SOMMAIRE
Fiche technique.
1ère partie :
Présentation de l'entreprise et de l'environnement professionnel du stage.
2ème partie :
Nature de la tâche, travail réalisé.
Présentation du sujet, problématique.
Le matériel et les outils logiciels.
Travail réalisé :
- La préparation au LABO-IMS.
- Les rencontres avec l'équipe d'analyse.
- Le déplacement à Lyon et la communication avec AGIBAT-MTI.
- Le codage des classes et des interfaces.
- La représentation graphique des différents objets.
- Les cerces.
- Les différents types d'arcs.
- Discrétisation des objets.
- Discrétisation de la surface.
- L'interface graphique.
- Conclusion.
Bilan de travail.
Bibliographie.
Journal de stage.
Annexes :
2ème partie
NATURE DE LA TÂCHE TRAVAIL REALISE
Le fait que nous soyons une équipe et que nous ayons à travailler avec les étudiants de l'ENSAM nous a poussé à nous organiser de manière plus structurée. Chacun a eu la responsabilité d'une partie et s'est spécialisé dans un type de tâche:
- Christophe : la gestion du serveur Linux, la conception de l'interface, l'interaction entre l'interface et les objets, la mise à jour des librairies et des utilitaires, le calcul des surfaces pour les toiles.
- Léo : La visualisation 3D, les classes d'objets et les calculs des arcs.
Lorsque nous avons dû programmer en même temps, nous avions chacun une version du logiciel et nous avions écrit une liste des classes modifiées. Si bien que chaque fois que nous modifions une nouvelle classe, nous regardions si cette classe avait été modifiée par l'autre. Et, si oui, nous copions cette classe avant de la modifier.
Le fait de sauvegarder régulièrement le répertoire de travail nous a permis de pouvoir recommencer sur des bases saines chaque fois que nos changements avaient affecté des parties qui marchaient auparavant.
Pour mesurer le temps qu'a duré chacune des phases présentées ci-dessous, vous pouvez vous rapportez au journal de stage.
PRESENTATION DU SUJET PROBLEMATIQUE
Les lieux publics et les lieux de rassemblement font de plus en plus appel à des structures comprenant des toiles tendues. Par exemple, le Millenium Center de Londres, l'aéroport de Denver, les stades d'Atlanta, de Rome ou de Lyon, la gare TGV de Massy, le zénith de Montpellier intègrent une partie en toile. Cet engouement concerne aussi des ouvrages plus courants, tels que des auvents, des piscines. On se trouve par conséquent devant un nombre croissant de calculs de validation de ces structures très particulières.
En France, un des bureaux d'ingénierie les plus performants dans ce domaine est AGIBAT MTI, un cabinet de calculs basé à Lyon. C'est pour cette entreprise que nous avons réalisé ce stage. Ils ont déjà calculé divers bâtiments intégrant des membranes, et ont une grande expérience dans ce domaine. Ils disposaient d'un logiciel de calcul nommé SYSTUS, qui fonctionnait sur une station de travail ne franchissant pas l'an 2000. Ils ont donc embauché un étudiant en «projet de Recherche Diplômant», pour qu'il adapte ce logiciel aux normes imposées par les PC. Ce transfert ne fut cependant pas une réussite totale, dans la mesure où AGIBAT s'est retrouvée avec des modules de calcul indépendants, et qui nécessitent actuellement de longues et fastidieuses opérations manuelles pour passer d'une étape de calcul à l'autre.
C'est pourquoi ils nous ont demandé de réaliser un logiciel de calcul de toiles tendues, l'objectif étant de repartir de zéro (où presque) pour avoir des bases de travail saines. Ils nous ont pour cela fourni de nombreux documents pour nous permettre de comprendre la démarche du calcul de validation, depuis le dessin de l'architecte jusqu'aux plans des morceaux de toile à découper (AGIBAT ne s'occupe pas du découpage des laies cette opération est sous-traitée).
Nous avions tout de même un impératif: le module de logiciel qui effectue le calcul proprement dit, qui se nomme MEFTX, devait être conservé dans son intégralité, sans aucun changement. En effet, il a été validé par le bureau de vérification VERITAS, ce qui a nécessité une démarche longue et coûteuse. De plus ce module fonctionne très bien et nous n'avons aucune raison de le modifier. Il devra par conséquent s'intégrer au logiciel global.
Nous avons travaillé du 25 mars jusqu'à la fin de notre projet en collaboration avec des élèves ingénieurs de l'ENSAM ayant pour mission de créer le cahier des charges du logiciel. Pour cela, nous avons travaillé en étroite collaboration pendant cette période en essayant d'avoir un maximum d'interactivité entre nos travaux mutuels.
LE MATERIEL ET LES OUTILS LOGICIELS
Durant notre stage, nous avons travaillé sur des ordinateurs PC. Pour programmer, nous avons utilisé plusieurs outils logiciels:
Linux Mandrake 7.0
Qu'est ce que Linux?Linux est un système d'exploitation gratuit, puissant et multitâche. C'est une version spéciale du système UNIX, totalement gratuite. La majorité de ses applications sont gratuites. De plus, le code source en C/C++ du système est disponible, ce qui permet à tous les utilisateurs qui le souhaitent de l'améliorer et de corriger les erreurs. Bien que le système Linux soit encore très peu utilisé par le grand public, il est très utilisé dans les domaines professionnels, tels que l'hébergement de serveurs WEB.
Qu'est ce que Linux Mandrake?La Mandrake est une distribution récente de Linux, à l'origine basée sur la Redhat. En effet, la Mandrake 5.x était une amélioration de la Redhat 5.x : la principale modification était l'ajout de l'interface KDE, que Redhat refusait de distribuer pour des problèmes de licences résolus aujourd'hui. Mais depuis la version 6, Mandrake a pris son indépendance, et n'est plus basée sur la Redhat. Cependant, tout est fait pour assurer la compatibilité : un package pour la Redhat fonctionnera sur la Mandrake. La Mandrake est une réelle amélioration de la Redhat avec des outils d'installation et de configuration très agréables à utiliser.
OpenGL
OpenGL est ce que l'on appelle un API graphique 3D (Application Programmer Interface). C'est donc la spécification des fonctions et des paramètres d'une bibliothèque graphique permettant d'effectuer le rendu d'objets graphiques 2D et 3D simples (lignes, polygones, surfaces paramétriques,...). Comme cette spécification a été soutenue par un grand nombre de fournisseurs de logiciels et de matériels informatiques, elle s'impose comme standard "de fait" pour le développement d'applications graphiques. Cette interface comporte environ 120 fonctions. OpenGL a été spécifié indépendamment de tout système d'exploitation ou de tout système de fenêtrage, ce qui implique qu'il ne comporte aucune fonction de gestion d'écran ou de dispositif de dialogue tel que la souris ou le clavier. Ces tâches doivent être gérées par l'intermédiaire des bibliothèques des environnements d'accueil tels que XWindow ou Windows. Il existe des manuels spécifiques pour l'utilisation de OpenGL dans les environnements XWindow ou Windows. Ce standard a été appliqué par divers fournisseurs de bibliothèques graphiques, qui n'ont pas tous nécessairement choisi les mêmes solutions de mise en oeuvre. Ces différences peuvent être perçues en compilant et en exécutant un même programme, dans deux environnements différents.
FOX
FOX est une boite à outils pour développer des interfaces graphiques. Il offre une large collection de contrôles, et fournit des outils de pointeur tel que le drag and drop, la sélection. FOX permet aussi d'afficher des images et des icônes de différents formats (JPEG, GIF, ...). Nous avons choisi d'utiliser cette librairie car elle dispose d'une viewer 3D en OpenGL.
KDevelop
Le but du projet KDevelop est de fournir un environnement de développement facile à utiliser pour programmer en C/C++ sous Linux. KDevelop propose des fonctionnalités, et une interface très proche de celle de Visual C++ sous Windows, et utilise la technologie orientée objet.
TRAVAIL REALISE
1. La préparation au LABO-IMS
A notre arrivée à l'ENSAM, M. VERON n'avait qu'un seul PC disponible au LABO-IMS car d'autres projets se déroulaient conjointement au nôtre. Il a donc été décidé d'acheter un PC supplémentaire que nous avons installé et configuré. De plus, le système d'exploitation Linux n'était pas installé. Une de nos premières tâches a donc été de préparer les deux PC : l'un servant de serveur l'autre travaillant en déportation d'affichage grâce au logiciel XWin.
Cette configuration proche de celle employée à l'I.U.T. a permis à Léo de changer rapidement de poste de travail quand d'autres groupes ont eu besoin de sa machine pour effectuer des calculs très longs.
Pendant les deux premiers jours, nous avons téléchargé et installé les librairies Mesa pour l'OpenGL et FOX (toolkit ayant un viewer OpenGL), ainsi que leurs documentations et des exemples et tutorial.
2. Les rencontres avec l'équipe d'analyse
Sur le projet S.T.T. (Structure en toiles tendues) en plus de nous, M. VERON dirigeait une équipe d'analyse englobant 6 étudiants de l'ENSAM à l'occasion d'un projet et à raison de 4 heures par semaines.
Leur but était de définir les objectifs de l'application et de dresser un cahier des charges. Ils avaient préalablement rencontré les responsables d'AGIBAT MTI le 22 mars et avaient commencé à en tirer un cahier des charges. Nous les avons rencontrés rapidement pour définir ensemble les spécifications du logiciel. Par la suite, nous nous sommes rencontrés régulièrement pour nous informer des résultats de leur analyse et pour que nous leur présentions l'avancée de la programmation. Nous avons aussi assisté à leurs revues de stage et avons participé aux discussions concernent l'analyse du besoin.
3. Le Déplacement à Lyon et la communication avec AGIBAT-MTI
Le jeudi 11 mai nous avons (P.VERON, C.DECIS et L.NEGRI) effectué un déplacement à Lyon. Cette entrevue qui avait été demandée par M. MARION, avait pour but d'organiser le travail de cet été, de faire une démonstration du logiciel et d'éclaircir de nombreux points sur le logiciel.
4. Le codage des classes et interface
Dès la première semaine, nous nous sommes partagés les tâches. Christophe s'est occupé principalement de l'interface utilisateur en utilisant la librairie FOX et l'interaction entre cette interface et les objets 3D (création, suppression, modification, sélection...), et Léo a développé les classes représentant les objets (cerce, câble, mat, ralingues, toile ...) en fait, dans un premier temps, nous avons travaillé indépendamment l'un de l'autre. Les classes ont été testées sans l'interface graphique.
5. La représentation graphique des différents objets
Pour définir les différents objets, il est utile de pouvoir les visualiser. L'interface, possède donc une fenêtre de visualisations 3D. Pour pouvoir afficher des figures géométriques simples, nous avons utilisé la librairie OpenGL avec ses extensions: GLU, GLUT et FOX. Lors des premiers tests, Léo a réalisé des représentations volumiques tel que ce mat qui est sélectionné:
Mais nous nous sommes vite aperçus que ce type de représentation, bien qu'elle soit esthétique, avait plusieurs inconvénients:
- Elle est plus longue à calculer. Elle ralentit donc l'affichage.
- Le volume peut cacher d'autres objets et empêcher qu'on les sélectionne.
- Comme les entités sont limitées par des appuis symbolisés par des points, il n'est pas logique que la limite d'un cylindre soit un point.
- Pour créer un mat qui ait des extrémités qui ne soient pas à la verticale l'une de l'autre, il aurait fallu calculer les angles de rotation dans l'espace puis programmer cette rotation.
Alors nous avons décidé d'utiliser une représentation plus classique sous forme de lignes de couleurs et d'épaisseurs différentes sans aucun volume.
6. Les cerces
La cerce est un élément indispensable dans la construction de chapeau chinois.
C'est en fait un tore en tube métallique. La toile est lassée dessus et elle est maintenue par des haubans fixés à un mat.
La première représentation de la cerce était, au début, volumique (vue en coupe).
Il y avait aussi une boite de contour qui apparaissait quand on la sélectionnait.
Mais pour les mêmes raisons que le mat nous avons simplifié la visualisation.
Le mode de définition a, lui aussi, beaucoup évolué. Au début, les cerces étaient forcément horizontales. Puis, grâce à un vecteur directeur, on pouvait les incliner. Finalement, après le déplacement chez AGIBAT-MTI, nous nous sommes rendus compte que nous pouvions remplacer les cerces par plusieurs arcs mis bouts à bouts.
Le but est de créer des surfaces seulement entre des ralingues ou des arcs. La discrétisation des arcs et ralingues est régulière mais chacune des faces peut avoir une finesse de maillage différente, ce qui n'est pas possible avec une cerce non décomposée en arcs.
7. Les différents types d'arcs
Les arcs simples sont construits à partir de trois points de l'espace:
- Le début de l'arc.
- La fin de l'arc.
- Un 3e point distinct des deux autres appartenant à l'arc.
Léo a créé un algorithme permettant de calculer tous les points de l'arc (le nombre de points est une variable qui a une valeur par défaut avant que l'on donne le paramètre de discrétisation pour la création des surfaces).
Dans ce calcul on peut distinguer plusieurs étapes :
- Calcul du centre du cercle.
- Calcul des deux vecteurs du plan de l'arc.
- Calculs des coordonnées de points dans ce plan.
- Multiplications des coordonnées dans le plan par les deux vecteurs pour retrouver les coordonnées dans l'espace.
- Sauvegarde de ces coordonnées dans un tableau pour en prendre compte lors de la création des surfaces.
Ces algorithmes utilisent les produits scalaires et vectoriel mais ne font pas appel aux matrices pour calculer des rotations et translations.
Les arcs multiples ne peuvent pour le moment qu'être créés dans un plan 2D. Ces arcs sont constitués de plusieurs arcs de rayons différents emboîtés les uns dans les autres. Ce qui implique que les deux arcs doivent avoir la même tangente à leur point de raccordement. L'algorithme que nous avons mis au point, permet de créer cette série d'arcs en respectant les nombreuses contraintes pour que la suite d'arcs puisse arriver au point final défini par l'utilisateur. Puis lorsque l'utilisateur le demande, le programme calcule automatiquement le dernier arc, de sorte qu'il arrive directement au point de fin.
Du fait de sa complexité et comme il peut être remplacé par plusieurs arcs simples, l'arc multiple n'est pas disponible dans la première version du logiciel. Mais du fait de l'approche objet de notre programmation, il pourra facilement être rajouté pour pouvoir être incliné comme l'arc simple et intégré comme un nouvel objet dans l'interface.
8. Discrétisation des objets
La discrétisation des différents objets et plus particulièrement des toiles, est une étape cruciale car la position des noeuds de maillage qu'elle crée, affecte directement la durée et la précision des calculs du module de recherche de forme. Nous avons donc insisté sur cet aspect du logiciel en créant une visualisation qui prend en compte la finesse du maillage, et affiche les noeuds, mais aussi en créant des algorithmes de lissage pour les surfaces complexes (contenant des arcs). La possibilité de déplacer un noeud indépendamment des autres permet de changer manuellement le maillage dans des zones spéciales ou ayant des propriétés particulières. Ceci implique que l'utilisateur a toujours le contrôle du maillage. Donc grâce à ces fonctions de déplacement tous les cas de figures sont théoriquement possibles.
9. Discrétisation de la surface
Pour créer une surface, l'utilisateur doit sélectionner les objets composant la surface. Les points doivent être sélectionnés dans un certain ordre pour indiquer dans quel sens la surface doit être tracée.
De plus, les deux premiers points correspondent à la trame de la toile et le 2ème et 3ème points correspondent à la chaîne. L'utilisateur doit aussi pouvoir voir la normale. Cette normale est très importante lors des calculs des contraintes atmosphériques. Elle correspond au coté de la surface où les efforts seront exercés. Dans l'image qui suit, nous pouvons voir dans la zone d'affichage, la trame, la chaîne et la normale tracé. Plus tard, elles devront être tracées de couleurs différentes, et la chaîne ne sera pas affichée.
Avant de discrétiser la surface, le logiciel discrétise d'abord les objets composant la surface. Ensuite, il calcul les points se trouvant sur la surface. Ces points doivent être le plus proche de la réalité pour que, lors de la recherche de forme, le logiciel meftx puisse trouver un résultat correct. Chaque point de la surface peut être modifier, c'est à dire l'utilisateur peut modifier ces coordonnées, sa fixation et surtout son matériau.
10. L'interface graphique
Pour la conception de l'interface graphique, nous avons essayé qu'elle soit la plus ergonomique et la plus facile à utiliser pour les ingénieurs. Pour cela, nous l'avons décomposée en plusieurs parties(le menu, la barre d'outil, la barre de statut, la zone d'affichage graphique et l'onglet):
10.1. Le menu
Le menu rassemble toutes les commandes que l'utilisateur peut se servir.
Le menu Fichier rassemble toutes les commandes pour ouvrir, sauvegarder, et quitter l'application.
Le menu Édition regroupe les commandes d'édition des objets. Pour le moment, seule la suppression a été implantée. Plus tard, la copie sera rajoutée.
Le menu View rassemble les commandes pour modifier la zone d'affichage graphique : vue parallèle, vue perspective, devant, derrière, gauche, droit, haut bas et rafraîchir.
Le menu Tâches contient les différentes étapes à suivre en partant de dessin en 3D de la structure, en passant par le calcul des contraintes atmosphériques, pour arriver au découpage des toiles. Chaque étape doit être contrôlée avant de passer à la suivante.
10.2. La barre d'outil
La barre d'outil réunit un ensemble de raccourci des commandes les plus utilisées évitant à l'utilisateur d'aller chercher ces commandes dans le menu.
10.3. La barre de statut
Pour simplifier l'utilisation du logiciel, nous avons mis en place une barre de statut. Cette barre permet d'afficher de l'aide lorsque la souris passe sur une zone. Par exemple, lorsque la souris passe sur un bouton, une description complète du bouton est faite.
Une aide plus simplifier a été aussi mis en place sous forme d'info-bulles.
10.4. La zone d'affichage graphique
Dans cette zone, nous affichons la structure en toiles tendues en 3D. A l'aide de la souris, l'utilisateur peut modifier l'angle de vue, faire des zooms et des translations:
10.5. L'onglet
L'onglet permet la création, la modification et de voir la liste des objets. Il est composé de deux onglets:
Onglet paramètre:Cet onglet permet de rentrer ou de voir les paramètres d'un objet pour le modifier ou le créer. Pour obtenir cet onglet, il faut soit faire un double clique sur un objet dans la zone d'affichage, soit créer un nouvel objet. Ici, on visualise les paramètres d'une surface que l'on a sélectionnée. Le bouton modifier est remplacé par un bouton créer lorsqu'il s'agit d'une création d'un objet.
Onglet Objets:Cet onglet est composé de deux parties :
- La première est une série de 8 boutons regroupant tous les objets que l'on peut créer. Lorsque l'utilisateur clique sur l'un des boutons, l'onglet paramètre s'ouvre avec les paramètres de l'objet à créer.
- La seconde est la liste des objets contenus dans la zone d'affichage. Chaque objet est classé dans la catégorie qui lui appartient. De plus, chaque objet contient les objets dont il dépend. Pour simplifier la sélection des objets qui peuvent être caché par d'autre, un clique permet de le sélectionner et un double clique permet d'ouvrir l'onglet paramètre de l'objet.
11. Conclusion
A la fin des dix semaines de travail, une bonne partie des objectifs initiaux sont atteints. Nous avons programmé un modeleur qui permet la gestion (création, modification et destruction) des composants de base des structures textiles tendues. Le fait de pouvoir visualiser en trois dimensions et en temps réel la création et la modification sont un plus considérable et un gain de temps pour l'utilisateur. L'interface, intuitive et conviviale, rend les applications plus agréables et simples à utiliser. En fait, elle a été pensée pour permettre aux techniciens qui l'utilisent de crée des structures complexes tout en gardant une vue d'ensemble. Cela permettra de découvrir plus rapidement les incohérences et de proposer des modèles proche de la réalité au module de recherche de formes. Les noeuds sont bien placés. Il reste à améliorer la structure de données des noeuds et objets pour faciliter l'écriture du fichier d'entrée MEFTX. Ceci marquera la fin de la première partie du développement et permettra d'obtenir la forme définitive en 3D.
1ère partie Présentation 3ème partie Bilan