ESSI3-DESS ISI 98-99 LOG1: LOGICIELS GRAPHIQUES
TD VRML
LA MODELISATION D'UNE CUISINE
Tina Wilhelm née Burgess DESS ISI
Evelyne Parthenay DESS ISI
Le 7 décembre 1998.
INTRODUCTION
Nous avons modélisé une petite cuisine en 'L' avec les meubles de cuisine sur deux murs. L'idée d'aménagement vient d'une vraie cuisine: celle d'un des auteurs. Néanmoins, il s'agit d'un prototype permettant d'illustrer les différentes possibilités du langage VRML, y compris les animations. Tous les meubles, les équipements électroménager et les animations ont été réalisées en VRML par nos soins, à l'exception d'une fonction en JavaScript qui change la couleur des plaques de cuisson.
ASPETS TECHNIQUES DE LA REALISATION
Modélisation du four :
( fichiers : 'four.wrl', et tous les fichiers qui commencent par 'four.....')
Prenons le four comme exemple car sa modélisation illustre de nombreuses techniques VRML.
La modélisation du four utilise les noeuds inline pour insérer, dans le fichier principal, les éléments construits dans un fichier séparé. Cette technique évite d'encombrer le fichier principal qui est donc plus lisible et aussi permet d'établir une bibliothèque d'éléments primitifs pour les partager. L'utilisation de DEF nom pour le côté du four et la grille intérieure permet de réutiliser le corps d'un noeud pour le deuxième coté et la deuxième grille.
La porte du four consiste en une fenêtre de vision, entourée d'un cadre réalisé avec un noeud geometry Extrusion pour construire l'objet 3D en suivant le tour de la porte avec la section 2D du cadre. Le cadre utilise les propriétés shininess et specularColor pour donner un aspect brillant qui change légèrement de couleur selon la position de l'observateur par rapport aux sources de lumière. La fenêtre de vision utilise la propriété transparency pour la rendre presque transparente.
Une pizza dans le four utilise une propriété texture pour plaquer une image de pizza sur un cylindre aplati.
Animation du four :
La porte du four s'ouvre en 'clickant' sur sa poignée. Ce mouvement est réalisé avec 2 sensors et un interpolator. Un TouchSensor est inclus dans le même groupe que la poignée pour la rendre 'sensible' et un TimeSensor donne la durée du cycle complet de mouvement; ces deux senseurs sont 'câblés' ensemble avec ROUTE pour dire que le cycle commence lorsqu'on click sur la poignée. Un OrientationInterpolator donne l'orientation de la porte à 4 différents stades du cycle de temps: fermé, ouvert, ouvert et refermé. Nous avons programmé un arrêt en positon ouvert (1/4 tour sur son axe Y ) d'un demi-cycle pour donner à l'observateur le temps de regarder à l'intérieur du four. Le TimeSensor est 'câblé' sur l'OrientationInterpolator qui lui-même est 'câblé' sur la propriété rotation du noeud Transform de la porte. L'origine du système de coordonnées dans laquelle la porte est insérée, a été déplacée en bas de celle-ci pour que l'axe X de pivotement soit en bas de la porte et non pas au milieu.
Nous notons dans la suite les techniques autres et intéressantes appliquées aux différents éléments.
Les plaques de cuisson :
( fichier : 'plaques.wrl' et 'plaqueVariateur.wrl' )
La modélisation des plaques de cuisson illustre la technique d'animation par une fonction JavaScript, utilisée pour 'mapper' les couleurs RGB d'une plaque lorsqu'on 'click' sur la plaque. Au départ elles sont toutes éteintes. En clickant une première fois, elles changent en rouge, un deuxième click les éteint.
Le robinet :
( fichier : 'robinet.wrl' )
La modélisation du robinet illustre une utilisation astucieuse du nœud geometry Extrusion pour lui donner une forme très réaliste.
Le robinet est du type mitigeur. Nous avons utilisé la propriété shininess pour donner un aspect chromé. Le bec est réalisé avec un geometry Extrusion, la propriété scale a été utilisée pour donner sa forme élargie au bout.. Le corps est un simple geometry cylinder. Pour la poignée, la propriété scale du noeud geometry Extrusion utilisée asymétrique ment avec un crossSection rond nous donne une poignée cylindrique au début, mince et aplatie au milieu et qui se termine en un point.
Le plan de travail :
( fichier : 'planTravail.wrl' )
Le plan de travail est réalisé avec un noeud geometry Extrusion pour définir sa crossSection avec bord biseauté. Une texture ImageTexture { url "blur.jpg" } donne un aspect hêtre. La propriété scale de l'Extrusion est utilisée pour raffiner la largeur du plan à l'arrière des plaques de cuisson et de l'évier.
Les éclairages :
( fichiers : 'eclairage.wrl', 'lamp.wrl' et 'petitSpot.wrl' )
La scène est éclairée avec un plafonnier et 2 spots (tous des SpotLight). Le plafonnier est réalisé avec un grand angle d'éclairage pour éclairer toute la cuisine. Les 2 petits spots, l'un au-dessus de l'évier et l'autre qui éclaire les plaques de cuisson sont réalisés avec un petit angle. Ces lumières sont activées, grâce à l'adaptation par nos soins d'une fonction JavaScript (au départ pour changer la couleur des plaques de cuisson).
Les points de vue :
Les Viewpoint permettent d'observer la scène depuis plusieurs points de vue prédéfinis. Nous avons saisi plusieurs Viewpoint que nous considérons judicieuses. Les ViewPoints peuvent ensuite être reliés entre elles pour réaliser un tour de scène.
L'arrière plan et les murs de la cuisine :
( fichiers : 'cuisine.wrl' et 'murs.wrl')
Un noeud background a été utilisé en jouant sur les propriétés groundAngle, groundColor, skyAngle et skyColor, pour réaliser un ciel aux couleurs dégradées.
Les murs sont réalisés avec les geometry Box. Une porte-fenêtre est réalisée en utilisant la propriété transparency. Son cadre est réalisé avec un noeud geometry extrusion en matière demi - brillant ( la propriété shininess 0.7 ) imitant l'aluminium.
Les Meubles de rangement :
Tous les meubles ont leurs portes et tiroirs qui s'ouvrent. Le meubles "bas" ont tous été réalisés individuellement tandis les meubles "haut" illustre l'utilité de la propriété scale du noeud Transform qui permet l'utilisation d'un seul meuble 'standard' d'un mètre de large, inséré inline dans chaque fichier, en ajustant sa largeur. Nous sommes conscients que cette méthode introduit une petite erreur d'exactitude car les parois de chaque meuble changent d'épaisseur et les boutons ne sont plus sphériques.
L'Électroménager :
Le four, lave vaisselle et réfrigérateur ont été réalisés par nos soins. Seul le four a été décrit ci-dessus en détail car le lave-vaisselle a été réalisé avec essentiellement les mêmes fonctions que le four. Le réfrigérateur est très similaire aux meubles de rangement.
Liste des meubles de rangement et l'Electroménager :
En bas en tournant dans le sens des aiguilles d'une montre: réfrigérateur ( 'frigo.wrl'), meuble "bas" 60 de large avec 5 tiroirs ('bas60tiroirs.wrl'), four et plaques de cuisson ('four.wrl' et 'plaques.wrl'), meuble bas 40cm de large avec 1 tiroir et une porte ('bas40droit.wrl'), meuble "bas" 120cm de large avec 1 tiroir et une porte ( la moitié du meuble étant caché sous le plan de travail) ('bas120coin.wrl'), un meuble "bas" de 60cm de large avec une porte et un faux tiroir (il ne s'ouvre pas car l'évier est derrière) ('bas60sousEvier.wrl'), lave vaisselle ('lavev.wrl'), meuble "colonne" 40cm de large avec 2 portes ('colonne40.wrl').
En haut en tournant dans le sens des aiguilles d'une montre : un meuble "haut" 120cm de large avec 2 portes ('haut120.wrl'), un meuble "haut" 40cm de large ('haut40droit.wrl'), un cache de coin (une imitation de porte qui ne s'ouvre pas) ('hautcoin.wrl'), un meuble "haut" 60cm de large ('haut60gauche.wrl').
Autres meubles:
Une table 'petit déjeuner' avec 4 tabourets complètent bien cette cuisine américaine. Le plateau de la table a une texture comme le plan de travail. Son pied est chromé.
CONCLUSION
Le langage VRML et son web browser 'Cosmo Player' constituent les outils puissants pour modéliser et naviguer dans une scène en 3 dimensions. La modélisation de la cuisine nous a permis de nous familiariser avec la plupart des techniques, mais nous n'avons pas utilisé toutes les possibilités. Avec plus de temps et de connaissance en JavaScript, nous pourrions faire mieux, par exemple mettre les aliments dans les placards, donner plus de précision sur la forme des meubles et l'électroménager (plus arrondis etc..), faire couler de l'eau du robinet avec le bruit de l'eau qui coule, ajouter les bruits du lave-vaisselle, peaufiner les aménagements intérieurs, etc.
CHEMIN D'ACCESS AUX FICHIERS : ~wilhelm/vrml/