1 - Démarche préliminaire
La première chose que nous avons fait fut de chercher un modèle de cuisine. Pour ce faire, nous avons parcouru les sites Internet de fabricants réputés et avons regardé ce qu'ils offraient: nous sommes rapidement tombés d'accord sur un modèle de Mobalpa, le modèle Doxis :
Nous savions dès le début que nous ne parviendrions pas à obtenir quelque chose de très fidèle à cette photographie, mais cette démarche fut nécessaire car nous manquions cruellement d'inspiration.
Cette démarche faite, nous avons pu notamment :
Tous ces points traités, nous avons pu passer à l'implémentation des objets que nous avions choisi de réaliser.
2 - Aménagement de la cuisine
Voici le plan (un peu grossier) de la cuisine que nous avons réalisé.
3 - Les réalisations
Pour toutes nos réalisations, nous avons suivi le conseil de Mr. Buffa visant à tout gérer par le biais de fichiers Inline. Il est vrai que cette stratégie est beaucoup plus simple pour réaliser des mondes, mais elle ne doit être utilisée que pour des démonstrations en local, car dans un contexte HTTP, comme l'ouverture de X fichiers requiert X connexions, cette solution est trop pénalisante.
3 - 1. Stratégie de réalisation
Afin de bien comprendre les rouages de VRML, nous avons souhaité réaliser le plus d'objets possible. Nous avons notamment réalisé :
Nous avons récupéré certains objets comme une superbe plante verte et un évier que notre camarade Nicolas Derrier avait trouvé sur Internet.
Nous avons aussi réalisé les interactions avec l'utilisateur comme par exemple l'ouvertures des portes, des tiroirs, du bac à légumes dans le réfrigérateur ou des compartiments dans le congélateur, …
Nous avons choisi de ne pas définir de ViewPoint afin de laisser une totale liberté d'évolution au sein de la cuisine, notamment en vue de la démonstration.
Par ailleurs, tous les groupement d'objets que nous avons réalisés l'ont été à l'aide de nœud Collision et non pas Group afin de doter notre scène d'un peu de réalisme vis à vis des interactions de l'avatar.
Pour finir, nous avons choisi de ne pas mettre de plafond dans notre cuisine afin d'autoriser des vues "aériennes" de la pièce, pour permettre lors de la démonstration de visualiser le placement des différents objets.
3 - 2. Description de quelques objets
Nous allons décrire brièvement quelques uns des objets que nous avons réalisé, à savoir le réfrigérateur et les meubles de rangement.
3 - 2 - 1. Le réfrigérateur
C'est probablement l'objet qui nous a demandé le plus de travail.
Le réfrigérateur contient des étagères en verre, ainsi qu'un bac à légumes. Ce dernier peut s'ouvrir, avec la contrainte de ne pas tomber. La porte du réfrigérateur s'ouvre aussi avec une contrainte sur l'angle, qui doit être inférieur à P /2.
Le congélateur est composé de trois tiroirs pouvant s'ouvrir.
Les portes du congélateur et du réfrigérateur ont un joint à soufflets qui a été réalisé à l'aide d'une extrusion que nous avons générée 'à la main'.
Enfin, nous avons placé des PointLight dans le réfrigérateur et le congélateur en prenant soin de bien définir une boundingBox appropriée dans chacun des cas pour éviter d'éclairer le reste de la pièce.
3 - 2 - 2. Les meubles de rangement
Il y en a deux types: les meubles hauts et les meubles bas.
Les meubles bas ont été réalisés en prévoyant une plinthe de 10 cm de haut afin de permettre l'ouverture de la porte sans frottement au sol, l'avancée des pieds sous le meuble lorsqu'on utilise le plan de travail, …
Pour cette raison, le caisson des meubles bas ne mesure que 72 cm de haut, auxquels viennent s'ajouter les 10 cm de la plinthe, ce qui fait bien une hauteur de 82 cm.
Nous avons géré pour ces deux types de meubles deux types d'ouvertures: de gauche à droite et de droite à gauche. Ceci s'imposait pour pouvoir agencer correctement notre cuisine.
3 - 3. Nécessité de définir nos textures
Nous avons défini trois textures, une pour les faïences murales, une autre pour le plan de travail, et une pour le sol.
Ces textures ont été réalisées à l'aide de PhotoShop 5 ainsi que les filtres EyeCandy.
Elle se trouvent dans le répertoire '
./textures/' du projet.3 - 4. L'éclairage
La scène comporte cinq SpotLight que nous avons placées au plafond (qui est purement fictif, rappelons le). Un PointLight se trouve derrière la plante que nous avons insérée au fond à droite de la pièce.
Pour donner le plus de signification à ces différentes sources lumineuse, nous avons désactivé la lampe frontale de l'avatar.
4 - Conclusion
Nous avions eu l'occasion en Maîtrise d'informatique, de travailler sur un projet similaire dont le sujet était de réaliser un monument historique en utilisant POV.
Pour des gens ayant l'habitude de raisonner en CSG, le langage VRML peut, au début, sembler très limité.
En fait, ce projet fut une excellente façon d'appréhender VRML, qui s'est révèlé être un langage d'une puissance inouïe pour un langage interprété, mais dont l'essor est actuellement limité par la puissance des machines et des cartes graphiques.
Cependant, nous éprouvons un seul gros regret à l'égard de ce langage (en plus du manque de CSG): le fait de devoir recourir à un langage comme JavaScript afin de pouvoir déceler des incohérences entre objets. Nous aurions en effet souhaité pouvoir, par exemple, détecter que le bac à légumes était tiré avant d'autoriser l'utilisateur à refermer la porte du réfrigérateur, afin de lui éviter la surprise que peut procurer le fait de passer au travers d'une porte métallique avec un morceau de plastique !