Simula GL
---
L'éditeur d'objets

Principe de l'éditeur
Création et manipulation de faces
Création d'une couleur
Plaquage de textures
Chargement et sauvegarde d'un objet
Rappel des touches


Principe de l'éditeur

            La complexité de la conception du simulateur 3D auto/moto nous a ammené à choisir entre 2 méthodes:

            Nous avons finalement opté pour la deuxième solution afin de permettre plus d'évolutivité, et cela quite à passer du temps à la conception de ces différents outils.

            Le but de l'éditeur d'objets, donc, est de faciliter et d'accélérer le processus de création des objets du simulateur. On pourrait bien sûr imaginer qu'il puisse servir à la fabrication d'objets pour une autre application.
A l'origine, l'éditeur avait été conçu sous MS-DOS. Il a ensuite été rapidement implémenté en Java et finalement en C avec OpenGL, cette dernière bibliothèque apportant l'avantage de travailler avec un moteur graphique 3D déja programmé, optimisé et fournissant des fonctionnalités complexes diverses.
Un avantage certain, en ce qui concerne ce projet, réside dans l'obtention d'un rendu graphique similaire à celui obtenu dans le simulateur 3D puisque le moteur de ce dernier est le même que celui de l'éditeur (ou l'inverse !).

            Cependant, il semble important de souligner que l'éditeur d'objets est d'abord un éditeur on ne peut plus simplissime. En effet, celui-ci ne permet de manipuler que des polygones 3D grâce aux touches du clavier. De plus, il ne fonctionne qu'avec des coordonnées entières. Cela permet ainsi de faciliter le placement manuel des points du polygone sur des positions exactes. Cette fonctionnalité est interessante pour lier précisément des faces entre elles.
L'editeur 3D est aussi capable de créer, d'importer et de plaquer des couleurs et des textures rgb sur n'importe quelle face de l'objet. Différents types de rendu (filiaire\Plein, transparence, etc...) sont intégrés.
            L'ensemble des éléments chargés en mémoire sont en permanence affichés. Dans la partie gauche se trouve la palette de couleurs et textures, dans la partie droite, plus large, se trouve la fenêtre principale affichant l'objet sous un angle voulu en déplaçant la souris tout en cliquant avec le bouton gauche sur la fenêtre.

            Il est clair que sans lui, la conception des objets de la scène, et en particulier celle des vehicules (auto & moto), aurait été rendue beaucoup plus longue et délicate.

Création et manipulation des faces

            La création d'une face se fait de manière simple. Il faut savoir que l'essentiel des manipulations dans cet éditeur réside dans les duplications, les translations et les déformations des polygones. Cependant, il a été nécessaire de fournir une petite routine de création d'un polygone de base, bien utile lorsqu'il n'y a pas encore d'objets chargés dans la scène. Cette fonction est présente dans l'item 'Objet > Nouveau' du menu déroulant que l'on peut atteindre en cliquant avec le bouton droit de souris dans la fenêtre principale de l'éditeur.
            Une fois que la face est créée, on peut soit la bouger en appuyant sur les flèches de direction du clavier, soit la dupliquer en appuyant sur la touche [INSER] ou soit l'éditer en pressant sur la barre [ESPACE].

            Cette dernière fonction fait passer l'éditeur en mode 'Edition de sommets'. Le sommet sélectionné du polygone est représente par un point rouge. Les touches de direction permettent alors de déplacer le point (et donc de déformer le polygone). Appuyez sur la touche [TAB] et vous placerez la sélection sur le sommet suivant du poygone. L'appui sur la touche [INSER] par l'utilisateur permettrait de dupliquer le point, et la touche [SUPPR] de l'effacer.
Cette dernière touche permet également d'effacer le polygone sélectionné lorsque l'éditeur n'est plus en mode 'Edition de sommets'.

Création d'une couleur

            L'éditeur de polygones 3D permet également de manipuler les couleurs.
En appuyant sur la touche [BACKSPACE] par exemple, on change la couleur du polygone sélectionné. A chaque appui sur cette touche, la nouvelle couleur est choisie parmi celles de la palette chargée en mémoire dans l'éditeur et dont le contenu est affiché sur la partie droite de l'éditeur.
            Il est cependant aussi possible de créer sa propre couleur en utilisant l'éditeur de couleurs intégré. Ce dernier est accessible via le menu déroulant en cliquant sur l'item 'Outils > Créer une couleur'.

            L'appel de cet utilitaire fait apparaître une deuxième fenêtre comprenant dans sa partie supérieure une plaque 3D colorée de la couleur en cours d'édition et que l'on peut faire tourner en déplaçant la souris tout en cliquant dessus avec le bouton gauche.Dans la partie inférieure sont affichées 4 barres verticales représentant les 4 niveaux des composantes de la couleur.
            La première barre à gauche correspond au niveau de rouge, celle à sa droite au niveau de vert, suivi du bleu et pour finir la transparence (paramètre alpha). L'éditeur gère en effet les effets de transparence (si ce mode est activé).
La permutation entre les barres de couleurs se fait par l'appui de la touche [TAB]. Pour monter le niveau de la composante séléctionnée, on appuie sur la touche [PAGE UP], et [PAGE DOWN] sert a le faire descendre.
           Enfin, pour valider ou annuler l'édition de la couleur, un clic du bouton droite de la souris sur l'éditeur de couleurs suivi du choix voulu (OK ou Annuler) permet de revenir à la fenêtre principale de l'éditeur de polygones.

Plaquage de textures

            L'éditeur 3D sait gérer les textures au format RGB. Une fois chargées, leur utilisation est quasi-transparente pour l'utilisateur. En effet, la sélection d'une texture en mémoire pour un polygone se fait comme pour les couleurs: par l'appui sur la touche [BACKSPACE]. Il est néanmoins possible d'interdire l'affichage des textures à travers l'appel au menu principal. Une idée de l'affichage obtenu est la suivante (appliquée sur la moto)

            En appelant le menu et en cliquant sur l'item 'Outils > Importer une texture', l'utilisateur est alors invité à entrer le nom d'un fichier contenant la texture au format .RGB. Ce fichier doit pour l'instant contenir une image de taille 256x256 pixels pour être valide.
            Une fois la texture chargée, celle-ci est représentée sur la gauche de l'écran, en dessous de la palette de couleurs.

Chargement et sauvegarde d'un objet

            Le format de sauvegarde des objets est un format ASCII (donc lisible et modifiable au travers n'importe quel éditeur de texte).
Ce dernier est stocké d'une manière spécifique à l'éditeur et il y a donc fort peu de chances qu'il soit utilisable par un autre logiciel 3D du commerce.
            Cependant le parseur de fichiers compatible à la lecture du format est facilement implémentable avec n'importe quel langage capable de lire dans un fichier.

Rappel des touches

   Clavier:

        [F1]                   : Aide
        [TAB]                : Sélection successive d'une face de l'objet:
        [ESPACE]         : Edition d'un face - (passage en mode Edition de sommets)
        [DROITE], [GAUCHE], [HAUT], [BAS], [PAGE UP], [PAGE DOWN]
                                  : Translation (d'un polygone ou d'un sommet en mode 'Edition de sommets'):
        [SUPPR]            : Suppression (d'un polygone ou d'un sommet en mode 'Edition de sommets')
        [INSER]             : Duplication (d'un polygone ou d'un sommet en mode 'Edition de sommets'):
        [BACKSPACE] : Changement de couleur/texture du polygone sélectionné:
        [ESC]                 : Quitter

   Souris:

        [BT_GAUCHE] : Rotation de l'objet
        [BT_DROITE]   : Affichage du menu:
            Objet > Nouveau : Vider la mémoire et créer une face
            Objet > Importer : Charger un objet. L'objet en cours est effacé
            Objet > Exporter : Sauver l'objet en cours dans un fichier
            Rendu > ... : Différents switchs de rendu
            Outils > Créer une couleur : Créer une couleur avec l'éditeur de couleurs intégré
            Outils > Importer une texture : Charger une texture en mémoire
 

Le Jeu
Index SimulaGL
Editeur de circuit