Une dimension supplémentaire

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

Une expérience de Réalité Augmentée

TrackStereo3-Gratf1

Pour réaliser cette expérience, nous avons associé Le Playstation Eye de Sony à la librairie GRATF de Andrew Kirillov

 

Le Playstation Eye est une caméra qui a été commercialisée par Sony en octobre 2007, quelques mois après la sortie de la console Playstation 3 qui lui est associée. Conçue dès l’origine comme un accessoire interactif de communication, ses remarquables caractéristiques l’adaptaient à des applications de vision par ordinateur et de reconnaissance de mouvements.

 

 

TrackStereo3-1
La caméra PS3 eye en capture.

L’utilisation de ce périphérique sur un PC nécessite l’installation préalable d’un driver adapté au système d’exploitation de la machine (Windows 7, ici). On pourra télécharger celui qui est proposé par le site Code Laboratories (http://codelaboratories.com/downloads/ ). Dans notre cas, c’est le fichier CL-Eye-Driver-5.0.1.028.exe que nous avons utilisé. Nous pourrons ensuite raccorder le PS3 eye au PC et tester son bon fonctionnement à l’aide du petit programme CL-Eye Test qui est installé avec le driver.

TrackStereo3-2
Copie d’écran présentant CL-Eye Test en action à travers une mise en abime (la camera filme l’image qu’elle restitue,…).

GRATF (Glyph Recognition And Tracking Framework) est un projet de librairie (sous licence GPL), adaptée à la reconnaissance et au suivi de graphes, présents dans des images ou des flux vidéos. Andrew Kirillov, qui est l’auteur de ce projet sous licence GPL, propose différents usages de cette librairie, dont, bien entendu, son intégration possible dans des applications de Réalité Augmentée. On trouvera ainsi sur le site web de GRATF ( http://www.aforgenet.com/projects/gratf/), un certain nombre de ressources destinées aux développeurs ainsi que des exécutables dont « Glyph Recognition Studio.exe » (présent dans gratf-2.0.1-bin.zip), que nous présentons ici.

Après sélection de notre caméra (PS3Eye Camera) depuis le menu « File > Local Video Capture Device« , l’application nous permettra de dessiner notre graphe, l’associer à différents éléments proposés (une image fixe ainsi qu’un modèle 3D au format XNA) et enfin l’imprimer pour le présenter ensuite à la caméra.

On pourra constater l’efficacité du tracking et le positionnement précis des surimpressions (particulierement spectaculaires avec les modèles 3D), en tournant et déplaçant la carte (tout en la maintenant, bien sûr, l’intégralité du graphe dans le champ de vision de la caméra).

Les copies d’écran qui suivent, présentent les différentes visualisations proposées par l’application : 3D Model, Images, Borders et Names.

TrackStereo3-Gratf5

TrackStereo3-Gratf7

TrackStereo3-Gratf6

Stéréoscopie vs Multiscopie

ana-P1010626rs

L’anaglyphe ci-dessus est destiné à démontrer les limites de la perception d’une scène à travers une simple image stéréoscopique. La tête apparait ici en jaillissement (le mur vertical, dans laquelle cette sculpture est encastrée, est positionné en très léger retrait du plan image). Une visualisation correcte d’une telle image impose, et c’est là une véritable contrainte, une position relativement précise de l’observateur : ce dernier devant être placé face à son écran et à une distance adaptée à sa dimension (dans notre cas : une soixantaine de centimètres pour un écran 23″).
Les problèmes vont apparaitre lorsque l’observateur, désireux de découvrir cette étrange sculpture sous un angle différent, sera tenté de se déplacer latéralement devant son écran : Ce déplacement n’aura malheureusement pour effet que de distordre les volumes !

CaptureDroite-Gauche

Couple stéréoscopique croisé présentant les 2 captures qui ont été utilisées pour produire l’anaglyphe présenté plus haut.

Mais ce qui est vrai pour l’anaglyphe, l’est tout autant pour les autres formats d’images visibles aujourd’hui sur la plupart des écrans 3D (qu’ils soient à alternat temporel ou polarisés). D’autres solutions proposent cependant, dans certaines conditions, le multi-point de vue : on peut citer les dispositifs de tracking associés à des écrans 3D, les systèmes lenticulaires ou à barrière de parallaxe, l’holographie, les afficheurs volumétriques, ou d’autres dispositifs plus confidentiels.

Le nombre de points de vue proposés par ces derniers systèmes peut varier considérablement selon les technologies et les applications. Leur production ne pose guère de difficultés avec des images modélisées (la multiplication des cameras virtuelles n’a d’incidence que sur le temps de calcul), mais pour des captures de scènes réelles, les choses deviennent beaucoup plus compliquées !…
Elles peuvent être envisagées:
– par l’utilisation d’un appareil de capture unique se déplaçant sur un rail (une solution qui n’est guère possible qu’en studio et pour des scènes parfaitement immobiles),
– par l’utilisation d’un rig d’autant d’appareils de prise de vue que d’images à produire (une solution plus que complexe et coûteuse à mettre en oeuvre),
– soit par la production de nouvelles images à partir d’un nombre limité de captures réelles.

C’est cette dernière solution que nous allons mettre en oeuvre en faisant appel à un logiciel spécialisé : il s’agit de StereoTracer de la société Triaxes Ltd.
Nous allons, à l’aide de cette application, travailler en 2 étapes :
– La première, va consister à générer une carte de profondeur (une « depth map ») à partir de notre couple d’images,
– La deuxième étape va solliciter le logiciel pour, cette fois, générer de nouvelles images, à partir de la depth map et de l’une des deux photographies initiales.

Ces 2 étapes du traitement sont illustrées ci-dessous :

StereoVsMulti2-1
La production de la Depth-map …

StereoVsMulti2-2
… et ensuite de la série d’images.

Ce sont ici 12 images que nous avons fait générer par StereoTracer. Nous les présentons ci-dessous sous la forme d’une gif animée produite à l’aide de Gimp.

AnimationStereoVsMulti

Cette animation peut évoquer certaines représentations d’images en relief qui font alterner les 2 images d’un couple stéréoscopique (effet dit « wiggle »). Elle intègre cependant un nombre bien supérieur d’images. Ce sont en effet ici pas moins de 22 images qui se succèdent pour chaque cycle d’affichage : le déroulement se faisant d’abord dans un sens, puis dans l’autre afin de revenir à la première image de la série : img1, img2, img3, img4, img5, img6, img7, img8, img9, img10, img11, img12, img11, img10, img9, img8, img7, img6, img5, img4, img3, img2.

Mais n’est présentée ici qu’une succession d’images 2D que nous envisageons, maintenant, de remplacer par des anaglyphes.
Le format gif, qui a l’avantage de produire des fichiers relativement légers, a cet inconvénient en contrepartie, de n’exploiter qu’une palette de couleurs très réduite. Utiliser ce format pour créer des animations d’anaglyphes est peu concevable. Le PNG, qui serait bien mieux adapté, ne pouvait être exploité qu’en image fixe jusqu’à l’apparition très récente d’une extension (non officielle) à ce format qui est l’APNG. Le poids des animations s’accroit quelque peu ( !) avec l’APNG, mais ses avantages sont considérables : gestion des images 24-bits et transparences 8-bits. Aujourd’hui, seuls 2 navigateurs sont capables d’exploiter totalement l’APNG : Mozilla firefox depuis sa version 3 et Opera depuis sa version 9.5.
Un certains nombres d’outils sont disponibles pour créer des animations au format APNG. Nous avons utilisé ici le plug-in APNG Editor de Firefox.

Pour produire les anaglyphes, nous avons associé par couples les images de notre série.

CreaAnimAPNG

L’anaglyphe A1 est créé à partir du couples d’images 1 et 7, l’anaglyphe A2 avec les images 2 et 8, etc…

Notre séquence d’anaglyphes sera donc composée de : A1, A2, A3, A4, A5, A6, A5, A4, A3 et A2, soit de 10 images.

La copie d’écran suivante présente APNG Editor en cours de création de l’animation.

CreaAnimAPNG2

Le poids des fichiers APNG devient vite considérable. L’image qui suit, volontairement limitée à une dimension de 329×263 pixels pèse tout de même 2,58 Mo (en 658×526, son poids monterait à 10.3 Mo,…).

animation-APNG

Rappelons qu’il est nécessaire de disposer d’un navigateur compatible avec le format APNG pour que l’animation puisse être visionnée. Dans le cas contraire, l’image n’apparaitrait que sous la forme d’un traditionnel anaglyphe au format PNG, c’est à dire, désespérement statique.