Mini-projet OpenGL (Module OpenGL, ESSI3 VIMM, M.Buffa) |
lapinGL
![]() | ||||||
| |||||||
Fonctionalités | |||||||
| |||||||
Objets 3D (fichiers .obj)
        # Converted by WaveFront Export Plugin 0.1         v     0.577350 -0.577350 -0.577350         v     -0.577350 0.577350 -0.577350         v     -0.577350 -0.577350 0.577350         vn     0.577350 0.577350 0.577350         vn     0.577350 0.577350 0.577350         vn     0.577350 0.577350 0.577350         f     2//1 1//2 3//3         m     0.2 0.2 0.2     0.8 0.8 0.8     0.3 0.3 0.3     2     0 0 0         t    planar     0.0 1.0 0.0     1.0 0.0 0.0     1.0 1.0     texture     2 Chaque ligne débutant par un 'vn' suivi de trois coordonées décrit une normale associée à un sommet d'une face de l'objet. Chaque ligne débutant par un 'f' suivi de trois doublets de chiffres représente une face triangulaire de l'objet. Dans chaque doublet, le premier chiffre représente un numéro de vertex, et le deuxième un numéro de normale. Ces trois tags proviennent de format d'objet WaveFront, et peuvent donc êtres générés
automatiquement. Les deux suivants ont été ajoutés par nos soins et concernent la surface
des objets. Définit le matériaux de l'objet, c'est à dire les différentes réactions d'un solide aux rayons lumineux. Le premier triplet définit les composantes RGB de la réflexion ambiante, le deuxième concerne le réflexion diffuse, la troisième le réflection spéculaire. Le nombre qui suit représente la taille du reflet (plus il est élevé, plus le reflet est petit). Le quatrième triplet représente enfin la lumière émise par le solide. Définit la texture appliquée à l'objet. Le tag 't' est suivi du type de projection que l'on désire appliquer à l'objet. Il peut s'agir de 'planar' 'cylindrical' ou 'spérical'. Le triplet qui suit définit le vecteur selon lequel la projection s'effectue. Le triplet suivant correspond à l'orientation de la texture lors de la projection. Le doublet qui suit représente le nombre de fois que la texture sera appliquée, horizontalement et verticalement. Le premier triplet qui suit définit la direction du cylindre, et le second triplet la direction selon laquelle le bord droit de la texture va rejoindre le gauche. Le chiffre qui suit représente le nombre de fois que la texture sera apliquée selon la hauteur du cylindre. Le premier triplet définit l'axe nord - sud de la sphère, et le second a le même sens que dans le cas d'une projection cylindrique. | |||||||
Scripts de mouvements (fichiers .dat)
# les commentaires avec '#' ne peuvent pas succéder à une ligne normale # les lignes blanches sont permises object <nom de l'objet> {
# le calcul se fait par ordre d'arrivée (optionel) T 0 2 1 # T signifie translation # les 3 chiffres représentent un vecteur <x,y,z> R 45 0 0 # R signifie rotation # les angles selon les axes x, y et z (dans l'ordre de calcul) sont exprimés en degré S 2 2 2 # S signifie l'échelle # ne pas laisser une valeur à 0 # on peut composer T,R,S dans n'importe quel ordre et même en rajouter T -1 0 0 # solid est obligatoire, il détermine la forme de l'objet solid <nom du fichier .obj sans l'extension> # timescale indique la durée des mouvements en millisecondes (optionel) timescale 1000 # motion décrit un mouvement qui sera appelé par un évenement du même nom dans # l'exécution du programme. Les deux premiers chiffres indiquent la position de l'horloge sachant # qu'un mouvement ne dure que de 0 à 1. Pour changer la durée voir "timescale". # (optionel) motion <label de mouvement> T 0.0 1.0 0 0 0 0 2 0 R 0.0 0.5 0 0 0 180 0 0 R 0.5 1.0 180 0 0 0 0 360 # on peut composer les transformations à volonté. Pour T,R et S il faut deux # vecteurs pour le départ et l'arrivée # premier fils : object
# sa position est celle par rapport au père solid <fichier objet> # ...les options sont les mêmes que l'objet père } # second fils : object
S 1 1 2 solid <fichier objet> <EOF>
Détails sur les transformations
| Détails sur la hiérarchie Détails sur les mouvements
|
| |