Une dimension supplémentaire

Le stéréoscope

710px-Company_of_ladies_watching_stereoscopic_photographs_by
Company of ladies watching stereoscopic photographs by Jacob Spoel (1820-1868)
Source : Wikimedia Commons

« …Il est vrai que si la photographie n’avait pas existé, le merveilleux instrument inventé par M. Weatstone n’eut jamais eu le prodigieux succès que l’auteur ne soupçonnait guère et qui ne fait que s’accroître tous les jours. […]
Lorsque M. Weatstone inventa le stéréoscope, il ne cherchait qu’à produire un instrument de cabinet de physique et tout au plus un jouet instructif pour les enfants. On dessinait géométriquement des corps solides sous les différents angles voulus et on plaçait dans le stéréoscope ces images mathématiques. Quant on voulut produire l’illusion au moyen de reproductions plus artistiques, l’exactitude du dessin ne fut jamais assez grande pour atteindre l’effet cherché ; l’application du daguerréotype à la production des images stéréoscopiques devait seule amener la plus charmante et la plus complète illusion.
Que de difficultés de pratiques et de détail il y eut à vaincre pour arriver à ce résultat : […]
Quant au mauvais goût, à la médiocrité, à la vulgarité qu’on reproche à la plupart des reproductions stéréoscopiques, nous passons volontiers condamnation sur ces points ; […] a-t-on condamné le pinceau et le burin parce qu’ils se sont prêtés à des fantaisies plus que légères et à des productions coupables ? […]

Il y a dans une épreuve stéréoscopique, comme dans un tableau, tout l’art que le peintre et le photographe ont su y mettre, et les prestiges de l’illusion ne sont qu’un des moyens employés par l’artiste pour arriver à un effet plus saisissant et plus profond. Toutes les fois du reste qu’un procédé enrichit le domaine de l’art, de nombreux détracteurs arrivent pour le combattre ;[…] Peut-être trouverons-nous, avec le goût public, dans ce stéréoscope tant accusé, un des meilleurs instruments que l’art réel, l’art vrai, qui aime la création et cherche le sentiment du vrai et du beau dans les choses qu’il reproduit, ait jamais eu à sa disposition. […]
Cette exagération, que produit le stéréoscope, nous fait voir le relief là où nos yeux dans la perspective naturelle ne le distingueraient pas. C’est cette imperfection relative qui contribue le plus à l’effet si saisissant des images stéréoscopiques, qui les fait surtout accuser de sécheresse, de trompe-l’oeil, de faux réalisme, par ceux qui, réagissant contre la première impression produite, n’ont analysé les détails que pour arriver à la critique, sans chercher au delà, et ont attribué à l’art et à l’instrument ce qui n’était dû qu’à l’habileté de l’artiste. […]
Mais si, à une connaissance approfondie de l’instrument qu’il manie et des ressources de son art, le photographe joint le sentiment artiste, s’il sait voir et sentir la nature quand il se trouve en face d’elle, il mesurera, à l’aide des diaphragmes, les rayons lumineux de telle sorte qu’il composera lui-même dans la chambre noire l’image d’après ce qu’il voit et d’après ce qu’il sent, donnant la netteté et l’importance aux points qu’il faut, et étendant sur l’image la vapeur lumineuse comme le soleil la tamise sur les lointains qu’il dispute aux brumes.
Malheureusement, tout le monde ne sait pas voir ; […]

Et nous le disons hardiment, le stéréoscope, lui surtout, nous donne cette sensation, vraie, profonde, saisissante.
Illusion ! nous criera-t-on, soit ; c’est de l’illusion, le triomphe de l’illusion ; mais que l’on n’en médise pas, car l’illusion, c’est l’art, rien que l’art, tout l’art ; ses ailes puissantes font planer l’homme dans les hauteurs sublimes de l’idéal ;… »

Extraits de l’ouvrage : La Photographie considérée comme Art et comme industrie – Histoire de sa découverte, ses progrès, ses applications, son avenir par MM. Mayer & Pierson – Librairie L. Hachette et Cie – 1862

  • Les stéréoscopes à miroirs
    En 1838, Sir Charles Wheatstone présentait à l’Association britannique pour l’avancement des sciences, son mémoire sur la physiologie de la vision. Un instrument de sa conception, appuyait ses théories. Ce dispositif qui intégrait deux miroirs, en renvoyant latéralement la vision de chaque oeil vers des dessins dissemblables (des doublets stéréoscopiques) produisait une sensation de relief. Le premier stéréoscope, dit stéréoscope à réflexion, était né.wheatstone
  • Les stéréoscopes à prismes
    Quelques années plus tard (en 1849), un autre physicien anglais, Sir David Brewster à qui l’ont devait déjà l’invention du Kaleïdoscope, proposait une adaptation du stéréoscope de Wheatstone. Son innovation, qui consistait à remplacer les miroirs par des prismes, permettait de visionner des couples d’images disposés sur un même support. Ce nouveau type de stéréoscope, dit stéréoscope à réfraction, est à l’origine de multiples variantes qui commencèrent à se répandre en Angleterre et en France à partir de 1852.
    L’image qui suit, présente deux lentilles prismatiques en verre. Ce sont de telles lentilles qui équiperont les stéréoscopes dits de Brewster et de Holmes.
    LentillesPrismatiquesLes stéréoscopes de Brewster permettaient généralement de visionner à la fois des couples de positifs sur verre par transparence (grâce à un verre dépoli placé à l’arrière de l’appareil), ainsi que des cartes stéréoscopiques imprimées. L’illumination de ces dernières était assurée par un miroir orientable, placé sur le dessus de l’appareil.
    StereoscopeBrewster
    Le stéréoscope de Holmes, plus simple dans sa conception, était, quant à lui, tout spécifiquement adapté aux cartes stéréoscopiques.
    StereoscopeHolmes
  • Les stéréoscopes à oculaires
    Une troisième catégorie de stéréoscopes, plus adaptée aux formats réduits (transparents ou imprimés), va apparaitre. Le principe de ces stéréoscopes, qui intégraient des lentilles grossissantes, est encore aujourd’hui exploité (avec une qualité parfois inégale des optiques !).StereoscopesLentillesStereoscopeEducaLes photographies ci-dessus présentent différents modèles personnels de stéréoscopes à oculaires, adaptés à des couples stéréoscopiques (sur plaque de verre ou imprimés sur cartes), de différentes dimensions.

Seconde conversion 2D/3D

Cette deuxième conversion, qui porte sur une image pourtant très simple dans sa composition, nous a amené à mettre en oeuvre de nouvelles techniques, complémentaires à celles déjà employées dans le premier exemple.
La photographie a été prise à Venise. La posture de cette mendiante, à genoux sur les pavés, immobile en plein milieu d’un passage, était totalement anachronique dans cette cité.

2D3D2-1

 

La conversion de l’image a nécessité 2 traitements différenciés : l’un pour le sol pavé et l’autre pour le personnage. La femme a été détourée puis extraite de son environnement.
La carte de profondeur réalisée pour le pavage est des plus simples : L’image se résume à un dégradé linéaire.
2D3D2-24
Le traitement de cette partie d’image s’est effectué de la même manière que l’exemple précédent par la fonction : Filtres > Cartes > Déplacer selon une carte. Mais l’effet de profondeur recherché pour cette scène est important, et, dans les paramètres du filtrage, c’est une valeur de 100,00 qui a été utilisée pour deplt X. L’image suivante présente le résultat du filtrage.

2D3D2-6
A la suite du traitement, on remarquera quelques défauts apparents sur les côtés de l’image, la fonction s’étant, dans notre cas, mal acquitée d’une tentative de reconstruction de surface.
De manière naturelle, d’autres parties de l’image seront également à reprendre. En effet, certaines zones que la mendiante occultait dans l’image originale, vont devenir apparentes dans la deuxième vue que nous synthétisons. Il suffit, pour s’en convaincre de tenter de repositionner, à ce stade, notre personnage. Dans le couple croisé suivant, l’image de gauche est celle qui a été obtenue après filtrage tandis que l’originale est placée à droite. On pourra, en fusionnant les 2 images, positionner latéralement le personnage de manière que son implantation dans la profondeur de l’image soit cohérente.

2D3D2-78b

L’ajustement du personnage met en évidence des zones sans texture que nous allons être amenés à combler.
Pour reconstituer le pavage autour du personnage ainsi que sur les côtés de l’image, nous n’avons pas, dans ce cas, fait appel à un outil de reconstruction de surfaces, mais, très simplement, utilisé l’outil tampon de Gimp. Cette technique donne ici d’excellents résultats comme le montre l’image suivante. Les parties recouvertes sont, à ce stade de retouche de l’image, pratiquement suffisantes.

2D3D2-10

 

Le traitement du personnage a été opéré de manière habituelle. Un calque transparent, utilisé pour la peinture de sa carte de profondeur, est ajouté au premier calque. Les images suivantes présentent ces 2 calques.2D3D2-f2f3

Là encore, c’est la fonction de Gimp : Filtres > Cartes > Déplacer selon une carte, qui a permis de générer l’image du personnage qui, ensuite, a été superposée à celle du pavage. Une valeur plus réduite de déplacement en X a été employée pour obtenir une épaisseur crédible au personnage de la mendiante.

Les images suivantes présentent, de la même manière que la page précédente, le résultat obtenu sous 2 formes : un couple stéréoscopique croisé ainsi qu’un anaglyphe pour lequel certaines couleurs mal adaptées ont été modifiées.2D3D2-crossed

2D3D2-ana

OpenSpace3D

OpenSpace3D (http://www.openspace3d.com/) est une plateforme de développement d’applications 3D interactives qui dispense l’utilisateur de toute programmation. La création d’une scène s’effectue, en effet, par l’association d’éléments et d’interactions à travers une interface très intuitive.
C’est à la société I-maginer que nous devons ce remarquable projet Open source, développé avec la technologie SCOL . Les applications d’une telle plateforme sont multiples : Elle autorise la création d’environnements 3D multi utilisateurs, de jeux en ligne, de communautés virtuelles, etc…

OpenSpace3D ainsi que le Scol Voy@ger 6.0 pourront être téléchargés depuis l’adresse : http://www.openspace3d.com/download/ .

La copie d’écran ci-dessous, présente le chargement d’un modèle de démonstration proposé avec l’application : car_showroom.xos (son chemin est …/demos/car_showroom/car_showroom.xos).

OS3D1-1

Cette illustration révèle les deux applications que sont l’éditeur (OpenSpace3D Editor), qui va permettre la création de la scène et définir les interactions, ainsi que le player externe (OpenSpace3D Player).

La qualité du rendu (liée à l’utilisation du moteur 3D OGRE), les multiples possibilités d’interfaçage (clavier et souris, bien entendu, mais aussi : wiimote, Joypad, Kinect, reconnaissance vocale, et même : capteur d’activité cérébrale, etc…), les possibilités d’interaction (contrôle sur les objets, déclenchement d’évènements, échange d’informations, etc…), l’accès à des ressources diverses, éventuellement distantes (pages web, lecture de flux rss, acquisition vidéo, et même l’affichage de flux vidéo Youtube sur des objets 3D, etc…), font d’ OpenSpace3D une application particulièrement remarquable.

OpenSpace permet l’exécution locale des applications créées, mais autorise également leur export sous la forme d’exécutables sur différents supports physiques (CD, clé USB, etc …) ainsi que leur transfert sur un serveur Web/FTP.

Le rendu stéréoscopique des scènes produites n’a pas été négligé par les développeurs d’OpenSpace3D. Ainsi différents modes sont proposés par l’application dont l’anaglyphe rouge/cyan :

OS3D1-2

La documentation en français, très complète, qui est consultable sur le site d’OpenSpace3d ( http://www.openspace3d.com/documentation/fr/ ), ainsi que les exemples et démos particulièrement démonstratifs, qui accompagnent l’application, facilitent la prise en main de la plateforme.

Les copies d’écran qui suivent, présentent un autre modèle de démonstration, le robot Andy dans sa cave. Différents tutoriels, sous la forme de fichiers xos sont proposés sur la base de cette scène. Ils permettent de découvrir la mise en oeuvre de certaines fonctions particulières : la navigation en mode FPS, l’ordonnancement d’événements, le déclenchement d’actions par la souris, les liens Youtube, les animations et transitions entre animations, etc….

OS3D1-3

Andy dans son environnement.

OS3D1-4

La version wireframe de la scène.

Cette dernière capture permet de visualiser les différents groupes de ressources mis en oeuvre dans la scène, ainsi que leurs liens. La fenêtre en pop-up présente l’édition d’un PluglT (ici, l’instance « Andy Wake Up »), l’une de ces fonctions caractéristiques d’OpenSpace3D.

OS3D1-5

MakeHuman

MakeHuman ( http://www.makehuman.org ) est un projet Open Source tout à fait remarquable, permettant une création assistée de modèles humains de grande qualité.

MakeHuman01

Le coeur du projet MakeHuman est le développement d’un maillage de modèle humain (the « HoMunculus » !), dont les caractéristiques anatomiques (sexe, age, particularités physiques, attitudes, expressions, etc… ) sont définies par de simples ajustements paramétriques.

MakeHuman02

Le modèle proposé par MakeHuman est optimisé pour l’animation. L’image suivante présente la superposition d’un modèle texturé avec son squelette.

MakeHuman03

MakeHuman propose pour « habiller » les modèles, un certain nombre de textures au format tif, dont l’image « texture.tif » présentée ci-dessous.

MakeHuman04

MakeHuman autorise de très nombreux ajustements sur les modèles, leur anatomie, leur « peau », la forme des éléments qui les composent, ainsi que sur leurs expressions. L’application propose également des outils facilitant la création de chevelures, de vêtements, etc…

MakeHuman05b

MakeHuman offre la possibilité d’exporter ses modèles sous différents formats : obj, dae, md5, stl et mhx, un format d’échange avec Blender (http://www.blender.org/). La copie d’écran qui suit présente, justement, l’import d’un modèle MakeHuman dans Blender avec un rendu en incrustation.

MakeHuman06

Certains outils, développés par la communauté OGRE ( http://www.ogre3d.org), permettent également d’exploiter avec ce moteur 3D, les modèles créés avec MakeHuman. L’image ci-dessous présente notre modèle, chargé dans l’application OgreMeshy (http://sourceforge.net/projects/ogremeshy/).

MakeHuman07

OGRE: un moteur 3D Stéréo

OGRE (Object-Oriented Graphics Rendering Engine) est un moteur 3D muti-plateforme, compatible avec les API 3D OpenGL et DirectX. Steve Stretching, qui en est l’initiateur, a cherché, en effet, avec ce projet, à développer un moteur extrêmement flexible. OGRE, qui est sous licence MIT depuis sa version 1.7, est exploité aujourd’hui dans de nombreux projets.

On pourra juger de la qualité et de la diversité des rendus autorisés par ce moteur en téléchargeant le programme de démonstration OGRE Demos 1.7.0 depuis le site de OGRE : http://www.ogre3d.org .

Les deux copies d’écran qui suivent présentent deux des différents exemples proposés par ce programme : le premier est une démonstration des capacités d’OGRE à charger une carte BSP (Binary Space Partition), telle que celles qu’exploitait le moteur de Quake3.

Ogre3d1-0

Mais OGRE, contrairement à Quake 3, n’est pas limité à ce format d’environnement. Il est à même, en effet, de proposer également des déplacements dans des espaces extérieurs de grande étendue.

Concernant les personnages, OGRE propose des animations par squelettes d’une remarquable fluidité. La copie d’écran présente un deuxième exemple proposé par le programme « Sample Browser » de OGRE Demos1.7.0 qui a pour nom : « Skeletal Animation ». Il est particulièrement démonstratif !

Ogre3d1-0b

Pour découvrir de manière plus précise la structure des personnages et leur mode d’animation, on pourra utiliser un viewer spécialisé tel que Ogre Meshy de Matias Goldberg. Ce dernier programme est téléchargeable à l’adresse : http://sourceforge.net/projects/ogremeshy/ .
Les copies d’écran qui suivent, présentent le personnage Jaiqua qui apparaissait dans la démonstration précédente. Nous avons chargé dans Ogre Meshy le fichier binaire « jaiqua.mesh« , présent dans le sous répertoire « ...\Media\models » ainsi que le fichier de configuration « resources.cfg« .

Ogre3d1-1

Ogre Meshy va nous permettre de visionner Jaiqua sous un rendu texturé, mais également de découvrir son maillage ainsi que son squelette. Les différentes séquences d’animations du modèle (Run, Sneak, Stagger, Turn and Walk) pourront, de même, être observées individuellement.

Ogre3d1-2
La capacité de gérer différentes API 3D dont Direct X, en particulier, va permettre au moteur OGRE d’exploiter la technologie 3D vision (version grand public) de NVIDIA. La copie d’écran qui suit présente l’un des programmes de démonstration après activation de la 3D stéréoscopique dans le panneau de configuration NVIDIA.

Ogre3d1-3

 

Le site web officiel d’OGRE est particulièrement riche d’informations, de tutoriels, manuels, wiki, outils, etc… favorisant l’utilisation de ce moteur sous divers langages dont le C++. Sa flexibilité autorise l’intégration de multiples modules (interfaçage, moteurs physiques, effets divers,…) et la communauté OGRE, très active, propose aux amateurs, de nombreux scripts et ressources très instructives.

Le SDK de OGRE est téléchargeable à l’adresse : http://www.ogre3d.com/download/sdk , sous la forme d’un fichier unique (OgreSDK_vc10_v1-7-4.exe, dans notre cas). Cet exécutable va installer les diverses librairies et ressources dans un répertoire portant le nom de la version utilisée.

L’outil de développement qui est aujourd’hui traditionnellement associé à ce SDK pour les amateurs est Microsoft Visual C++ 2010 Express. Microsoft en propose le téléchargement à l’adresse : http://msdn.microsoft.com/fr-fr/gg699327 . L’inscription en ligne (gratuite) de ce produit auprès de Microsoft, permettra de lever la restriction d’utilisation au delà de la période de découverte.

Les premiers pas avec un outil de ce type, peuvent s’avérer assez difficiles pour des personnes non expérimentées dans le développement. Mais la page tikiwiki : Setting Up An Application Visual Studio permettra à l’amateur de franchir une première étape qui est celle de la configuration de Visual C++ 2010 Express à la programmation OGRE.
Le site du moteur 3D propose ensuite des tutoriels de différents niveaux (voir page Tutorials ) permettant d’accompagner les amateurs dans le développement d’applications. Nous présentons ci-dessous une adaptation du code fourni à la Page « Basic Tutorial 1« . C’est le modèle « Jaiqua » qui apparaitra en remplacement de la tête de l’ogre.

OGRE3D2-01

La compilation des sources va d’abord produire l’affichage d’un écran bien connu des utilisateurs du moteur OGRE, permettant à ceux-ci de sélectionner la technologie 3D ( Direct3D ou OpenGL) avant le lancement de l’application.

OGRE3D2-02

L’image ci-dessous présente une capture d’écran de notre premier programme,…

OGRE3D2-03

… Tandis que la suivante, restitue l’affichage stéréoscopique de la scène sur notre écran 3D.

OGRE3D2-04

Scan 3D

Apparue d’abord comme accessoire de la console de jeux Xbox 360, la Kinect a été commercialisée en 2012 par Microsoft sous une nouvelle version destinée aux développeurs: La Kinect for Windows. C’est ce dernier modèle que nous utilisons ici.

TrackStereo4-0

C’est la version 1.0 du SDK que nous avons utilisé en le téléchargeant à l’adresse: http://www.kinectforwindows.org . L’installation de Kinect-SDK-v.1.0-Setup.exe va vérifier la présence de Microsoft .Net Framework 4 client Profile (dotNetFx40_Full_x86_x64.exe) et le téléchargera si nécessaire. Direct X (DXSDK_Jun10.exe) sera également nécessaire.
On pourra ensuite raccorder la Kinect au PC. Le branchement de ce périphérique permettra alors au système d’installer correctement son pilote.

Les applications autorisées par la Kinect sont innombrables. Les programmes de démonstration du Kinect SDK Sample Browser, en laissent imaginer quelques unes. Mais, nous en présentons une qui nous semble particulièrement démonstrative des capacités offertes par ce périphérique : il s’agit de la scannérisation 3D. Une mise en oeuvre est présentée à l’aide du logiciel ReconstructMe, qui est téléchargeable depuis le site web http://www.reconstructme.net . Attention, cette application n’est pas libre (elle est sous Copyright 2012, PROFACTOR GmbH), mais son utilisation est autorisé pour des usages non commerciaux.

Au lancement de l’application (via le fichier « Start ReconstructMe Realtime MSKinect.bat« , dans notre cas), une fenêtre s’ouvre, présentant, côte à côte, la capture vidéo opérée par la Kinect et le scan 3D généré par le programme à l’aide des informations de profondeur fournies également par cette dernière.

TrackStereoKinectScan1

En quittant ReconstructMe, il est proposé la sauvegarde du scan sous la forme d’un fichier au format STL, que l’on pourra reprendre ensuite avec Meshlab, un programme maintenant bien connu de nos lecteurs.

TrackStereoKinectScan2

TrackStereoKinectScan3