Interface de Teclado Virtual para Pessoas Especiais
Introdução à Computação Gráfica – Maio de 2008 Relatório Parcial do Projeto
Equipe Cristina Fang
Daniel Moisés Gonzalez Clua Paulo Cheque Bernardo
Vivian Dorat Betoni
1- Introdução e Objetivos
Atualmente existem diversos estudos ao redor do mundo [1][2][3] que buscam formas alternativas de interação homem-computador. No Brasil, existe uma pesquisa recente através de um projeto desenvolvido no Instituto de Matemática e Estatística da Universidade de São Paulo [4], que é um sistema de rastreamento de olhar que obtém de uma câmera filmadora, imagens que são processadas para identificar para onde o usuário está olhando.
O objetivo do projeto é implementar uma interface de teclado virtual portável, robusta e poderosa que possa ser integrada a trabalhos já existentes, mas ao mesmo tempo de fácil utilização. A possibilidade de usar tal interface pode ser vista como um grande avanço positivo para pessoas com deficiências motoras, como por exemplo, tetraplégicos, portadores da doença de Parkinson, entre outros, a quem o uso de dispositivos como o mouse e o teclado se tornam inviáveis. Ainda, a interface poderá ser utilizada em sistemas computacionais que exigem que as mãos do usuário estejam disponíveis para outros fins, como por exemplo alguns jogos e sistemas para medicina. Outra meta do projeto é implementar a interface abstraindo a entrada de dados do usuário, para que ela se torne flexível e adaptável para diferentes dispositivos, tais como rastreador de olhar ou de movimentos manuais.
Neste relatório, será descrito o estado atual de desenvolvimento do projeto, bem como as expectativas para os próximos passos.
2- Especificação do papel de cada integrante
A seguir, resumo da descrição de atividades de cada integrante até o momento:
• Cristina
◦ Testes para a integração com o rastreador de olhar.
◦ Pesquisa de Interfaces e suas usabilidades;
• Daniel
◦ Pesquisa e definição de ferramentas;
◦ Testes inicias das bibliotecas do JMonkey;
◦ Desenvolvimento da interface do tipo “disco”.
• Paulo
◦ Pesquisa de ferramentas
◦ Implementação de protótipos
◦ Pesquisa para abstrair a entrada de comandos
• Vivian
◦ Definição de possíveis implementações de interface;
◦ Criação e implementação de texturas;
◦ Documentação.
3- Programas e bibliotecas implementadas
Para o desenvolvimento, definiu-se Java como linguagem de programação, com a utilização do ambiente de desenvolvimento Eclipse [5]. Além disso, optou-se pelo uso da ferramenta JMonkey Engine [6] – uma coleção de bibliotecas gráficas implementadas em OpenGL - para trabalhar com a geração de cenas e objetos tridimensionais.
4- Resultados experimentais
A primeira interface implementada foi a do tipo “disco”, que consiste em um alinhamento de teclas, formando uma circunferência. A posição do cursor (esquerda ou direita da tela) movimenta as teclas, a fim de que o usuário possa selecionar a letra ou símbolo desejado.
Para criar a disposição dos objetos que representam as teclas, foi necessário criar nós para cada um deles. Através destes nós é possível trabalhar facilmente com as transformações de translação e rotação das teclas. Os valores das matrizes de rotação dos nós são controlados pela posição do cursor na tela, mas também existe uma pequena diferença nos valores de cada nó para que exista um espaçamento entre as teclas. Na versão atual, é possível exibir trinta e seis teclas, sendo que cada uma está posicionada com dez graus de diferença entre a anterior.
Os objetos em si foram criados a partir de malhas. Embora o JMonkey tenha classes para facilitar a criação de objetos simples – tais como cubos e esferas – o uso de malhas foi mais conveniente pois, além de permitir geometrias mais personalizadas, possiblita também a aplicação de texturas apenas nas faces desejadas.
As texturas, por sua vez, são imagens do tipo PNG, individuais para cada letra e símbolo. Estas são mapeadas na face frontal do objeto. Também utiliza-se uma imagem de textura para o cursor.
Foi criada também uma fonte de luz branca, posicionada à frente do disco, de modo a iluminar aquelas teclas que estão mais próximas ao usuário. Para obter um bom efeito de iluminação, foi preciso definir as normais de cada vértice das teclas.
A Figura 1 mostra o resultado atual do teclado em forma de disco.
Figura 1 – Interface do teclado do tipo “disco” (acima, em vermelho, o cursor)
5- Integração do projeto com a disciplina
O projeto tem utilizado muitas das propriedades de computação gráfica vistas ou citadas em aula. A primeira que foi necessária aplicar foi como transladar um objeto na cena para conseguir posicionar o disco na posição
esperada, para isso utilizaram-se vetores que são internamente
transformados em matrizes de translação pela ferramenta JMonkey. Outra propriedade fundamental para esta interface é a aplicação de rotação, já que o usuário interaje com a interface para rotacionar o cilindro até encontrar o símbolo apropriado. Para obter as matrizes de rotação utilizou-se uma
funcionalidade da ferramenta que cria as matrizes a partir da combinação de vetores com ângulos. Outra propriedade utilizada que auxilia o processo de rotação é o Quaternion, que ainda não foi vista em aula. O Quaternion
possui uma representação compacta para realização de rotação e orientação na cena 3D, além de reduzir o risco de Gimbal Lock [7]. Também foi possível estudar a criação de objetos gráficos a partir de malhas, método este que permite a modelagem de objetos bastante complexos.
Além das propridades básicas da computação gráfica, também foi possível visualizar no projeto a estrutura de um sistema gráfico, começando pela modelagem dos objetos até aplicar cores, texturas e iluminação nas imagens digitais.
6 - Conclusão e próximos passos
A escolha de utilizar computação gráfica para criação deste tipo de interface de teclado virtual tem se mostrado adequada. Com ela pode-sefazer
qualquer tipo de manipulação nos objetos 3D, permitindo a criação de uma interface com boa usabilidade. Não apenas isso, mas por meio deste
desenvolvimento, pode-se ver, na prática, muitos dos conceitos aprendidos durante as aulas, enriquecendo ainda mais o aprendizado.
A interface está evoluindo gradativamente de acordo com o conhecimento adquirido e das possibilidades da ferramenta JMonkey, por isso espera-se que após a finalização da versão inicial e completa do teclado, seja possível aplicar efeitos para tornar a interface mais dinâmica e interessante e até mesmo aplicar outras propriedades da computação gráfica. Se o tempo permitir, tmabém espera-se a possibilidade de testar outros tipos de interface - como a da estrutura pentagonal, onde cada aresta agrupa um conjunto de teclas - a fim de analisar qual é a mais vantajosa em termos de facilidade e agilidade de uso.
7 - Referências bibliográficas
[1] David J. Ward and David J. C. MacKay. Artificial intelligence: Fast hands- free writing by gaze direction. Nature, 2002.
[2] Jingtao Want, Shumin Zhai e Hui Su. Chinese input with keyboard and eye-tracking: an anatomical study, 2001.
[3] T Felzer, R Nordmann. Speeding up hands-free text entry.
[4] Detecção de Faces e Rastreamento do Olhar em Imagens -
http://www.ime.usp.br/~cpgmac/Disciplinas_Passadas/2003ii/mac5701/
Relatorios/Flavio.Coutinho_mono.pdf
[5] Eclipse Europa (Eclipse Foundation). http://www.eclipse.org , 2007.
[6] JMonkey Engine (jME Team). www.jmonkeyengine.com, 2007 [7] Gimbal Lock: http://www.jmonkeyengine.com/wiki/
doku.php?id=gimbal_lock