ALAMARGOT François
BUIGUEZ Arnaud
GINIEYS Youri
DESS-ISI, LOG1 1998/99.
Rapport du projet VRML.
Le langage VRML (Virtual Reality Modeling Language) est un langage standardisé servant à décrire des objets 3D interactifs. La première rédaction de ses spécifications a été faite par Silicon Graphics en 1995 et est basé sur le format de fichier Open Inventor. Il a été reconnu comme standard par l’International Organization for Standardization (ISO) en décembre 97.
VRML permet de décrire des mondes en trois dimensions dans lesquels l’utilisateur peut se déplacer et interagir avec les objets qui l’entourent.
Son point fort est sa compatibilité avec le web : de la même façon que HTML permet d’échanger des documents écrit dans le monde entier, VRML permet de diffuser des "Mondes virtuels". En effet, une des premières motivations des pionniers du VRML était de marcher et de travailler dans un monde virtuel partagé.
Le but du projet du module LOG1 était d’apprendre ce langage et d’utiliser ses possibilités ; pour cela nous avons construit une cuisine virtuelle. Cela s’est fait en deux étapes : la construction des meubles et l’aménagement dans la cuisine.
Vue d’ensemble de la cuisine.
2. Le Mobilier.
Nous avons tout d’abord établi une liste des meubles dont nous avions besoin :
Nous avons ensuite défini la grande majorité de ces meubles en VRML.
2.1 Les meubles de rangement :
Nous avons définit trois sortes de meubles : des meubles colonnes, des meubles hauts pouvant s’accrocher au mur, et des meubles bas.
Nous avons utilisé des planches modélisées par des nœuds "Box" dont l’épaisseur est faible. Une texture de bois a été appliquée pour améliorer le rendu réaliste. On les a ensuite assemblées en un parallélépipède rectangle. De cette manière, on obtient l’armature de toute une série de meubles. On ajoute ensuite les étagères à l’intérieur.
Il reste à définir les portes de ces meubles. Pour cela on définit un groupe contenant une planche et une poignée ; une poignée étant un cône ou l’assemblage d’un cylindre et d’une sphère.
Ces portes sont rendues mobiles grâce à un nœud "CylinderSensor" qui permet à l’objet fils d’avoir un mouvement de rotation quand l’utilisateur les manipule à la souris. Ce mouvement étant limité dans son débattement par le concepteur grâce à un angle de rotation spécifique à chaque porte.
L’assemblage des différentes pièces se fait de manière très précise grâce au nœud "Transform" et à ses attributs "translation", "rotation" et "scale".
D’une manière analogue, on crée un tiroir que l’on rend mobile suivant un axe principal grâce au nœud "PlaneSensor". On peut ensuite le dupliquer et l’intégrer dans les meubles précédents. On obtient ainsi deux sortes de meubles bas : un meuble avec uniquement des tiroirs et un meuble avec des portes ouvrantes et des tiroirs.
2.2 La Table :
L’objectif était de réaliser une table ovale en marbre. Elle se compose de deux parties : les pieds et un tableau en marbre.
Un pied est composé d’un cylindre principal auquel est ajouté trois cylindres de plus petites tailles placés uniformément autour de celui-ci.
Le plateau est un cylindre auquel on a appliqué un homothétie de sorte à obtenir une table ovale. On a ensuite obtenu une texture marbre qui donne le résultat escompté.
2.3 Les Chaises :
Une chaise est composée de quatre pieds (des cylindres) dont deux sont prolongés de sorte à obtenir l’armature du dossier.
On plaque sur chacun des éléments la texture de bois utilisée précédemment de sorte à obtenir une chaise qui s’intègre harmonieusement avec le reste de la cuisine.
Finalement on place une plaque en guise de siège muni d’une texture différente.
2.4 La Cuisinière :
La cuisinière est composée de deux partie : un four et un support contenant les plaques électriques. Le four est muni d’une porte en verre qui peut s’ouvrir lorsqu’on le manipule avec la souris. De même, sur les plaques électriques, on place un couvercle qui peut lui aussi s’ouvrir avec une manipulation de la souris.
De plus, nous avons placé dans le four une lumière jaune pour donner une sensation d’illumination du four.
2.5 Le Réfrigérateur :
Le réfrigérateur est muni d’un congélateur placé au dessus du frigo. Chaque porte peut s’ouvrir avec manipulation de la souris. Dans la partie inférieure du frigo, on trouve deux bacs à légumes qui peuvent être également tirés comme les tiroirs des meubles de rangement.
Comme pour la cuisinière, nous avons placé dans le frigo des lumières blanches (spotlight) pour éclairer l’intérieur.
2.6 L’évier :
C’est un objet récupéré chez un de nos camarades. Il a utilisé un nœud "Extrude" pour obtenir les rayures du plan on l’on fait sécher la vaisselle ; et le robinet peut tourner autour de son axe (nœud "CylinderSensor"). Nous avons modifié sa couleur et sa texture ainsi que rajouté des planches et des portes de manière à obtenir un meuble qui s’adapte à nos besoins.
2.7. La porte et la fenêtre.
Le porte est montée à l’intérieur d’un cadre en bois. Nous avons inséré dans cette porte une vitre légèrement teintée.
La fenêtre est composée de deux battants chacun pouvant s’ouvrir d’un angle différent de sorte à éviter la collision avec d’autres meubles.
2.8. Différents accessoires.
Nous avons également fabriqué des petits objets pour meubler notre cuisine et lui rendre plus vivante. En particulier nous avons fabriqué un lustre, une pizza, des portraits et des verres.
Finalement, nous avons cherché sur le web différents objets réalisés par d’autres à l’aide de modeleurs. On y trouve toutes sortes de modèles. En général ils sont gratuits mais le choix est limité. Il existe également des sociétés spécialisées dans le 3D virtuel qui en vendent via l’Internet ; dans ce cas le choix est vaste mais payant !
3. L’Aménagement de la cuisine :
Dans un second temps, on crée la cuisine en elle-même : les murs, le sol et le plafond. Elle mesure 6 mètres sur 7.
Pour ne pas placer la cuisine dans le vide, on place une Box avec une texture d’herbe et au loin un paysage montagneux. On obtient ainsi un rendu plus réaliste de la scène.
Ensuite, on aménage les meubles à l’intérieur de la pièce. On les importe à l’intérieur du fichier qui décrit la cuisine via la fonction "Inline". Un point fondamental de cette construction est la réutilisabilité des meubles : on n’a construit qu’une seule chaise qu’on peut dupliquer pour obtenir un jeu de quatre réparties autours de la table. Il en va de même pour tous les meubles de rangements.
Dernière étape, on recherche les points de vues les plus intéressants de manière à les "conserver" (nœud "ViewPoint") pour qu’un utilisateur puisse les voir directement sans avoir à se promener dans toute la scène. En effet, cette scène étant constituée de beaucoup d’objets complexes qui nuisent aux performances, les déplacements sont saccadés ce qui peut rendre la promenade désagréable.
4. Les problèmes rencontrés :
Nous avons rencontré un certains nombre de difficultés propres au langage VRML.
Dans un premier temps, il a fallu s’accoutumer à la modélisation des différents objets dans leurs repères propres (qui sont différents de ceux de Pov-Ray et d’OpenGL). En particulier, lors de l’utilisation des nœuds CylinderSensor et PlaneSensor qui n’autorise des déplacements que dans un axe ou un plan particulier.
Ensuite, la possibilité d’utiliser des langages tels que Java ou JavaScript n’a pas été utilisé en particulier pour la détection de collision entre deux objets et pour une animation d’objets plus élaborée. C’est sans aucun doute dans cette direction que devrait se porter une partie de notre travail personnel pour une approche plus approfondie du langage.
5. Conclusion :
Pendant la réalisation de ce projet, nous avons pu nous familiariser avec un autre type de logiciel de développement d’images de synthèses, nous permettant ainsi de mettre en place un certain nombre de notions étudiées en cours et d’apprendre à utiliser un logiciel très à la mode en ce moment sur Internet.