Université de Nice Sophia-Antipolis

Ecole Supérieure en Sciences Informatiques

ESSI 3 – 1998/1997

 

Modélisation tridimensionnelle d'une cuisine

Karine Olszowy & Loïc Bertrand

Introduction

Le but de ce projet était de modéliser l'intérieur d'une cuisine en 3 dimensions. Pour ce faire, nous avions à notre disposition le langage VRML 2.0.

Nous devions nous conformer aux spécifications données dans le sujet, et tirées d'extraits de catalogues de magasins d'ameublement. Ces spécifications concernaient les dimensions des meubles, et les hauteurs à ne pas dépasser. En revanche, elles n'imposaient aucune contrainte concernant l'apparence et le style des meubles.

Problème général

Pour pouvoir agencer facilement une cuisine, il est préférable de séparer le mobilier de l'immobilier. Un objet représente une entité ainsi on peut choisir les éléments que l'on veut mettre dans son intérieur et les positionner facilement. La scène est ainsi totalement modulable.

Mode de réalisation

La réalisation des différents éléments qui composent notre cuisine s'est déroulée de manière progressive. Nous avons tout d'abord développé des meubles simples, comme une table et une chaise. Nous avons ensuite réalisé des éléments plus évolués et animés, comme les placards et les tiroirs. Puis, avec une bonne expérience de VRML, nous avons pu réaliser des meubles plus sophistiqués, faisant appel à JavaScript.

Les éléments que nous avons choisi de faire apparaître dans notre cuisine sont les suivants :

En plus de ces divers éléments, la cuisine est présentée avec un certain nombre d'objets de décoration. Nous en avons récupéré certains sur Internet, et nous avons réalisé les autres.

Description technique de nos réalisations

La table

Les pieds de la table sont réalisés à partir d'un cylindre que l'on réutilise en le translatant. Sur ces 4 pieds nous avons positionné 2 plateaux, construits à partir d'une box et de changements d'échelle.

Les chaises

Notre scène comporte 4 chaises, qui sont différentes instances d'un même objet. Cet objet est formé de 4 cylindres qui constituent les pieds, de deux box perpendiculaires formant le dossier. Le coussin de la chaise a été réalisé grâce à une extrusion. La forme de base est étirée horizontalement.

Les meubles

Les différents panneaux des meubles sont réalisés grâce à des box. Les cotés d'un meuble sont basés sur une seule box, de même que les rayons. Les portes sont réalisées grâce à un CylinderSensor associé à une box et à une sphere, qui sert de poignée. L'axe de rotation correspond au montant de la porte. L'angle de rotation autorisé conserve un mouvement de porte cohérent.

Les meubles bas sont munis d'un ou deux tiroirs. Ceux-ci sont basés sur un seul objet. Il constitue une entité distincte des meubles, et se trouve dans un fichier à part. Ce tiroir peut s'ouvrir. Cette fonctionnalité est implémentée dans le fichier du tiroir grâce à un PlaneSensor. Nous avons dû effectuer des rotations pour positionner ce PlaneSensor dans le plan XZ. L'ouverture maximum autorisée est légèrement inférieure à la longueur du tiroir.

Le réfrigérateur

Il est constitué de différentes entités : la grille du réfrigérateur (répétée plusieurs fois), le bac à légumes, une poignée de porte (elle aussi répétée). Les portes et le tiroir sont construits comme précédemment.

Il possède une partie réfrigérateur et une partie congélateur. Il est également muni d'une lampe, réalisée grâce à un PointLight.

L'évier

L'évier est encastré dans un meuble à deux portes. L'évier en lui même est constitué d'une extrusion, qui forme le bac. L'égouttoir est composé de box placées autour du bac (utilisées plusieurs fois). Les ondulations de l'égouttoir sont réalisées à partir d'une extrusion répétée plusieurs fois à intervalles constants. L'extrusion initiale est basée sur un cercle déplacé le long d'une droite et avec des changements d'échelle aux extrémités.

La cuisinière

La cuisinière est composée d'un four et de plaques de cuisson. Les plaques sont basées sur un seul objet, situé dans un fichier séparé. De même, les boutons de commande sont basés sur un objet stocké dans un fichier séparé.

Ce bouton est construit à partir d'un CylinderSensor, placé en son centre. La rotation est reliée à une fonction JavaScript qui permet d'allumer le voyant de la plaque. Cette fonction retourne un tableau de 3 rééls qui constituent la valeur du champ emissiveColor du voyant.

Le four possède une porte qui s'ouvre verticalement. Il comporte deux résistances, instances d'un même objet. Cet objet est réalisé grâce à l'extrusion d'un cercle le long d'une courbe. De même, le support de grille est réalisé à partir de l'extrusion d'un rectangle le long d'une droite, et des changements d'échelle en certains points. Les instances de cette extrusion sont placées face à face de chaque coté du four.

Le four est muni d'une lampe que l'on peut allumer ou éteindre à partir d'un interrupteur placé à coté des boutons de contrôle du four. Ces boutons sont des instances du même objet que pour les plaques. L'interrupteur est réalisé à partir d'un TouchSensor. Le fait de cliquer sur celui-ci est répercuté à une fonction JavaScript qui allume ou éteint la lampe en fonction de son état courant. L'état de la lampe est conservé dans un champ de la fonction JavaScript, et la lampe est réalisée à partir d'un PointLigtht. La valeur de sortie de la fonction est un booléen qui indique si la lampe doit être allumée ou non.

Les objets de décoration

Le tapis : c'est une box sur laquelle nous avons appliqué une texture.

Les verres à whisky et à cocktail : ils sont réalisés à partir de l'extrusion d'un cercle le long d'une droite. Pour construire l'extérieur du verre nous avons réalisé une extrusion ascendante, et pour l'intérieur une extrusion descendante. Ceci nous a permis de donner de la consistance au verre. Le contenu des verres est stocké dans un fichier séparé. Il est réalisé grâce à une extrusion ascendante.

La casserole : Elle est constituée de deux extrusions : une pour le manche et une pour le récipient.

Recherche d'objets plus perfectionnés

Nous avons trouvé sur le Web des objets plus évolués comme une plante, une rose ou une cafetière animée.

Nous avons également récupéré des objets plus simples, que nous avons agencés pour compléter notre cuisine. Nous avons par exemple composé une assiette de fruits.

En plus de ces objets, nous avons intégré des réalisations d'autres étudiants : le meuble d'angle, la hotte, le lave-vaisselle (que nous avons cependant retouché), ainsi que le robinet.

Conclusion

Ce projet était très intéressant. Au début, le principe du langage VRML était un peu déroutant, mais après une certain temps de pratique on se laisse prendre au jeu, et on essaye d'en explorer toutes les facettes. Il est dommage que nous n'ayons pas eu plus de temps. En plus du langage VRML, il pourrait être intéressant d'apprendre à utiliser un modeleur.