• Aucun résultat trouvé

6 SYNOPTIQUE TECHNIQUE

6.1 MAQUETTE DE LA GALERIE VIRTUELLE

Para validar as funcionalidades implementadas em Hydra e em seus

frameworks foi desenvolvida uma aplicação de teste, abrangendo visualização

(ambiente virtual gráfico), interação (ambiente virtual tátil), som 3D (ambiente virtual sonoro) e simulação física (ambiente virtual reativo).

A aplicação consiste em um ambiente virtual regido por leis físicas aproximadas às do mundo real (Física Newtoniana), com o usuário navegando por este ambiente utilizando teclado e mouse para movimentação da câmera virtual. O usuário controla a câmera a partir de comandos do teclado e do mouse. As teclas “w”, “s”, “a” e “d” são utilizadas, respectivamente, como “em frente”, “para trás”, “esquerda” e “direita”, já o ângulo de visão da câmera é controlado pela movimentação do mouse. O usuário pode ainda lançar objetos na cena virtual, utilizando os botões do mouse para essa tarefa.

O ambiente virtual (Figura 28) é composto por um plano com propriedades físicas (geometria, atrito e bounciness) e visuais (geometria e textura). A gravidade desse ambiente é a mesma do mundo real (9,8 m/s²), seu “céu” é preenchido por uma textura de “céu noturno” e iluminado por três fontes de luz distintas, com tons de verde, magenta e laranja. Uma estátua da deusa grega Atena (Figura 30) está localizada no centro do ambiente, possuindo representação no ambiente reativo com

comportamento de “caixa” e no ambiente gráfico uma “estátua” (malha triangular complexa). Há ainda três tipos de objetos (Figura 29, Figura 31e Figura 32) que podem ser arremessados pelo usuário contra a estátua. Cada vez que um objeto arremessado colide com a estátua, é executado um som 3D com origem no ponto de colisão.

Figura 28. Ambiente da aplicação teste

Figura 30. Representação visual (laranja) e física (azul) da estátua

Figura 32. Representação visual (laranja) e física (azul) da shuriken

A estátua de Atena pode ainda adquirir outros dois tipos de comportamento físicos e visuais (Figura 33). O primeiro faz a estátua ter ausência de comportamento físico (não oferecendo resistência a nenhum objeto lançado contra ela, além de não sofrer influência de forças externas) e como comportamento visual uma aparência translúcida de cor com tons de magenta. O segundo comportamento é visualmente semelhante ao primeiro, sendo que no lugar de tons de magenta, a estátua adquire tons azulados, mas em relação ao seu comportamento físico ela passa a funcionar como um force field, ou seja, qualquer objeto lançado contra ela é repelido.

Figura 33. Estátua de Atena com comportamento de force field (azul) e sem

A execução desta aplicação teste envolve três etapas: configuração da plataforma, criação do ambiente virtual e inicialização da simulação.

Para a configuração da plataforma é necessário que o usuário informe quais

plugins, assim como suas respectivas configurações, serão utilizados na aplicação.

No caso da aplicação teste desenvolvida neste trabalho, são utilizados quatro

plugins, cada um deles ligado a um dos frameworks pertencentes a plataforma:

RaVe, ALVE, TACTILE e ReActive. As configurações dos plugins são feitas a partir de std::map<std::string, std::string >, possuindo como chaves obrigatórias “Plugin Path”, que informa o caminho do arquivo .dll a ser carregado, e “Plugin ID”, número para identificar únicamente o plugin. As configurações utilizadas na aplicação teste seguiram o seguinte padrão:

std::map<std::string, std::string > configCore; std::map<std::string, std::string > configRaVe; configRaVe["Plugin ID"] = "1";

configRaVe["Plugin Path"] = "../Plugins/RVOgreCthughaPlugin.dll"; /*Specific Configurations

...*/

std::map<std::string, std::string > configALVE;

configALVE["Plugin Path"] = "../Plugins/AVFMODPlugin.dll"; configALVE["Plugin ID"] = "2";

/*Specific Configurations ...*/

std::map<std::string, std::string > configTACTILE; configTACTILE["Plugin ID"] = "3";

configTACTILE["Plugin Path"] = "../Plugins/TCDummyPlugin.dll"; configTACTILE["Devices"] = "True";

configTACTILE["Device Managers Number"] = "1";

configTACTILE["Plugin Device Manager Path 0"] = "../Plugins/TCOISPlugin.dll"; configTACTILE["Plugin Device Manager ID 0"] = "4";

/*Specific Configurations ...*/

std::map<std::string, std::string > configReActive;

configReActive["Plugin Path"] = "../Plugins/RAPhysXPlugin.dll"; configReActive["Plugin ID"] = "5";

/* Specific Configurations ...*/

HydraManager* m = HydraManager::getInstancePtr(); HRoot* root = m->getRoot();

Para a criação do ambiente virtual foram definidas seis entidades Material, sendo uma para o “céu” do ambiente virtual, uma para as armas que podem ser atiradas pelo usuário da aplicação, uma para o plano que representa o “piso” do ambiente virtual e três para a estátua de Atena (material rochoso, luminoso na cor azul e luminoso na cor magenta).

Já em relação às entidades Shape e Actor foram criados cinco representes, um para cada elemento virtual presente na aplicação (“piso”, estátua de Atena, lança, adaga e shuriken), todas elas possuindo caracteristicas físicas (forma geométricas, atrito, resposta a choques, dentre outras) e visuais (plano e malhas 3D).

O ambiente virtual da aplicação teste é definido por uma entidade Scene, essa possuindo caracteristicas físicas, visuais e sonoras. A cena virtual é iluminada por três entidades do tipo Light, cada uma delas emando luzes em tonalidades diferentes (verde, laranja e magenta).

O ambiente virtual da aplicação é apresentado de forma sonora, sendo reproduzido um som a cada choque entre uma das armas arremessadas pelo usuário e os elementos já presentes no ambiente (o “piso”, a estátua de Atena ou outras armas já arremessadas), e graficamente a partir de uma entidade Camera, uma Viewport e uma Window. Abaixo é mostrado o código utilizado para a criação da entidade material responsável pela ausência de comportamento físico da estátua de Atena.

Todas as entidades Descriptor existentes na plataforma Hydra (referentes a Material, Shape, Actor e Scene) possuem atributos relacionados aos componentes

Hydra::HMaterialDescriptor atheneDesc3; atheneDesc3.AI = false; atheneDesc3.physics = false; atheneDesc3.render = true; atheneDesc3.sound = false; atheneDesc3.tactil = false; atheneDesc3.name = "athene 3"; atheneDesc3.renderScriptName = "Examples/Energy2";

HMaterial* atheneMat3_ = root->createMaterial(atheneDesc3);

suportados (Gráfico, Sonoro, Tátil e Reativo). Os atributos principais das entidades Descriptor são as flags que definem se a entidade a ser criada será definida nos componentes suportados, sendo elas AI, physics, render, sound e tactil, além do identificador da entidade: name. Como essa entidade Material possui apenas comportamento visual, é necessário informar a ela apenas qual script ela deverar carregar para definir seu comportamento (renderScriptName).

Por fim, o usuário da aplicação teste pode interagir com ela a partir de mouse e teclado, ambos abistraidos pela entidade Device. O evento monitorado pela aplicação é o OnDeviceChangeState, que, no caso dos dispositivos teclado e mouse, englobam os eventos OnKeyPressed, OnKeyHolded, OnKeyReleased, OnButtonPressed, OnButtonHolded, OnButtonReleased e OnMouseMoved. O evento é tratado a partir do metodo process, mostrado pelo trecho de código abaixo, possuindo as informações a respeito da mudança de estado do dispositivo organizadas em uma estrutura std:map< std::string, std::string >.

void process(Hydra::HOnDeviceChangeState& evt) {

//Initial Code

if(evt.info["Keys Pressed"] != "") {

//Code

}

if(evt.info["Keys Holded"] != "") {

//Code

}

if(evt.info["New Relative Position"] != "") {

//Code

}

if(evt.info["Buttons Pressed"] != "") {

//Code

}

if(evt.info["Buttons Holded"] != "") {

//Code

}

//Final Code

4.2 Considerações

Mesmo tendo sido executada uma avaliação apenas de caráter preliminar com a aplicação desenvolvida, foi possível obter algumas constatações a respeito da plataforma Hydra e aos objetivos que a ferramenta se propõe. Em relação ao desenvolvimento rápido de aplicações, Hydra oferece um ambiente virtual unificado, reunindo características gráficas, sonoras, táteis e físicas, e interfaces de programação intuitivas a usuários que possuam familiaridade com aplicações relacionadas à ambientes virtuais. Devido às características citadas, foi possível desenvolver a aplicação teste utilizando por volta de setecentas linhas de código, o que representa um valor razoável, dado ao número de variáveis envolvidas no ambiente virtual da aplicação, que é composto por ambiente gráfico, sonoro e físico, possuindo ainda detecção de colisão entre objetos físicos e gerenciamento de eventos de input. Cabe ressaltar que se esta mesma aplicação fosse desenvolvida utilizando as ferramentas de forma independente para gráfico (Ogre), física (PhysX), som (FMOD EX) e interação (OIS), os autores precisariam de pelo menos em torno de mil linhas de código para criar a mesma aplicação.

Em relação à customização da plataforma, a aplicação foi construída utilizando plugins para definição dos ambientes gráfico (Ogre), sonoro (FMOD EX) e físico (reativo) (PhysX), além de oferecer interação por meio de dispositivos usuais, como mouse e teclado (OIS). Devido à estrutura de sua arquitetura, aplicações que utilizem Hydra podem ser construídas de forma flexível, permitindo aos usuários utilizar apenas os módulos que atendam suas necessidades. No caso da aplicação teste desenvolvida, não foram utilizadas funcionalidades relacionadas ao ambiente virtual tátil em si e nem a captura e reconhecimento do ambiente real por meio de vídeo (apesar de terem sido desenvolvidos plugins de teste para isto).

Capítulo 5

Conclusão

Este trabalho propôs Hydra, uma plataforma composta por frameworks e bibliotecas para auxiliar o desenvolvimento de diversos tipos de aplicações relacionadas a ambientes virtuais, englobando RV, RA, VA, RM, Jogos, dentre outras áreas. As principais contribuições deste trabalho foram: definição de uma nova abordagem e arquitetura para desenvolvimento de aplicações relacionadas a ambientes virtuais, implementação desta abordagem em quatro frameworks e quatro bibliotecas, implementação de um framework para construção de ambientes virtuais englobando os diversos componentes identificados no capítulo 2 e publicações relacionadas.

A abordagem utilizada em Hydra consiste no tratamento diferenciado de cada detalhe da aplicação relacionada com ambientes virtuais, dividindo-os em três componentes: Interface, Mundo Virtual e Base. Tal abordagem não foi identificada em nenhuma das ferramentas descritas no capítulo 2.

O componente Base está ligado à estruturação da aplicação em si, lidando com detalhes a respeito de gerenciamento de arquivos, concorrência, comunicação, dentre outros, enquanto os componentes Mundo Virtual e Interface estão relacionados diretamente ao ambiente virtual.

O componente Mundo Virtual representa o conceito do ambiente virtual. Esse componente possui tanto a representação “física” ou “reativa” como também a representação “comportamental” ou “ativa” das entidades virtuais, sendo então dividido em dois “ambientes virtuais”, o ambiente reativo e o ambiente ativo.

O ambiente reativo define o comportamento “físico” das entidades, ou seja, seu comportamento com relação à interação “não voluntária” entre elas. O ambiente virtual ativo é responsável pela definição do comportamento “cognitivo” das

entidades, ou seja, ele define o comportamento que as entidades conseguem realizar de forma intencional.

O componente Interface, que é influenciado pelo componente Mundo Virtual, é dividido em três ambientes virtuais, baseando-se nos sentidos normalmente sensibilizados em aplicações relacionadas a ambientes virtuais: ambiente gráfico (visão), ambiente sonoro (audição) e ambiente tátil (tato). Cada um desses ambientes funciona como um canal de comunicação entre o usuário e a aplicação, podendo este canal ser de duas vias, ou seja, tanto o usuário pode passar informações ao sistema quanto o sistema passar informações para o usuário.

O ambiente virtual gráfico é responsável tanto por transmitir informações gráficas do mundo virtual ao usuário (de forma realista ou não) quanto receber informações do mundo real para a aplicação (utilizando técnicas para reconhecimento de padrões visuais em imagens ou vídeo).

O sentido da audição é bastante importante quanto à imersão do usuário no ambiente virtual, mesmo não sendo considerado como o principal sentido nestes ambientes. O ambiente sonoro oferece informações ao usuário a respeito do mundo virtual a partir de estímulos de sons, mas também pode receber do usuário estímulos sonoros para realizar determinadas tarefas.

O ambiente virtual tátil é responsável pela resposta háptica ao usuário, mas também é responsável pela principal forma de interação dele com o ambiente virtual. Esse ambiente virtual normalmente possui maior enfoque nas informações que o usuário passa ao sistema, visto que dispositivos de interação usuário-sistema (teclados, mouse, joysticks, dentre outros) possuem menor custo e são mais comuns que dispositivos com retorno háptico.

Os componentes identificados foram desenvolvidos na forma de ferramentas independentes, ou seja, o usuário da plataforma tem a liberdade de utilizá-las da forma que preferir. As ferramentas ligadas ao componente Base são: Util, biblioteca com diversas funcionalidades estruturais úteis ao desenvolvimento de aplicações não só relacionadas a ambientes virtuais, CPPMT, biblioteca para gerenciamento de concorrência, incluindo threads, semáforos, mutex, escalonadores de eventos e

utilizando compactação zip, e Numerics, biblioteca com funcionalidades matemáticas básicas.

Em relação ao componente Mundo Virtual temos o framework ReActive, ferramenta ligada ao subcomponente ambiente reativo, responsável pelo gerenciamento de objetos com simulação de física Newtoniana. Por fim, para o componente de Interface, temos três frameworks: RaVe, ligado ao subcomponente gráfico e responsável tanto pela exibição do ambiente virtual gráfico quanto pela captura e reconhecimento de imagens do ambiente real, ALVE, ligado ao subcomponente sonoro e responsável tanto pela apresentação sonora do ambiente virtual quanto pela captura e reconhecimento de informações sonoras, e TACTILE, ligado ao subcomponente tátil e responsável tanto pela captura de informações a partir de dispositivos de interação quanto por oferecer resposta háptica às ações do usuário.

Para a implementação do framework central da plataforma Hydra foram utilizados todos os outros frameworks e bibliotecas desenvolvidos, atingindo assim os dois objetivos definidos no capítulo 1 (desenvolvimento rápido de aplicações e customização da arquitetura) e satisfazendo os quatro macro requisitos apresentados no capítulo 3 (Interfaces Simplificadas, Ambiente Virtual Unificado, Customização e Flexibilidade).

Como última contribuição este trabalho obteve publicações associadas a ele, duas delas ocorreram antes do inicio deste mestrado, no ano de 2008, sendo elas relacionadas ao ReActive, no Simpósio de Realidade Virtual e Aumentada (SVR), e à primeira proposta de Hydra, no Workshop de Realidade Virtual e Aumentada (WRVA), e uma delas aceita para publicação no ano de 2011, novamente no SVR, relacionada aos resultados obtidos nesta dissertação.

Documents relatifs