OGLX Editor V 1.0 { S_GO (c) 2003 }
Editeur 3D OpenGL, utilisant des Interfaces Utilisateurs aux comportement améliorés.
| Coder | Irlvin | | Designer | Asylof | | Developer | D'Elfe | | Date | 04/04/2003 (copyright s_go 2003) | | Documentation | Guide Officiel OpenGL 1.2 (3éme Edition) |
Présentation
L'OglxEditor est un Editeur 3D OpenGL, utilisant des Interfaces Utilisateurs (boites de dialogues) de mon propre cru, avec des comportement améliorés (Recherche en Dialogues Comportements IHM). L"Editeur se comporte relativement en temps réel pour des objets allant jusqu'à 40 000 points et 32 000 triangles. (Cela donne une idée de la portée d'edition de cet editeur). Par comparaison, on pourrait dire que c'est un mini-3D Studio, sans la richesse des fonctions de manipulation d'objets de celui-ci. Le but original de cet editeur est de pouvoir créer trés rapidement, des points, des lignes et des triangles, afin d'appliquer dessus des algorithmes de calcul fractales... - Pour les triangles, l'algorithme Country, permet, à partir d'un seul triangles (et plus), de générer d'autres triangles internes pour modéliser un terrain 3D. Les triangles créer avant l'algorithme donnent la forme générale du terrain et l'algorithme créer des détails à partir de cette forme.
- Pour les lignes, l'algorithme VonSgo, permet, à partir de segments (orientés), de faire des calculs de courbes auto-similaire continue et discontinue (Concept Fractale VonKoch Super généralisées : algo personnel)
L'interet de cette editeur est de pouvoir - Editer des objets 3D, contenant des points, des lignes, des triangles (et bientôt des carrés), en utilisant uniquement une imagerie OpenGL (Open Graphic Library)
- Développer des algorithmes de calculs fractales sur les objets edités et les tester.
- Tester ses connaissances OpenGL sur la gestion de certains états. (Lignes, points, faces avant, Hint, Blending cf Script OpenGL)
- Editer simplement des options de visualisation OpenGL par l'intermédaire de Script GL éditables.
- Développer des Interfaces Utilisateurs simples, rapides, et maniables.
- Faire un résumé/test de mes compétences en développement Logiciel (architecture logiciel/multi-threading, event loop) , en IHM 2D et 3D (GDI, SDK, MFC, OpenGL) et en modélisation Objet.
Comment utiliser l'Editeur
Le lancement : il suffit de double-clicker sur l'icone du programme pour qu'il s'ouvre. Là, une fenêtre, vide, apparait. Cette fenetre est divisé en 4 sous-fenetres, mais que l'on ne voit pas, car aucun objet n'est visualisé. Interface Utilisateur. La seule et unique maniére d'accéder au menu de l'editeur est de double-clicker dans celui-ci, à n'importe quel endroit. Un menu apparait alors dans lequel on peut choisir différentes choses : Menu Fullscreen : permet de mettre la fenetre en plain ecran ou si elle est en plein ecran de lui redonner sa taille normal (Celle que la fenetre avait avant de passer en plain ecran). Menu File : permet de charger des objets (LOAD), de sauver des objets (SAVE, SAVE AS) ou de détruire l'objet en cours d'édition (NEW) Aprés avoir chargé un objet la fenetre de visualisation apparait comme suit :
La fenêtre montre 4 points de vues différents de l'objet que l'on vient de charger. |
 |
Pour changer la position de l'objet : appuyer sur le bouton gauche de la souris, maintenir le bouton enfoncé et déplacé la souris. L'objet sera alors translaté. Pour agrandir ou diminuer la taille de l'objet : appuyer sur le bouton droit de la souris, maintenir le bouton enfoncé et déplacé la souris vers la droite pour agrandir et vers la gauche pour diminuer.. Pour tourner l'objet : appuyer sur la touche "Ctrl" du clavier, puis maintenir le bouton gauche de la souris enfoncé et déplacé la souris pour tourner l'objet. Cela permet de tourner l'objet uniquement sur 2 axes. Pour faire tourner l'objet sur le troisiéme axe, il faut appuyer sur la touche "Shift" et plus sur la touche "Ctrl". Remarque : quand on fais une rotation sur l'objet dans une vue non libre (gauche,droite,devant,...), lorsque l'on arrêtte d'appuyer sur la touche "Ctrl" ou "shift", la vue retrouve son orientation propre (gauche, droite, devant,...) Remarque : ces fonctionnalités ne modifie en aucune maniére l'objet. Ce ne sont que des changements de visualisation de l'objet, et non des changements de l'objets. Dialogue Object & View
fait un apparaitre la boite de dialogue qui gére les vues et la visualisation de l'objet éditer.
Agencement : bouton qui permet de changer l'agencement des frames de l'editeur. Deux modes : Visualisé les 4 vues ou maximisé la frame actuellement selectionné.
Point de vue : bouton qui permet de changer le point de vue de la frame selectionné. 7 points de vue différents : Gauche, droite, devant, derriére, dessus, dessous et libre. Seul le point de vue libre permet de pouvoir faire tourner l'objet visualisé.
Points : bouton qui permet de choisir si l'on dessine les points ou pas. On affiche pas les points On affiche les points.
Lignes : bouton qui permet de choisir la maniére de visualiser les lignes On affiche pas les lignes On affiche les lignes. On affiche les lignes comme des vecteurs (avec une fléche montrant l'orientation de la ligne).
Triangles : bouton qui permet de choisir la maniére de visualiser les triangles de l'objet édité. On affiche pas les triangles. On affiche les triangles en mode rempli. On affiche les triangles comme des lignes.
Mode Dialogue : bouton qui permet de passer d'un mode dialogue normale, à un mode dialogue minimisé et vice versa. Ce mode fait en sorte que, quand la souris n'est plus au dessus du dialogue, celui-ci s'affiche en taille minimisé, ce qui permet de moins encombrés l'écran.
MAJ : Mise à jour de l'affichage OpenGL. Bouton qui applique les modifications de visualisation choisies.
Fermer : bouton qui ferme la boite de dialogue.
Zone de Script OpenGL
Chaque frame posséde un script Open GL indépendant des autres frames. Ce script s'execute à chaque fois que la frame est mise à jour. Cela permet de définir une frame où l'on visualisera l'objet Editer en "fil de fer" avec des points de moyenne taille et une autre frame ou l'on pourra visualiser l'objet en mode couleur remplie. Voici la liste des fonctions OpenGL utilisable dans les zones script GL des Frames et leur action sur la visualisation dans une frame. | glPointSize(3.5); | Définit la largeur en pixels des points restituées. | | glLineWidth(3.5); | Définit la largeur en pixels des lignes restituées. | | glEnable(GL_LINE_STIPPLE); | Active la dessin en pointillés des lignes | | gllLineStipple(1,0X00FF); | Définit le schéma de pointillés en crous pour les lignes. | | glPolygonMode(GL_FRONT, GL_FILL); | Controle le mode de dessin des faces avant et arriére d'un polygone. | | glFrontFace(GL_CCW); | Controle la maniére de déterminer les polygones en face avant. | | glEnable(GL_CULL_FACE); | Active le calcul des faces cachées. | | glCullFace(GL_FRONT); | Indique quels polygones éliminer avant qu'ils ne soit convertit en coordonnées écran. | | glShadeModel(GL_SMOOTH); | Définit le model de dégradé. | | glEnable(GL_LIGHTING); | Active le calcul des faces en mode éclairé. (Une lumiére est créé automatiquement avant). | | glLightModeli(GL_LIGTH_MODEL_LOCAL_VIEWER, GL_TRUE); | Autorise le point de vue locale ou infini du modéle d'éclairage. | | glLightModeli(GL_LIGTH_MODEL_TWO_SIDE, GL_TRUE); | Autorise ou pas l'éclairage sur 2 faces. | | glEnable(GL_BLEND); | Active le Blending | | glDepthMask(GL_TRUE); | Controle le mode écriture/lecture ou lecture seul du tampon de profondeur | | glBlendFunc(GL_ONE,GL_ZERO); | Controle la combinaison des valeurs chromatiques traitée (source) avec celles qui se trouve déjà dans la mémoire tampon (la destination) | | glHint(GL_POINT_SMOOTH_HINT,GL_DONT_CARE); | Controle certains aspects du comportement d'OpenGL. | | glEnable(GL_POINT_SMOOTH); | Active le lissage des points | | glEnable(GL_LINE_SMOOTH); | Active le lissage des lignes | | glEnable(GL_POLYGON_SMOOTH); | Active le lissage des polygones | Vous trouverez ici, un lien vers une liste de script OpenGL vous donnant une idée de ce que l'on peut faire avec.
|