2. Les technologies tactiles

Technologie résistive

Un écran résistif réagit à la pression du doigt qui détermine la position du pointeur grâce à une couche tactile souple qui couvre la surface de l’appareil. Le stylet permet une détection plus précise que le doigt et s'avère plus efficace. La majorité des smartphones et des PDA en sont équipés.

Technologie capacitive

Cette technologie se fonde sur l’accumulation de charges électriques sur la plaque de verre qui les recouvre. Lors du contact des doigts de l’utilisateur, une partie de cette charge passe dans les doigts. Il suffit ensuite de localiser le déficit provoqué par le contact des doigts pour traiter l'information. Les écrans capacitifs présentent l’avantage de mieux laisser filtrer la lumière que les écrans résistifs. L'Iphone et les nouveaux smartphones (Android par exemple) utilisent cette technologie.

Technologie à infrarouge

Ensemble d'émetteurs et récepteurs infrarouge placés dans le cadre, le matériau de contact peut être du tissu, du verre, certains plastiques. Le toucher créer une ombre et le controlleur en déduit la position. Cette technologie est utilisée par les tables tactiles et par les "kits" multitouch.

Technologie avec caméra seule

Cette technique n'est plus à proprement parler du tactile. Elle se base sur la reconnaissance de forme. Elle se compose d'une plaque de plexiglass, d'une source de lumière, d'un logiciel PureData et d'une webcam.

3. Les standards

Il existe aujourd'hui différents standards pour utiliser les surfaces multitouch :

• TUIO (Tangible User Interface, Objects)
• Windows 7
• les autres standards propriétaires.

4. MT4J (Multi-Touch for Java)

MT4J est un framework open source java multitouch qui permet le développement d'applications java 2D, 2.5D ou 3D avec accélération hardware.

Voici une liste non exhaustive des fonctionnalités supportées par ce framework :

• structure de graphs basée sur des composants extensibles
• couche d'entrée abstraite avec possibilité de rajouter de nouvelles source d'entrée
• plusieurs processeurs de gestes multitouch (drag/drop/scale/tap/zoom/etc..)
• support des fichiers svg et des fonts bitmap et vectorielles
• composants UI (boutons, clavier virtuel, slider, texte)
• composants géométriques (rectangle à bord carré/rond, polygone, meshes, cubes, sphères, etc...)
• import de meshes 3D au format .3ds/.obj avec textures et rendu rapide avec OpenGL
• sélection précise d'objets géométrique dans un espace 3D
• déplacement d'une caméra virtuelle et animations
• multi-platorme (mais Mac non testé par l'auteur)

Une nouvelle version de MT4J doit sortir courant janvier et supportera l'API multi-touch de windows 7.

4.1 Architecture de MT4J


(Cliquer sur le lien pour accéder au schéma d'archiecture sur le wiki de MT4J)

La plateforme MT4J est divisé en différentes couches qui communiquent via des évènements envoyés d'une couche à l'autre :

• La couche d'abstraction matérielle d'entrée (Input Hardware Abstraction Layer) permet de convertir des données d'entrée brutes différentes en des évènements d'entrée unifiés.
MT4J supporte en périphérique d'entrée la souris, la clavier mais aussi 2 protocoles d'entrée multi-touch incluant le protocole TUIO. Toutes les sources d'entrée peuvent être utilisé en même temps sans risque de comportement indéterminé.

• La couche de traitements d'entrée (Input Processing Layer) contient 2 processeurs d'entrées qui correspondent à 2 cycles différents de traitement d'entrée dans le flux d'évènement d'entrée. Le 1e cycle est le cycle de traitement d'entrée global où des processeurs d'entrée peuvent écouter des sources d'entrée variées. Ce cycle est utilisé si toutes les entrées doivent être traitées. A chaque nouvelle scène crée dans MT4J un processeur vérifie qu'il y a un composant à la position d'une entrée et défini le composant comme la destination de l'évènement d'entrée. Le 2ème cycle est situé au niveau composant. Il permet le traitement d'une entrée qui est destinée à un seul composant (par exemple un geste de rotation ou de changement d'échelle).

• La couche de présentation (Presentation Layer) repose sur le concept de scènes qui encapsulent et séparent clairement le traitement des entrées et la présentation relatifs, 2 scènes peuvent être très différentes en terme de logiques et de présentation. Dans MT4J, les interfaces graphiques sont basées sur un structure hiérarchique de composant qui permet la composition d'interfaces dans une structure en forme d'arbre (scene graph).
Les composants visibles sont des composants de forme de base mais aussi des composants plus complexes basés sur des formes primitives et fournissant des fonctionnalités comme le rendu d'image à partir de formats d'images communs, le rendu de graphique vectorielle ou le rendu de modèle 3D.
Le composant Canvas est le composant racine de chaque scène dans MT4J et agit comme un lien entre la couche de traitement d'entrée et la couche de présentation. Tous les évènements d'entrées passent par le composant canvas qui propage ensuite les évènements vers leur destination. Il permet de savoir quel est le composant situé à une position précise, il est aussi responsable de dessiner récursivement le canvas avec tous ses éléments fils.
Pour faire le rendu des composants MT4J on utilise le toolkit processing, il s'agit d'un toolkit Java open source visant à programmer des images, des animations et des interactions.

Pour plus de détails je vous invite à lire le wiki de MT4J.

4.2 Exemples

Vidéo générale


Dessins vectoriels


Hello World


Flickr™ Photo


Fluid Simulation (1/2)


Fluid Simulation (2/2)


Models 3D


4.3 Les projets utilisés par MT4J

MT4J utilise plusieurs projets open source. Il supporte le protocole TUIO à l'aide d'un logiciel de suivi de doigt et d'objet comme Reactivision, CCV (Community Core Vision) ou Touché. Reactivision est un logiciel open source multi-plateforme de reconnaissance de forme et de mouvements, il analyse les objets ayant une forme et un identifiant unique (fiducial) ainsi que le suivi des doigts. CCV et Touché ont un fonctionnement similaire. A la différence de Reactivision et CCV qui existent en version Linux/Windows/Mac, Touché a été écrit exclusivement pour MacOS X Leopard.

Exemple CCV


Exemple Reactivision


Exemple Touché



Processing est un projet Open source initié en 2001 qui est à la fois un langage de programmation et un environnement de développement intégré. Il a comme but de faire apprendre les bases de la programmation dans un contexte visuel et il permet de créer de manière simple des animations. Des librairies sont fournis et permettent de capturer un flux video, d'utiliser une accélération OpenGL, de manipuler le son, de générer des pdf, etc...

Exemple Processing (1/2)


Exemple Processing (2/2)


4.4 Les gestes proposés par défaut par MT4J

Geste "petite tappe" (Tap)
Ce gestion est équivalent à un clic de souris. Il est déclenché par sur un objet en le touchant/relachant.
Geste "glissement" (drag)
Ce geste déplace un objet en mettant le doigt sur un objet et en le déplacant tout en restant appuyé sur l'objet.
Geste "rotation"
Ce geste fait une rotation d'un objet en faisant une rotation avec les 2 doigts.
Geste "redimensionnement"
Ce geste se déclenche en déplacant les doigts dans des directions différentes et est cumulable avec le gest de rotation.
Geste "Zoom"
Ce geste permet de zoomer en déplacant la position de la caméra. Il est similaire au geste de redimensionnement. Ce geste doit être déclenché sur l'arrière-plan.
Geste "Déplacement Caméra"
Ce geste permet de déplacer la caméra sur les axes X et Y en touchant l'arrière-plan du programme avec les 2 doigts.
Geste "lasso"
Ce geste permet de grouper des objets en les entourant avec le doigt.
(les images ont été reprises du site de MT4J)

5. Autres projets multitouch basés sur Java

Voici un autre projet Multitouch IFGI Multi-Touch Wall, il s'agit d'un projet java multi-touch basé sur World Wind Java SDK et développé par le laboratoire Deutsche Telekom AG.



6. Autres projets multitouch sur MAC

Le projet Multi-Touch Framework est un framework multi-touch Cocoa natif pour Mac OS X, il a comme originalité de pouvoir utiliser l'iphone comme un périphérique d'entrée pour le développement d'application Multi-touch.



7. Autres technologies

Microsoft Surface

Surface se présente sous la forme d'une table dont la surface est dotée d'un affichage tactile multitouch de 30 pouces. L'affichage est effectué via un un videoprojecteur DLP (gérant une résolution de 1024x768) placé à l'intérieur de la table sous la vitre. La gestion tactile est faite par un ensemble de 4 caméras infrarouge associé à un éclairage infrarouge. Lorsqu'un objet s'approche de la surface d'affichage, celui-ci réfléchit la lumière infrarouge et devient visible par les caméras, ce qui permet à Surface d'obtenir une image en niveau de gris de la surface d'affichage, d'obtenir les dimensions des contacts et reconnaitre certaines formes.






Microsoft Natal Project

Ce projet est le nom de code d'une technique d'interaction basée sur un périphérique d'entrée. Il permet d'interagir par commande vocale, reconnaissance de mouvement et d'image. Ce périphérique est prévu sur la console Xbox 360 mais rien n'empèche qu'il soit utilisé pour des fonctionnalités similaire à la technologie multitouch.


8. Références

Site de MT4J

Site de CCV
Site de Reactivision
Site de Touché
Site GoogleCode sur Touché

Site de Processing
Wikipedia de Processing

Site de World Wind Java SDK
Site de IFGI Multi-Touch Wall

Site du projet Multi-Touch Framework (MAC OS)

Wikipedia Microsoft Surface
Site de Microsoft Surface