Framework MT4J et les technologies tactiles
Par Romain MALLARD, jeudi 18 février 2010 à 21:16 :: Java :: #154 :: rss
La technologie Multi-touch n'est pas une technologie nouvelle mais le succès de l'iphone fait que cette technologie rentre dans sa phase d'utilisation à grande échelle. Les équipements multi-touch se multiplient, que ce soit avec les OS mobiles comme Android / Iphone, les ordinateurs tout-en-un sous windows 7 ou les écrans d'ordinateurs supportant le multi-touch et dernièrement avec l'annonce de la sortie de l'ipad de Apple.
La technologie multi-touch peut aussi être appliquée en utilisant le touchpad multi-point des pc portables ou en utilisant une palette graphique wacom multi-point.
Le domaine d'utilisation est assez varié, il va de la conception 3D, au dessin, à la consultation de plans et d'images et pour finir au jeu.
2. Les technologies tactiles
Technologie résistiveUn é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
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. |
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 SurfaceSurface 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 MT4JSite 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

Commentaires
1. Le samedi 6 mars 2010 à 13:32, par Y-not
2. Le dimanche 7 mars 2010 à 22:20, par Romain MALLARD
3. Le samedi 13 mars 2010 à 17:23, par Chris
4. Le samedi 20 mars 2010 à 15:35, par Y-not
5. Le mercredi 7 juillet 2010 à 02:50, par sexy lingerie
6. Le mercredi 7 juillet 2010 à 02:50, par Sexy Lingerie
Ajouter un commentaire