2. TEORETISKE RAMMER
2.2 Det samiske språket
Com o objetivo de compatibilizar a representação e execução de aplicações RV em ambiente remoto, o RM-VRServices deve possibilitar a representação de entrada de dados desvinculada dos dispositivos físicos de entrada. A entrada de dados para o contexto de execução das aplicações na plataforma VRServices é promovida por meio de mensagens de serviços, emitidas pelas aplicações clientes. Essa característica tornam os dispositivos de entrada de dados transparentes para a plataforma.
A primeira alternativa considerada para representar as entradas de dados foi a representação dos dispositivos físicos como dispositivos virtuais. Assim, por exemplo, para um mouse físico no cliente, deveria existir uma instância de mouse virtual na representação da aplicação e posteriormente no contexto de execução da aplicação. Foi produzido um protótipo para avaliação dessa alternativa. O protótipo disponibiliza um conjunto de operações de serviços que são usadas para alterar o estado da instância de cada dispositivo virtual. Assim, no exemplo do mouse virtual, o protótipo disponibiliza operações que são usadas para atualizar o estado do mouse virtual, tais como: botão direito pressionado na posição x e y; botão esquerdo pressionado na
posição x e y; ou ainda, arrasto de mouse da posição x1 e y1 até a posição x2 e y2. Embora essa alternativa mostrou-se viável funcionalmente, ela foi desconsiderada, pois a representação do RM-VRServices ficaria vulnerável ao surgimento de novos dispositivos de entrada de dados. Outro agravante considerado é a quantidade de modelos de dispositivos de entrada, aumentando a complexidade de representação dos dispositivos virtuais e a quantidade de operações de serviços que deveriam existir para atender a especificidade de cada dispositivo virtualizado.
A segunda alternativa analisada e posteriormente adotada, é a proposta de classificação de dispositivos considerando sua função de entrada de dados e não suas características físicas. Os autores Foley e Wallace (1974) propõem uma classificação de dispositivos físicos em quatro categorias de dispositivos virtuais: 1) pick - representa a função de selecionar elementos da interface do usuário; 2) button - inicialmente considerada as funções pré-programadas em teclados, acionadas por botões; 3) locator - usado para indicar um local ou orientação no espaço de desenho conceitual do usuário; e 4) valuator - é usado para determinar um único valor no espaço de números.
Segundo Myers (1990), existem muitas iniciativas que propõem a separação dos dispositivos de entrada de dados das aplicações. Padrões como Graphical Kernel System (GKS) e Programmer’s Hierarchical Interactive Graphics System (PHIGS) identificam cinco ou seis tipos básicos de entrada: locator, stroke, valuator, choice, pick, e string, baseados no modelo de Foley e Wallace (1974).
Os autores He e Kaufman (1993) propõem uma interface unificada para dispositivos de entrada de dados. A ideia central é generalizar e unificar dados de dispositivos físicos para um dispositivo virtual que é visível para a aplicação. A proposta tem dois objetivos, um é promover a independência de aplicações frente as especificidades de dispositivos de entrada, e segundo, é permitir que diversos dispositivos possam ser usados para a mesma função de entrada de dados. Os autores também usam a classificação de dispositivos de entrada baseada na função da entrada de dados (FOLEY; WALLACE, 1974). A Tabela 4 apresenta a classificação de alguns dispositivos de entrada pela função que cada um pode desempenhar.
A representação de entrada de dados do RM-VRServices, estabelece uma representação unificada e virtual de entrada de dados por meio do conceito VirtualInput, conforme ilustrado na Figura 33. Baseado na classificação funcional de dispositivos de entrada de dados, proposto por Foley e Wallace (1974) e citadas por Myers (1990), foram definidas quatro especializações para representar as funções de entrada de dados: VirtualLocale, VirtualSelect, VirtualCommand e VirtualDataInput.
Tabela 4: Classificação de dispositivos de entrada de dados
Fonte: adaptado de He e Kaufman (1993)
Figura 33: Conceito VirtualInput do RM-VRServices
Fonte: Autor (2014)
A Tabela 5 apresenta o mapeamento dos conceitos definidos no RM-VRServices relacionados com as categorias de dispositivos de entrada de dados.
O conceito VirtualLocale representa dados referentes a posicionamento de algo no mundo virtual, podendo ser representadas posições com pontos 2D, pontos 3D ou por meio de coordenadas de um sistema de posicionamento global.
Tabela 5:Mapeamento de conceitos e funções de entrada de dados
Fonte: Autor (2014)
seleções realizadas no mundo virtual, como a seleção em um ponto 2D, ou em um ponto 3D, uma área retangular delimitada por dois pontos 2D, uma região delimitada por uma esfera ou um objeto referenciado por um identificador.
O conceito VirtualCommand representa comandos que são enviados para o contexto de execução da aplicação. Foi especializado para representar comandos por meio de valores numéricos, teclas, textos, gestos ou voz.
O conceito VirtualDataInput representa a entrada de dados para aplicação. Foi divido em dois grupos: o primeiro para representar dados discretos, como caracteres, textos, valores inteiros, valores reais, data ou valores binários; o segundo grupo representa fluxos contínuos de entrada de dados, como: fluxo de áudio, fluxo de vídeo ou fluxo de valor binário.
Além das entradas de dados representadas pelas especializações do conceito VirtualInput, existe a possibilidade de representar entradas compostas, por meio de duas ou mais instâncias dos subconceitos de VirtualInput. Por exemplo, para representar uma seleção de uma área retangular usando um mouse como dispositivo de entrada, é possível representá-la com duas instâncias de Virtual2DPoint, uma para a origem do arrasto do mouse e outra para marcar o final do arrasto e ainda usar uma instância de VirtualTextCommand para representar o botão do mouse que foi pressionado. Outro exemplo de composição pode ser dado pela necessidade de representar uma combinação de teclas de função do teclado, usando duas ou mais instâncias de VirtualKeyCommand.
Para os casos que seja necessária a representação de dados específicos de dispositivos de entrada de dados, foi reservado o conceito SpecificDataMap, que pode representar dados por meio de uma estrutura do tipo dicionário, que estabelece uma lista de dados representados por meio de pares de chaves e valores. O conceito VirtualInput e qualquer um dos subconceitos podem conter uma instância de SpecificDataMap para representar uma informação específica de um dispositivo de entrada de dados.