Projet Visualisation 3D/Internet :

Creation de scenes stereoscopiques

en utilisant VRML V2.0 et JAVA V1.0


Pour plus de relief, utilisez une paire de lunette anaglyphe() pour regardez les pages, les images et l'application de ce projet.


Preambule :

Avant de commencer la description du projet en lui-meme, voici quelques reponses a des questions concernant la vision stereoscopique en general.

Qu'est ce que la stereoscopie ?

La stereoscopie est le fait de pouvoir percevoir la profondeur dans la vision. L'homme a une vision stereoscopique, il peut donc voir en 3 dimensions et ainsi estimer les distances entre lui et les objets qui l'entourent.

Qu'est ce qu'une image stereoscopique ?

C'est une image (en 2D) qui integre la stereoscopie donc qui donne un impression de profondeur entre les differents objets de la scene. Il y a plusieurs moyens de simuler la stereoscopie dans les images: vision croisee, vision a l'infinie, vision alternee, vision anaglyphe.

Le procede que nous utilisons pour notre projet est la vision anaglyphe.

Qu'est ce que la vision anaglyphe ?

Le fait que l'homme puisse voir de facon stereoscopique est en grande partie du au fait qu'il possede deux yeux, separes en moyenne de 69 mm, qui possedent chacun une vue legerement differente du monde. Donc pour creer la profondeur, on simule la vue de chaque oeil. Pour differencier la vue de l'oeil droit et la vue de l'oeil gauche dans l'image finale, on utilise des canaux de couleurs. Donc l'oeil gauche verra tous les objets contenant du rouge et l'oeil droit tous les objets contenant du vert.

Vous pouvez trouver ici des exemples d'images anaglyphes

Si le sujet vous interesse ou si vous cherchez des informations, consultez cet excellent article qui traite de la theorie de la stereovision, du stress que cela apporte, ... .


Le Projet:

Le but de ce projet fut donc de creer un monde VRMLV2.0 qui affiche des objets de facon stereoscopique afin d'avoir une impression de profondeur.

Mais le VRML V2.0 n'est pas suffisant en lui meme pour obtenir l'effet de stereoscopie, car a chaque deplacement de l'utilisateur dans le monde VRML, il faut recalculer la vue de droite et la vue de gauche de la scene et les afficher en rouge pour la gauche et en vert pour la droite. En fait il faut recalculer les nouvelles position et orientation de chaque objet composant la scene. Pour faire cela, on utilise un script Java qui est associe au monde VRML.

Pour l'instant notre application ne comptient qu'un seul objet, car le typage et la position des objets de la scene se trouve en dur dans la classes Java. Mais on peut imager que l'on pourait parser un fichier VRML pour en extraire les objets ou lire les valeurs dans un fichier de ressources ....

Le script Java(Stereo.java) contient la generation des deux vues, en fait il cree deux objets un rouge et un vert pour chaque objet de la scene. Pour gerer l'affichage des objets on utilise les evenements 'addChildren' et 'removeChildren' de VRML qui nous permettent ajouter et d'effacer des objets dans la scene. Le deuxieme fichier Java (FocalFram.java) permet de modifier la distance de focalisation , c'est a dire la distance ou l'oeil se fixe (voir article). Pour modifier la distance de focalisation, il suffit de cliquer('TouchSensor') sur la boule jaune se trouvant en bas a droite du monde VRML, pour faire apparaitre la fenetre de reglage(de 0.1a 10 metres).

Exemple :

Photo d'ecran avec une distance de focalisation a 1 m

Photo d'ecran avec une distance de focalisation a 0.2 m


Les Sources:

Notre application comporte 2 classes publiques Java(Stereo.class, FocalFrame.class) et un fichier VRML(stereo.wrl).

Les sources de l'application : sources.tar

Les sources de l'application(sources.tar) + la page HTML: total.tar

Pour faire tourner notre application vous devez lancer un browser de VRML V2.0 qui accepte le Java et qui peut visualiser la scene en fil de fer (ex: Liquid reality) ou qui gere correctement les transparences.

Pour les gens de l'ESSI vous trouverez toutes les information sur Liquid reality et VRML V2.0 ici.


Les Auteurs:

CIERNIAK Simon

RENOUT Jean-Christophe


ESSI 3 -VIMM

28/03/97