O suporte aos interfaces multi-touch depende de dois aspectos: hardware e software.

Pelo lado do hardware, os dispositivos devem poder identificar mais do que um toque e mantê-los perfeitamente identificados, cada um deles, como independentes e distintos, enquanto perdurem. Nos ecrãs sensiveis ao toque tradicionais apenas um toque é identificado, e se há mais do que um toque isso produz pouco mais que uma alternância entre a identificação de um e outro toque ou eventualmente apenas é identificado o toque pela média dos dois (depende das tecnologias). Nas tecnologias multitouch cada toque, cada ponto de contacto, é identificado por si próprio, e é seguido independentemente de qualquer outro toque que vá ocorrendo entretanto.

Já quanto ao software, vários aspectos há a considerar, desde o  driver de suporte ao hardware que necessita de poder conhecer a existência dos vários toques, o interpretador de acções (o que significam dois toques rápidos? o que significa um toque que se mantém e é arrastado pelo ecrã? etc.), até aspectos do próprio interface gráfico (que feedback gráfico ao toque, que acções são suportadas pelo interface, suporte a novas acçõespossiveis com multitouch, como rodar, zoom, pan, suporte a multi-utilizador, interacção entre vários utilizadores simultâneos, etc).

Sendo a àrea do software, aquela em que maiores indefenições existem, e possivelmente aquela que exigirá mais estudo e desenvolvimentos nos próximos tempos, vamos hoje olhar para ela com mais atenção.

Windows 7

Num recente artigo de Wilson Rothman, intitulado What Using Windows 7 Multitouch is Like, o Gizmodo examina o suporte multi-touch incluido na release beta do Windows 7. Sendo o primeior sistema operativo a incluir nativamente suporte a multi-touch, a extensão deste suporte parece ser, no entanto, ainda pouco profunda e desenvolvida. Mas funciona!

As poucas acções multi-touch incluidas ficam longe do suporte que software externo, originário de vários outros projectos (ver abaixo referências deste artigo), pode fornecer. No entanto o conjunto de funções suportadas parece coerente e apontar um caminho bem definido, reunindo algumas caracteristicas já bem testadas nos projectos existentes, e algumas opções trabalhadas para melhorar a sua performance.

Vodpod videos no longer available.

A generalização de sistemas multi-touch deverá de facto começar pela uniformização de gestos de interface, de modo a que o seu uso se torne o mais natural e intuitivo possivel, de sistema para sistema. Uniformizar os vários “gestos” já experimentados noutros projectos, aproveitando os melhores, criando um conjunto coerent, pode ser um passo dificil, mas necessário. Pelo que se pode observar no Windows 7 este passo está a ser dado.

Toque (Tap): Quando se toca o ecrã não aparece um cursor, mas o ecrã ondula (como o efeito de ondas na superficie de água, e uma pequena marca em cruz fica nesse ponto. O sistema emite um beep, para cada toque, e um segundo toque simultâneo emite um beep com um pitch ligeramente mais alto.

Tocar e segurar (Tap and Hold): Simula o clique do botão direito do rato, e permite o acesso a um meno de contexto. Um circulo aparece em volta do dedo, indicando assim a disponivilidade desse menu.

Arrastar (Flick): Tocando e deslizando o dedo, desloca as páginas ou ecrãs num movimento de pan, que pode ser vertical ou horizontal. Funciona na perfeição e há uma indicação visual quando se chega ao limite da página ou ecrã, seja na horizontal ou vertical.

Type: Um teclado virtual aparece quando se toca o canto do ecrã; Com um segundo toque o teclado salta para o meio do ecrã numa dimensão aceitável para escrever directamente com os dedos.

Zoom: O suporte de zoom funciona de forma muito semelhante ao dos produtos Apple ou mesmo da biblioteca touchlib, ou do Microsoft Surface: Colocando dois dedos no ecrã, afastá-los ou aproximálos provoca uma alteração do zoom da imagem sobre a qual são colocados.

Rodar (Rotate): Usa-se do mesmo modo que o zoom (a função em principio usa o mesmo gesto de interface), mas o efeito de rotação ocorre ao rodar a posição relativa dos dois dedos, em vez de os afastar ou aproximar. É um movimento classico e uniforme de todos os interfaces multitouch existentes.

Desenhar (Draw): Com dois dedos colocados sobre o ecrã, desenha-se: duas linhas. Nunca ninguém entendeu para que serve… mas é um fenómeno mais ou menos espalhado nos interfaces multi-touch (uma imitação das aplicações do Jeff Han?). Mais que dois dedos parece ser tabu no interface da Microsoft (porquê?). Desenhar com um dedo só, que poderia efectivamente ser o mais útil, não foi implementado… apesar de que se consegue fazê-lo, desde que com a aplicação apropriada… enfim, alguém ainda estará a ver se sabe o que vai fazer com isto…

Vodpod videos no longer available.

Para testar o sistemas multi-touch do Windows 7, foi empregue uma aplicação disponível na internet. Desenvolvida pela IdentityMine , uma empresa de design de interfaces multi-touch, uma aplicação para duas pessoas do jogo de hokey de mesa, chamada multitouch Air Hockey, desenvolvida para demonstração na conferência PDC 2008, foi a escolha. Essa aplicação, disponivel para download, foi usada para o vídeo seguinte:

Vodpod videos no longer available.

Outros Suportes Multi-touch

Ainda que este suporte multi-touch seja o primeiro a ser implementado num sistema operativo multi-purpose, lembremo-nos que muitos outros sistemas operativos incluem já suporte multi-touch (Apple, Nokia, etc.).

O suporte multi-touch tem, por outro lado sido implementado por software independente, nomeadamente

Touchlib (Open Source Multi-Touch Development Library)
É uma library para desenvolvimento, que suporta todos os eventos multitouch sobre dispositivos FTIR (Frustrated Total Internal Reflexion) detectando “blobs” (pontos de contacto em IR) e eventos associados, e enviando-os através de API ou por chamada de função para as aplicaçoes em que se interga. A touchlib é capaz de suportar o protocolo TUIO, o que o torna compativel com aplicações que o usam, nomeadamente  Flash, VVVV, Processing, PureData

OpenCV –  The Open Computer Vision Library,  na sua ultima versão contêm suporte para a detecção de “blobs” em IR, mas é de muito mais baixo nível e todo o interface terá que ser desenvolvido com base nas funções básicas fornecidas.    Esta é uma library com mais de 500 algoritomos para desenvolvimento de aplicações de de Visão por Computador em Tempo Real. O seu suporte encontra-se online, num Wiki (New OpenCV wiki site) e num livro publicado pela O’Reilly (“Learning OpenCV Computer Vision Library”)

A TouchLib é suportada pelo NUI Group, um grupo com um trabalho extremamente interessante em projectos Multi-Touch. Alguns dos projectos desenvolvidos com TouchLib:

NUI Suite 1.0 Snowflake– Ainda ligado ao NUI Group, uma empresa disponibiliza software multi-touch para desenvolvimento por terceiros. É a Natural User Interface e disponibiliza uma suite de software designada por NUI Suite 1.0 Snowflake capaz de servir de base para o desenvolvimento de aplicações Multi-Touch. Esta empresa disponibiliza também equipamento multi-touch, em forma de equipamento chave na mão ou kits de desenvolvimento e construção de sistemas.

CUBIT – O projecto CUBIT (também na Wikipedia -> CUBIT) desenvolvido para a agência NOR_/D por Stefan Hechenberger e Addie Wagenknecht inclui equipamento e software. O software é o TouchKit, projecto que agora dispõe do seu proprio site em http://touchkit.nortd.com/. O TouchKit é um produto comercial, de baixo custo, constituido por software, disponivel com source code, e hardware (um kit que permite uma construção rápida de um ecrã FTIR para projecção),e foi construido como uma ferramenta modular para desenvolvimento de aplicações multitouch, com a intenção declarada de facilitar o desenvolvimento rápido do mercado multi-touch. Como ferramenta criativa, para desenvolvimento de aplicações, usa o OpenFramework, um ambiente de desenvolvimento rápido de conteudos criativos.

Referências

Gizmodo
What Using Windows 7 Multitouch is Like

NUI Group
Natural User Interface

Touchlib
OpenCV
NUI Suite 1.0 Snowflake

CUBIT em NOR_/D
TouchKit
Openframeworks

Multi-touch na Wikipedia