Une dimension supplémentaire

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

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