10
Hydra Virtual environments development platform Hydra Plataforma para Desenvolvimento de Ambientes Virtuais Ronaldo Ferreira dos Anjos Filho Veronica Teichrieb Judith Kelner Research Group on Virtual Reality and Multimedia (GRVM) Federal University of Pernambuco (UFPE) Recife, Brazil [email protected], [email protected], [email protected] Abstract Thanks to technological advances experienced in recent years, home users can run complex applications related to virtual environments, such as Virtual Reality (VR), Augmented Reality (AR), Mixed Reality (MR), Games, among others, on their computers. Due to these advances, it is possible for developers to create tools in order to assist the development of virtual environment’s applications, thereby influencing many different areas of industry, such as Cinema and Games. In this context, this paper proposes Hydra, a platform that has two major objectives: promoting fast development of applications, covering various aspects related to virtual environments (graphics, sound, physics, and others), and enable customization of the Hydra itself, allowing users to change the way the platform perform its features. Keywords: Virtual environments development platform, fast development, customization. I. INTRODUÇÃO Atualmente, avanços no hardware (tanto na capacidade dos processadores de propósito geral aliados com o poder das GPUs, que podem também ser usadas para processamento geral, via GPGPU, quanto na capacidade das memórias principais e de armazenamento, dentre outros) têm permitido aos desenvolvedores implementarem diversos tipos de frameworks, esses podendo ser usados para a construção de ambientes virtuais realísticos, reunindo desde gráficos, passando por som, até de simulação física. Não é incomum que mais de um destes tipos de framework sejam combinados para o desenvolvimento de diversas aplicações, como, por exemplo, Jogos, fazendo uso de ferramentas para gráficos, de som, de rede, de simulação física, dentre outras. Com isto, a integração destas ferramentas, o desenvolvimento de aplicações utilizando funcionalidades dos diferentes tipos de ferramentas, bem como a customização dos frameworks de desenvolvimento são desafios que os desenvolvedores enfrentam. Em decorrência também desses avanços, foi possível aos desenvolvedores adaptar ou criar técnicas de renderização que pudessem ser executadas em tempo real, tais como de renderização fotorrealística [1]. Com isso, pode-se criar ferramentas complexas com o intuito de auxiliar o desenvolvimento de aplicações com elevado refinamento gráfico, influenciando assim as mais diversas áreas da indústria, principalmente Cinema e Jogos. Grandes empresas, como, por exemplo, NVIDIA [2], CRYTEK [3] e Pixar [4] têm feito grandes investimentos relacionados com a exibição de ambientes gráficos. Diversos títulos de animações 3D de qualidade foram produzidos para o cinema pela Pixar nos últimos anos em decorrência desses investimentos, além da produção científica associada a eles, como o estudo de métodos para aumentar a eficiência de filtros baseados em histogramas locais [5] com o intuito de aumentar a qualidade da cena gráfica. Já a CRYTEK desenvolveu jogos com ambientes de elevado nível de realismo, desenvolvendo diversas técnicas de renderização em tempo real como, por exemplo, Screen- Space Ambient-Occlusion (SSAO) [6], uma técnica para geração de sombras baseada em informações presentes no espaço de tela, ou seja, informações que estão sendo exibidas naquele momento. A NVIDIA, além de investir na criação de hardwares gráficos cada vez mais eficientes, tem investido na criação de técnicas de renderização cada vez mais sofisticadas, como, baseada no SSAO, a técnica Image-Space Horizon-Based Ambient Occlusion (ISHBAB) [7]. A área de processamento de som tem se beneficiado também dessas inovações tecnológicas, permitindo que um número maior de aplicações de RV e Jogos, por exemplo, utilize sons para aumentar a sensação de imersão nos ambientes virtuais, como em jogos de horror, onde o ambiente gráfico normalmente é desenvolvido para 2011 XIII Symposium on Virtual Reality 978-0-7695-4445-8/11 $26.00 © 2011 IEEE DOI 10.1109/SVR.2011.22 102 2011 XIII Symposium on Virtual Reality 978-0-7695-4445-8/11 $26.00 © 2011 IEEE DOI 10.1109/SVR.2011.22 102

[IEEE 2011 XIII Symposium on Virtual Reality (SVR) - Uberlandia, TBD, Brazil (2011.05.23-2011.05.26)] 2011 XIII Symposium on Virtual Reality - Hydra: Virtual Environments Development

  • Upload
    judith

  • View
    212

  • Download
    0

Embed Size (px)

Citation preview

Page 1: [IEEE 2011 XIII Symposium on Virtual Reality (SVR) - Uberlandia, TBD, Brazil (2011.05.23-2011.05.26)] 2011 XIII Symposium on Virtual Reality - Hydra: Virtual Environments Development

Hydra Virtual environments development platform

Hydra Plataforma para Desenvolvimento de Ambientes Virtuais

Ronaldo Ferreira dos Anjos Filho

Veronica Teichrieb

Judith Kelner Research Group on Virtual Reality and Multimedia (GRVM)

Federal University of Pernambuco (UFPE)

Recife, Brazil

[email protected], [email protected], [email protected]

Abstract — Thanks to technological advances experienced

in recent years, home users can run complex applications

related to virtual environments, such as Virtual Reality

(VR), Augmented Reality (AR), Mixed Reality (MR), Games,

among others, on their computers. Due to these advances,

it is possible for developers to create tools in order to assist

the development of virtual environment’s applications,

thereby influencing many different areas of industry, such

as Cinema and Games. In this context, this paper proposes

Hydra, a platform that has two major objectives: promoting

fast development of applications, covering various aspects

related to virtual environments (graphics, sound, physics,

and others), and enable customization of the Hydra itself,

allowing users to change the way the platform perform its

features.

Keywords: Virtual environments development platform, fast

development, customization.

I. INTRODUÇÃO

Atualmente, avanços no hardware (tanto na capacidade

dos processadores de propósito geral aliados com o poder

das GPUs, que podem também ser usadas para

processamento geral, via GPGPU, quanto na capacidade das

memórias principais e de armazenamento, dentre outros)

têm permitido aos desenvolvedores implementarem diversos

tipos de frameworks, esses podendo ser usados para a

construção de ambientes virtuais realísticos, reunindo desde

gráficos, passando por som, até de simulação física. Não é

incomum que mais de um destes tipos de framework sejam

combinados para o desenvolvimento de diversas aplicações,

como, por exemplo, Jogos, fazendo uso de ferramentas para

gráficos, de som, de rede, de simulação física, dentre outras.

Com isto, a integração destas ferramentas, o

desenvolvimento de aplicações utilizando funcionalidades

dos diferentes tipos de ferramentas, bem como a

customização dos frameworks de desenvolvimento são

desafios que os desenvolvedores enfrentam.

Em decorrência também desses avanços, foi possível aos

desenvolvedores adaptar ou criar técnicas de renderização

que pudessem ser executadas em tempo real, tais como de

renderização fotorrealística [1]. Com isso, pode-se criar

ferramentas complexas com o intuito de auxiliar o

desenvolvimento de aplicações com elevado refinamento

gráfico, influenciando assim as mais diversas áreas da

indústria, principalmente Cinema e Jogos.

Grandes empresas, como, por exemplo, NVIDIA [2],

CRYTEK [3] e Pixar [4] têm feito grandes investimentos

relacionados com a exibição de ambientes gráficos.

Diversos títulos de animações 3D de qualidade foram

produzidos para o cinema pela Pixar nos últimos anos em

decorrência desses investimentos, além da produção

científica associada a eles, como o estudo de métodos para

aumentar a eficiência de filtros baseados em histogramas

locais [5] com o intuito de aumentar a qualidade da cena

gráfica. Já a CRYTEK desenvolveu jogos com ambientes de

elevado nível de realismo, desenvolvendo diversas técnicas

de renderização em tempo real como, por exemplo, Screen-

Space Ambient-Occlusion (SSAO) [6], uma técnica para

geração de sombras baseada em informações presentes no

espaço de tela, ou seja, informações que estão sendo

exibidas naquele momento. A NVIDIA, além de investir na

criação de hardwares gráficos cada vez mais eficientes, tem

investido na criação de técnicas de renderização cada vez

mais sofisticadas, como, baseada no SSAO, a técnica

Image-Space Horizon-Based Ambient Occlusion (ISHBAB)

[7].

A área de processamento de som tem se beneficiado

também dessas inovações tecnológicas, permitindo que um

número maior de aplicações de RV e Jogos, por exemplo,

utilize sons para aumentar a sensação de imersão nos

ambientes virtuais, como em jogos de horror, onde o

ambiente gráfico normalmente é desenvolvido para

2011 XIII Symposium on Virtual Reality

978-0-7695-4445-8/11 $26.00 © 2011 IEEE

DOI 10.1109/SVR.2011.22

102

2011 XIII Symposium on Virtual Reality

978-0-7695-4445-8/11 $26.00 © 2011 IEEE

DOI 10.1109/SVR.2011.22

102

Page 2: [IEEE 2011 XIII Symposium on Virtual Reality (SVR) - Uberlandia, TBD, Brazil (2011.05.23-2011.05.26)] 2011 XIII Symposium on Virtual Reality - Hydra: Virtual Environments Development

dificultar a visibilidade do jogador (ambientes noturnos e/ou

com pouca iluminação), aumentando assim o impacto para o

usuário na execução de sons, tendo como exemplo a série

Silent Hill [8]. Graças a esses avanços, arquivos de som

podem ser gerados possuindo maior qualidade e efeitos que

outrora, além de serem facilmente compactados e

reproduzidos posteriormente.

Os desenvolvedores de dispositivos para interação

também foram beneficiados pelos avanços no hardware.

Nesse cenário, além da melhoria da interação por

dispositivos comuns, como teclado, mouse e joysticks, por

exemplo, foram criados dispositivos para interação não

usual, como o Wii Mote [9], Move [10] e Kinect [11],

aumentado assim a gama de opções relacionadas à interação

em ambientes virtuais.

Graças aos avanços também foi possível a criação de

engines capazes de simular, em tempo real, comportamentos

físicos baseados na Física Newtoniana. Essas ferramentas

oferecem simulações realísticas que podem ser adicionadas

a ambientes virtuais para aumentar o nível de qualidade

destes, como na ferramenta VisGas [12].

Avanços na área de telecomunicações também têm

provocado mudanças no desenvolvimento de aplicações.

Com o aumento da largura de banda é possível desenvolver

ambientes virtuais colaborativos, reunindo usuários que

podem estar em diversas partes do mundo. Jogos no estilo

MMO (Massive Multiplayer Online) se tornaram populares

graças ao aumento do número de usuários domésticos que

possuem conexões de banda larga.

Outra característica que ultimamente tem sido

adicionada às aplicações que utilizam ambientes virtuais é a

Inteligência Artificial (IA), que vem sendo usada

principalmente pela indústria de Jogos. O comportamento

das entidades presentes nos ambientes virtuais sofreu um

considerável incremento em complexidade devido aos

avanços já citados anteriormente e ao desenvolvimento de

novos algoritmos, passando de comportamentos simples,

baseados em scripts (movimentação, ataque), para

comportamentos sofisticados, fundamentados fortemente

pelas ações do jogador (estratégias de ataque e

movimentação contra o jogador). Outro exemplo do uso de

IA é relacionado com a definição de uma arquitetura para

sistemas multi-agentes integrada à ambientes virtuais [13].

Neste contexto de avanços, tanto em hardware quanto

em ambientes virtuais, é proposto uma plataforma modular

com o objetivo de unificar diversos aspectos relacionados à

criação de ambientes virtuais, denominado Hydra, de modo

a satisfazer duas condições: promover desenvolvimento

rápido de aplicações, oferecendo um ambiente virtual

unificado e de fácil entendimento, além de oferecer a

possibilidade de customizá-lo a partir de plugins,

possibilitando ao usuário definir o funcionamento das

features oferecidas pela plataforma.

Nas seções a seguir deste trabalho são discutidos,

respectivamente, os trabalhos relacionados ao

desenvolvimento de ambientes virtuais, a definição da

plataforma Hydra, apresentando como foi executado seu

desenvolvimento, sua arquitetura e ferramentas associadas.

É apresentado, logo após a definição de Hydra, um estudo

de caso que envolveu a implementação de plugins e uma

aplicação teste possuindo como objetivo a validação da

plataforma e de seus componentes. Finalizando este

trabalho, temos as conclusões obtidas em seu

desenvolvimento, os agradecimentos e as referências

utilizadas.

II. TRABALHOS RELACIONADOS

Para o desenvolvimento da plataforma Hydra foi feito

um estudo a respeito de ferramentas presentes na literatura

que envolvessem o desenvolvimento de ambientes virtuais,

abrangendo ambientes físicos, gráficos e sonoros, além de

ferramentas para comunicação via rede, para assim extrair

características que essas possuem em comum, além de

identificar os principais pontos fortes e fracos. Como na

maioria dos casos as ferramentas relacionadas com

renderização háptica são proprietárias, foram analisadas

apenas duas ferramentas relacionadas a dispositivos de

interação. Nas subseções a seguir as principais ferramentas

são descritas e uma comparação a respeito dos elementos

encontrados em comum nelas.

A. Engines físicos

Dentre os engines físicos estudados, a biblioteca Bullet

[14] possui dois módulos separados, um para simulação

física e outro para detecção de colisão. Esta divisão é

refletida na estrutura de diretórios e subdiretórios para

representar os sub-módulos da biblioteca. Graças à sua

arquitetura modular, é possível utilizar qualquer dos

módulos em separado, ou seja, utilizar o módulo de

simulação física associado a outro módulo de detecção de

colisão ou vice-versa.

A biblioteca ODE [15] (Open Dynamics Engine) é um

simulador de corpos rígidos articulados. Uma estrutura

articulada pode ser representada por corpos rígidos

conectados através de juntas. Como exemplo, pode-se citar

criaturas compostas por tronco e membros, ou ainda

veículos como carros e motos.

Semelhantemente ao Bullet, a biblioteca ODE oferece

também um sistema de detecção de colisão separado do

módulo de simulação física. Baseado no conceito de

espaços, este sistema de colisão permite rápida identificação

de objetos que potencialmente podem colidir.

Ao contrário dos outros engines presentes na literatura, o

Newton [16] é um engine físico que possui maior precisão

nos cálculos de suas simulações. Ele foi desenvolvido para

simulação realística de corpos rígidos em aplicações de

tempo real. O Newton é bastante difundido, sendo popular

em diversas comunidades.

O NVIDIA PhysX [17], antigo AGEIA PhysX, é um

middleware de física, baseado em software, para a criação

de ambientes físicos dinâmicos. O PhysX suporta as

principais plataformas para jogos e aplicações gráficas, tais

103103

Page 3: [IEEE 2011 XIII Symposium on Virtual Reality (SVR) - Uberlandia, TBD, Brazil (2011.05.23-2011.05.26)] 2011 XIII Symposium on Virtual Reality - Hydra: Virtual Environments Development

como PlayStation3, XBOX360, PC, entre outras. Pela

abrangência de plataformas, facilidade de programação e

diversas features oferecidas, o uso deste engine é bastante

difundido, sendo usado em diversas aplicações e jogos

comerciais. Além disto, a placa AGEIA PhysX foi a única

PPU (Physics Processing Unit) dedicada para computadores

desktop, construída para melhorar a física executada em

aplicações que usam este engine. Atualmente a produção

destas placas foi encerrada, sendo agora oferecida

aceleração física diretamente nas mais recentes GPUs da

NVIDIA.

B. Engines gráficos

O OGRE (Object-Oriented Graphics Rendering Engine)

[18] é um engine gráfico 3D desenvolvido para abstrair as

bibliotecas Direct3D e OpenGL a partir de plugins, os quais

também é oferecido ao usuário a opção de implementá-los

por meio de uma interface, permitindo adicionar novas

features, como captura de vídeo ou processamento da cena

gráfica gerada, por exemplo.

Já o Horde3D [19] é um engine de renderização open

source (licenciado pela LGPL - GNU Lesser General Public

License) com enfoque na renderização de efeitos visuais

voltados mais fortemente a jogos. Além de possuir uma

interface de programação simples, o engine suporta a

renderização de uma grande quantidade de objetos

animados. O Horde é apoiado pela Universidade de

Augsburg, na Alemanha, abstraindo o uso de OpenGL nas

aplicações.

Do mesmo modo que o Horde, o Crystal Space [20] foi

desenvolvido para facilitar a construção de jogos 3D em

tempo real, mas pode ser utilizado para implementação de

qualquer tipo de aplicação. Independente de plataforma,

semelhantemente ao Ogre, esse engine possui uma

arquitetura baseada em plugins, conferindo assim ao

programador funcionalidades comuns demandadas no

desenvolvimento de jogos, tais como renderização gráfica

3D, reprodução de som, dentre outras.

C. Engines de som

Desenvolvido em C++ pela Firelight Technologies,

FMOD Ex [21] é um engine de capaz de reproduzir a

maioria dos formatos de som existentes atualmente,

comprimidos ou não. Possuindo sua arquitetura baseada em

plugins, o usuário deste engine pode facilmente adicionar

novos codecs a ele, possibilitando a reprodução de um

formato de som específico.

Compatível com diversas plataformas como Windows,

Linux, Solaris, XBOX360, PlayStation (1, 2, 3) e Nintendo

(Wii, Game Cube), dentre as diversas features que o FMOD

Ex possui, pode-se citar o suporte a sons 3D, oclusão e a

criação de vozes virtuais.

O irrKlang [22], com funcionalidades semelhantes ao

FMOD, como sons 3D e reprodução de diversos formatos,

possui um diferencial importante: suporte a diversas

linguagens de programação. Desenvolvido a partir de uma

arquitetura multiplataforma e modular (plugins), este engine

oferece suporte para C++ e todas as linguagens .NET (C#,

VisualBasic.NET, Delphi.NET, IronPhyton, F#,

Haskell.NET), além de suportar os principais compiladores,

como Visual Studio e GCC.

D. Engines de rede

RakNet [23], ferramenta para comunicação em rede,

oferece diversas features interessantes aos desenvolvedores

de aplicações de tempo real como, por exemplo, jogos

MMOs. Desenvolvido em C/C++, com a utilização deste

engine é possível construir aplicações com tráfego de

informação.

O RakNet oferece ainda gerenciamento automático para

criação, destruição, serialização e envio dos objetos

definidos pelo usuário. Outra feature possuída por essa

ferramenta é possibilidade de chat por stream de vídeo e

som, o qual é utilizado o FMOD Ex para suporte do

segundo.

O Ice (Internet Communication Engine) [24] é um

middleware para comunicações em rede. Essa ferramenta

oferece, assim como o engine de som irrKlang , suporte a

diversas linguagens de programação: C++, linguagens

.NET, Java, Python, Ruby e PHP.

E. Input Engines

Para facilitar a integração entre os diversos dispositivos

de interação para os quais o ambiente virtual foi

desenvolvido, foi desenvolvida ferramenta CIDA (Chaotic

Interaction Device Abstraction) [25].

Possuindo também arquitetura baseada em plugins,

CIDA abrange uma grande variedade de dispositivos, sendo

estes representados em quatro classes: Keyboard (teclados,

controles remotos, celulares), Joystick (joypads,

microfones), Tracker (câmeras e marcadores) e Pointer

Device (mouse, luvas). Dependendo da implementação do

plugin, cada dispositivo pode ser mapeado em classes

diferentes, como, por exemplo, um teclado pode ser

mapeado tanto para a classe Keyboard quanto para a classe

Joystick (podendo ser interpretado como dois joypads).

Já o OIS (Object-Oriented Input System) [26], que era

originalmente parte do engine Ogre, é uma biblioteca para

gerenciamento de dispositivos que suporta diversas

plataformas, dentre elas Windows, Linux e MAC OS.

Existem quatro classificações de dispositivos no OIS:

Keyboard, Mouse, Joystick e Other. Esta última oferece aos

desenvolvedores a possibilidade de definir novos

dispositivos, como por exemplo, o Wiimote, joystick do

Nitendo Wii, ou o Move, joystick para Playstation 3.

F. Engines de jogos

O Torque [27] é um engine, de código fechado, mas

possui tipos de licenças variados dependendo da natureza do

projeto (uso comercial ou educacional). Aos compradores

da licença comercial é oferecido, além da própria

documentação, o seu código fonte.

104104

Page 4: [IEEE 2011 XIII Symposium on Virtual Reality (SVR) - Uberlandia, TBD, Brazil (2011.05.23-2011.05.26)] 2011 XIII Symposium on Virtual Reality - Hydra: Virtual Environments Development

Desenvolvimento de jogos e outras aplicações que

envolvam a criação de mundos virtuais, Torque possui

diversas features, tais como: comunicação baseada em TCP

(Transmission Control Protocol) e UDP (User Datagram

Protocol), suporte a animação por esqueletos, simulação

física, dentre outras, além de oferecer suporte às plataformas

Windows, MAC OS, Linux e XBOX360.

O C4 Engine [28], do mesmo modo que o Torque, foi

concebido para ser uma ferramenta multiplataforma para

jogos, oferecendo suporte para as plataformas Windows e

MAC OS.

C4 oferece features próprias para o desenvolvimento de

jogos de última geração. Algumas delas são: animações,

suporte a portais, volumetric fog, simulação de tecidos e de

superfície de fluidos em tempo real, efeitos de som 3D com

atenuação por oclusão ou distância, rápida comunicação

remota via UDP. C4 também oferece um editor de cena para

jogos desenvolvidos com o ele.

O SteamCell [29] desenvolvido pela DEVCell é um

game engine multiplataforma composto por diversos

módulos, como gráfico, lógico e som, oferecendo

funcionalidades necessárias à implementação de jogos de

última geração.

Tendo seu módulo gráfico construído a partir do engine

Ogre, este engine possui uma arquitetura também baseada

em plugins, permitindo, do mesmo modo, ao desenvolvedor

utilizar apenas os módulos que forem necessários, além de

facilitar a implementação de seus próprios plugins.

O SteamCell oferece ainda um editor completo para

desenvolvimento de jogos utilizando suas funcionalidades,

contemplando desde edição de cenário e simulação física até

Banco de Dados (BD) e Inteligência Artificial (IA). No

entanto, o SteamCell possui apenas licença comercial.

Já o Havok [30], anteriormente apenas um engine para

simulação física, hoje corresponde a um conjunto de engines

possuindo, cada um possuindo um propósito específico,

sendo eles: Havok Physics, Havok Destruction, Havok

Cloth, Havok Behavior, Havok Animation e Havok Script.

Havok Physics, Havok Destruction e Havok Cloth são

relacionados ao controle da simulação física, cada um sendo

responsável, respectivamente por simulação de corpos

rígidos, simulação de destruição de corpos conectados e

simulação de tecidos.

O Havok Amimation é uma ferramenta voltada para

animação de malhas gráficas, enquanto o Havok Behavior é

responsável pelo controle automático dos objetos quanto a

sua movimentação (pathfinding) e o Havok Script é oferece

suporte para a linguagem de script LUA. Todas as

ferramentas do Havok foram desenvolvidas visando a sua

fácil integração.

G. Outros

Um engine estudado que apresenta uma proposta

semelhante ao Hydra é o VR Juggler [31]. Esse engine tem

como objetivo prover a integração entre as diversas

ferramentas componentes, facilitando assim a construção de

ambientes de RV que as utilizem, oferecendo suporte

renderização, som, comunicação, gerenciamento de

concorrência, dentre outras.

Outro exemplo é o FlowVR [32]. Desenvolvido com o

propósito de ser uma solução de RV para clusters, este

engine é composto por três módulos principais: FlowVR

Core, FlowVR Render e VTK FlowVR. O FlowVR Core representa o ponto central de

gerenciamento da aplicação, tendo ele a tarefa de

sincronizar a informação enviada pelos outros dois módulos

e pelos plugins definidos pelo usuário. Já o FlowVR Render

gerencia a informação relacionada à distribuição do

processamento gráfico pelos diversos nós do cluster, além

de gerenciar como a informação gráfica será distribuída

entre os diversos dispositivos de visualização. O VTK FlowVR tem o objetivo de integrar o VTK

(Visualization Tool Kit) [33] com o FlowVR, oferecendo

assim uma camada abstração sobre essa biblioteca. Do

mesmo modo que o VR Juggler, o FlowVR é um projeto

open source.

H. Comparação

Após a análise das ferramentas relacionadas a criação de

ambientes virtuais, foi possível identificar, mesmo algumas

delas possuindo propósitos e arquiteturas diferentes, alguns

componentes recorrentes ao desenvolvimento de aplicações

relacionadas (Figura 1), sendo eles:

Base: Componente que reúne funcionalidades

relacionadas aos elementos básicos presentes

em aplicações de software, sendo encontradas

não apenas em aplicações de ambientes

virtuais. Dentre esses elementos podemos citar:

controle de concorrência (threads, eventos,

dentre outros), gerenciamento de arquivos,

comunicação em rede, funções e estruturas

matemáticas, dentre outros.

Mundo Virtual: Componente que representa a

definição interna do ambiente virtual, sendo ele

dividido ainda em dois sub-componentes:

Mundo Reativo, ambiente que possui a

definição das entidades virtuais que não alteram

conscientemente seu estado e o do ambiente em

que estão inseridas (objetos com simulação

física em geral), e o Mundo Proativo, ambiente

em que as entidades virtuais alteram

conscientemente seu estado e do ambiente em

que estão inseridas (agentes inteligentes).

Interface: Componente que reúne os elementos

responsáveis tanto pela apresentação do

ambiente virtual ao usuário da aplicação

(renderização gráfica, reprodução de sons e

resposta háptica) quanto pela aquisição de

informações presentes no ambiente real

(captura e reconhecimento de vídeo e sons,

além de inputs de dispositivos).

105105

Page 5: [IEEE 2011 XIII Symposium on Virtual Reality (SVR) - Uberlandia, TBD, Brazil (2011.05.23-2011.05.26)] 2011 XIII Symposium on Virtual Reality - Hydra: Virtual Environments Development

Figura 1: Componentes frequentemente encontrados em

ferramentas de desenvolvimento de ambientes virtuais.

A seguir é apresentada uma análise (tabela 1) a respeito

das principais ferramentas estudadas e os componentes

presentes em soluções de ambientes virtuais. A escolha

dessas ferramentas para analise se deu tanto pela quantidade

superior de features quanto por sua facilidade ao utilizá-las.

A marcação das células na tabela segue a seguinte lógica:

células em branco significam que a ferramenta não abrange

aquela funcionalidade, células com tom de cinza significam

que a ferramenta possui as funcionalidades internamente,

mas não liberam interfaces para que o usuário herde, e,

finalizando, células marcadas em preto significam que a

ferramenta abrange aquela funcionalidade e oferece aos

usuários interfaces para eles herdarem.

Tabela 1: Ferramentas X Componentes

III. O FRAMEWORK HYDRA

Uma dificuldade comumente encontrada no

desenvolvimento de aplicações que utilizam ambientes

virtuais é justamente a integração entre os diversos aspectos

presentes, como, por exemplo, a sincronização entre objetos

com modelagem física e seus respectivos representantes

gráficos. Além disso, normalmente cada aspecto é

desenvolvido com o auxílio de ferramentas diferentes (no

exemplo citado, um engine de simulação física e outro

gráfico) e, provavelmente, essas ferramentas possuem

implementações diferentes para o mesmo tipo de

informação, como, no exemplo citado, vetores e matrizes.

Outro problema é a questão da customização do

framework. Em muitos casos a ferramenta não possui todas

as funcionalidades requeridas para o desenvolvimento do

sistema, podendo forçar os desenvolvedores a tomar uma

entre estas duas decisões: alterar diretamente o framework

(seu código fonte) ou utilizar outra ferramenta.

Pensando nisso, este trabalho, executado no Grupo de

Pesquisa em Realidade Virtual e Multimídia do Centro de

Informática da Universidade Federal de Pernambuco

(GRVM CIn UFPE), propõe Hydra [36], uma plataforma

projetada tanto para desenvolvimento rápido de aplicações,

possuindo interfaces intuitivas para desenvolvedores

familiarizados com ambientes virtuais, quanto para

customização de sua própria arquitetura, oferecendo

flexibilidade aos desenvolvedores a respeito da utilização ou

alteração de suas features.

A plataforma Hydra foi desenvolvida de forma modular,

fornecendo tanto uma API para desenvolvimento de

ambientes virtuais compostos (gráfico, som, física, dentre

outros) quanto frameworks e bibliotecas que podem ser

utilizados em separado.

Cada framework que faz parte da plataforma Hydra

abstrai, a partir de plugins, o uso de outras ferramentas

(Figura 2). Os plugins são desenvolvidos a partir de uma

interface para criação do mesmo, possuindo métodos

abstratos que devem ser implementados de modo a tratar os

eventos disparados pelo framework componente a cada vez

que uma funcionalidade é requerida.

Componentes/

Ferramentas

Interface Mundo Virtual Base

Gráfico Sonoro Tátil Mundo

Reativo

Mundo

Proativo Matemática Arquivos Concorrência Rede Outros

Render Captura Reprodução Captura Resposta Captura

PhysX

Ogre

FMOD Ex

Raknet

Ice

CIDA

OIS

Havok

VRJuggler

106106

Page 6: [IEEE 2011 XIII Symposium on Virtual Reality (SVR) - Uberlandia, TBD, Brazil (2011.05.23-2011.05.26)] 2011 XIII Symposium on Virtual Reality - Hydra: Virtual Environments Development

Figura 2: Relação framework/plugins em Hydra

Para facilitar o desenvolvimento, o ambiente virtual de

Hydra é simplificado, utilizando quatro entidades como base

para a construção de ambientes virtuais (Figura 3), sendo

elas: Scene (definição do ambiente em si), Actor (entidades

que representam os objetos presentes no ambiente virtual),

Shape (entidades atômicas que dão forma as entidades

Actor, sendo elas cúbicas, esféricas, cilíndricas, cônicas, em

forma de cápsula e malhas triangulares) e Material

(entidade responsável pela definição dos comportamentos

da entidade Shape, como, por exemplo, resposta a colisões,

atrito, reflexão de luz, interferência na reprodução de sons,

dentre outros).

Figura 3: Ambiente virtual em Hydra

A criação dessas entidades em Hydra se dá a partir de

objetos chamados descriptors, que são estruturas compostas

por atributos relacionados aos diversos ambientes virtuais

suportados por Hydra (Figura 4). Outro detalhe a se destacar

é que, quando o objeto é criado, ele não existe ainda no

ambiente virtual. Entidades criadas por Hydra funcionam

como blueprints, existindo no ambiente virtual apenas

quando instanciadas explicitamente, sendo útil quando o

ambiente virtual possui diversos objetos iguais em poses

diferentes (como um labirinto, que pode possuir diversas

paredes com as mesmas características).

Figura 4: Descriptor para elementos virtuais em Hydra

Outra feature interessante (não encontrada em nenhuma

das ferramentas estudadas) é a possibilidade alterar uma

dada propriedade em diversas entidades ao mesmo tempo

(como, por exemplo, alterar as propriedades de colisão de

todas as pedras presentes no ambiente virtual), para tal é

necessário apenas alterar a propriedade do objeto blueprint

que originou todos os outros.

Nas subseções a seguir são descritos a arquitetura de

Hydra e os frameworks utilizados como base para sua

construção.

A. Arquitetura

Baseado nos componentes presentes em sistemas de

ambientes virtuais identificados na seção II deste trabalho, a

arquitetura de Hydra, construída utilizando o padrão de

arquitetura em camadas e os padrões de projeto facade,

singleton, factory, pool, observer e command, é dividida em

nove módulos (Figura 5), sendo eles:

Basic: Módulo que possui a definição de

entidades que fazem parte do ambiente virtual:

Scene, Actor, Shape e Material.

Physics: Módulo que contém a definição das

diversas conexões (joints) que podem ser

executadas entre as entidades Actor, sendo elas:

fixa, prismática, de distância, de polia, de

revolução, esférica, universal e com seis graus

de liberdade (6DoF - Six Degrees of Freedom).

Render: Módulo que possui a definição de

elementos relacionados com o ambiente virtual

gráfico, sendo eles: luzes, câmeras virtuais,

viewports, janelas e overlays.

Sound: Módulo com a definição da entidade

Sound, responsável tanto pela reprodução de

som 2D quanto 3D.

Device: Módulo que possui a definição da

entidade Device, responsável pelo mapeamento

dos dispositivos utilizados tanto para interação

do usuário com o sistemas (teclados, mouses,

dentre outros) quanto do sistema com o usuário

por meio de renderização háptica (mouses 3D,

luvas, dentre outros).

Factory: Módulo que possui a definição de

todas as entidades construídas utilizando os

padrões factory e pool, responsáveis pela

criação e armazenamento das outras entidades

descritas.

Signals: Módulo que possui as definições dos

eventos utilizados pela plataforma Hydra e seus

frameworks componentes.

Descriptors: Módulo que possui as entidades

responsáveis pela construção dos elementos

virtuais em Hydra.

107107

Page 7: [IEEE 2011 XIII Symposium on Virtual Reality (SVR) - Uberlandia, TBD, Brazil (2011.05.23-2011.05.26)] 2011 XIII Symposium on Virtual Reality - Hydra: Virtual Environments Development

Figura 5: Arquitetura de Hydra

B. Frameworks e bibliotecas componentes

Baseando-se na estrutura de componentes identificada na

seção anterior deste trabalho, a plataforma Hydra foi

construída a partir de um conjunto de frameworks e

bibliotecas Figura 6, podendo estes ser utilizados de forma

separada se o usuário assim desejar. As bibliotecas e

frameworks são:

Util: Biblioteca que oferece um conjunto de

funcionalidades úteis no auxílio ao

desenvolvimento de aplicações em geral, não

apenas focadas em ambientes virtuais. Dentre

as funcionalidades que essa biblioteca possui:

entidades para gerenciamento de tipos em

tempo de compilação, como type lists [34],

funções para tratamento de strings, incluindo

parsing e serializing, e interfaces para

implementação de alguns padrões de projeto,

tais como singleton, factory, pool, observer e

command.

CPPMT: C++ MultiTthread é uma biblioteca

para gerenciamento de concorrência,

oferecendo interfaces para criação de threads,

mutexes, semáforos, escalonadores de eventos,

além de oferecer uma interface genérica para

implementação de plugins.

Resource: Biblioteca para gerenciamento geral

de arquivos, sendo eles compactados (.zip) ou

não. Arquivos compactados são tratados pela

biblioteca tanto como arquivos comuns quanto

como diretórios, permitindo assim acesso

simplificado aos arquivos presentes em seu

interior.

ConnecT: Biblioteca para comunicação remota

via rede, permitindo assim construir aplicações

com ambientes virtuais colaborativos,

oferecendo, por exemplo, envio de mensagens

de controle, chat, dentre outras funcionalidades.

Até o momento essa biblioteca não foi

implementada.

Numerics: Biblioteca que oferece funções e

tipos matemáticos diversos, útil para diversos

tipos de aplicações e essenciais para aquelas

relacionadas a ambientes virtuais, tais como

vetores, matrizes, quaternions, raízes,

potências, dentre outros.

ReActive: Framework para simulação física

que abstrai o uso de outras engines. Mais

detalhes a respeito no trabalho que o originou

[35].

ProActive: Framework para definição de

entidades virtuais autônomas capazes de alterar

conscientemente o seu estado e o estado do

ambiente virtual ao qual estão inseridas. Como

a biblioteca ConnecT, esse framework ainda

não foi implementado.

ALVE: Audio Layer for Virtual Environments

é um framework para construção de ambientes

virtuais sonoros, oferecendo reprodução de sons

tanto 2D quanto 3D, além de possuir features

relacionadas a oclusão de sons por geometrias

presentes no ambiente virtual.

RaVe: Render Abstraction for Virtual

Environments é um framework para construção

de ambientes virtuais gráficos, possuindo

features relacionadas com a exibição da cena

gráfica, captura e reconhecimento do ambiente

real.

TACTILE: Framework para construção de

ambientes virtuais táteis, oferecendo

funcionalidades tanto de controle de

dispositivos de interação usuais (teclado,

mouse, dentre outros), quanto de dispositivos

para respostas hápticas (luvas, mouses 3D,

joysticks, dentre outros).

Figura 6: Frameworks componentes de Hydra

IV. ESTUDO DE CASO

Com a primeira versão da plataforma Hydra concluída,

foram construídos, como estudos de caso, alguns plugins

para seus frameworks componentes e uma aplicação teste.

Nas subseções a seguir são descritos detalhes de seus

respectivos desenvolvimentos e constatações obtidas.

108108

Page 8: [IEEE 2011 XIII Symposium on Virtual Reality (SVR) - Uberlandia, TBD, Brazil (2011.05.23-2011.05.26)] 2011 XIII Symposium on Virtual Reality - Hydra: Virtual Environments Development

A. Descrição do estudo de caso

Hydra é composto por um conjunto de frameworks e

ferramentas com o propósito de facilitar o desenvolvimento

rápido de aplicações e a customização de seu próprio

funcionamento. Por esse motivo, a arquitetura de Hydra e de

seus componentes provêem interfaces de fácil entendimento

aos usuários (o que facilita o desenvolvimento de

aplicações), mas também permitem o desenvolvimento de

plugins (o que oferece ao usuário meios de customizar seu

funcionamento).

Cada framework desenvolvido para os componentes

Interface e Mundo Virtual permite a construção de seus

respectivos ambientes virtuais, tendo as suas

funcionalidades distribuídas entre seus plugins. Nas

subseções a seguir serão descritos os plugins desenvolvidos,

neste trabalho, para cada framework componente de Hydra

(o plugin desenvolvido para o ReActive foi descrito em 10).

1) RaVe

RaVe possui três funcionalidades principais relacionadas

ao ambiente virtual gráfico: captura e reconhecimento do

ambiente real e exibição do ambiente gráfico, mas para a

aplicação teste implementada foi utilizado apenas um plugin

para exibição do ambiente gráfico.

O plugin para o engine Ogre foi desenvolvido com o

propósito de representar o ambiente virtual gráfico em si,

com as entidades definidas em RaVe mapeadas em objetos

pertencentes a ele. Entidades Material de RaVe foram

mapeadas para entidades Material do Ogre, mas a criação

delas se dá apenas a partir de scripts providos pelo segundo,

não permitindo ao usuário definir os atributos das entidades

Material a partir do código.

Entidades Shape e Actor de RaVe são mapeadas para

entidades SceneNode do Ogre. O engine Ogre segue uma

abordagem de gerenciamento hierárquico da cena,

diferentemente de RaVe, em que seus objetos virtuais

possuem apenas ―dois níveis‖. O primeiro nível é

representado pelas entidades Actor e o segundo nível por

―n‖ entidades Shape.

Cada entidade Shape é construída a partir de um arquivo

.mesh, utilizado pelo Ogre para definir seus objetos gráficos,

possuindo entidades que representam formas básicas (cubo,

esfera, capsula, cilindro e cone) e uma entidade para

construção de objetos complexos (malhas triangulares).

Uma abordagem semelhante à estrutura Shape/Actor é

adotada em relação às entidades Overlay de RaVe.

Entidades Overlay do Ogre seguem uma organização similar

a das entidades SceneNode, ou seja, uma entidade Overlay

do Ogre é composta por diversas entidades OverlayElement

que, por sua vez, também podem ser compostas por diversas

entidades desse tipo. Em RaVe entidades OverlayElement

são atômicas, não sendo compostas por nenhuma outra

entidade. As demais entidades presentes em RaVe (Light,

Scene, Viewport, Camera e Window) são mapeadas

diretamente para seus representantes no Ogre.

2) ALVE

Para o ambiente virtual sonoro presente no componente

de Interface foi desenvolvido, até o momento, apenas um

plugin, este definindo reprodução de sons e o ambiente

virtual sonoro a partir do engine FMOD EX [21].

FMOD Ex oferece diversos tipos de formatos para

reprodução. Para a execução de sons, o engine utiliza o

conceito de canais, cada um deles funcionando como

contextos de reprodução independente. No caso de ALVE

não existe nenhuma entidade que represente a entidade

Chanel de FMOD EX, a abordagem utilizada até o momento

ativa uma dessas entidades para cada entidade Sound que

for criada.

O ambiente virtual de FMOD EX não possui entidades

Material, Shape ou Actor. A criação de elementos que

interferem no som da cena é feita a partir de conjuntos de

polígonos 2D que, quando construídos corretamente,

formam geometrias 3D. Cada uma dessas geometrias possui

atributos relacionados com a interação entre elas e os sons

reproduzidos no ambiente.

Para o mapeamento da entidade Material de ALVE, no

contexto do FMOD EX, foram utilizadas as constantes

relacionadas à reprodução de sons pertencentes às entidades

Geometry do engine. A entidade Shape de ALVE é

mapeada para a entidade Geometry de FMOD EX

diretamente, com exceção apenas das constantes definidas já

na entidade Material, enquanto a entidade Actor de ALVE

não possui equivalente no engine, sendo então definida

internamente pelo plugin como um conjunto de entidades

Geometry. A entidade Scene de ALVE também não possui

correspondente direto no FMOD EX, sendo ela mapeada

para a entidade System.

3) TACTILE

TACTILE oferece duas possibilidades para a construção

de plugins: uma relacionada ao controle de dispositivos em

geral, como teclados, mouses, luvas, dentre outros, e a outra

é a respeito da criação do ambiente virtual tátil, ou seja, com

as entidades relacionadas à interação direta do usuário por

meio de dispositivos com resposta háptica.

Até o momento, pela impossibilidade de acesso a

dispositivos hápticos, foi desenvolvido apenas o plugin para

gerenciamento de dispositivos de interação em geral,

utilizando a ferramenta OIS, devido a simplicidade de suas

interfaces.

O plugin desenvolvido para essa biblioteca oferece

suporte apenas, até o momento, a teclados e mouses. Para

executar o mapeamento das entidades suportadas pelo OIS,

a entidade Device de TACTILE foi mapeada para as

entidades Keyboard e Mouse, dependendo do dispositivo a

ser criado. A cada ciclo da simulação, o gerenciador de

eventos de TACTILE verifica o estado dos dispositivos

sendo utilizados e então dispara um evento para cada um

deles, informando seu novo estado, este podendo ser

utilizado pelo usuário para realizar as tarefas de interação

dele com a aplicação.

109109

Page 9: [IEEE 2011 XIII Symposium on Virtual Reality (SVR) - Uberlandia, TBD, Brazil (2011.05.23-2011.05.26)] 2011 XIII Symposium on Virtual Reality - Hydra: Virtual Environments Development

4) Aplicação teste

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 físico).

O ambiente virtual (Figura 7) é composto por uma cena

com características gráficas (céu noturno e sem iluminação

ambiente), físicas (gravidade de 9.8 m/s²) e sonoras

(atenuação do som ocorre de forma linear), um plano com

características físicas (densidade, atrito, resposta a colisões,

dentre outras) e gráficas (textura de cerâmica), e uma

estatua da deusa grega Atena com características gráficas

(textura de rocha) e físicas (mesmas do plano), além de

possuir três fontes de luz pontuais com cores diferentes

(tons de laranja, magenta e verde, respectivamente).

Figura 7: Ambiente virtual da aplicação teste

A estátua de Atena pode adotar características diferentes

se o usuário desejar. Além das características padrão já

descritas, a estátua pode apresentar ainda outros dois

comportamentos: o primeiro faz a estátua ter ausência de

comportamento físico, ou seja, ela não interage mais com

outros objetos físicos presentes no ambiente, e como

comportamento visual ela apresenta 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, e como comportamento físico ela passa a

funcionar como um force Field, ou seja, qualquer objeto

com comportamento físico lançado contra ela é repelido,

fazendo-o mudar de trajetória.

B. Resultados

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, a aplicação foi construída

utilizando plugins para definição dos ambientes gráfico

(Ogre), sonoro (FMOD EX) e físico (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.

V. CONCLUSÃO

Este trabalho obteve como resultado a definição de uma

arquitetura e a implementação de uma plataforma para

desenvolvimento de ambientes virtuais em geral (RV, RA,

RM, Jogos), mas com enfoque em dois objetivos:

desenvolvimento rápido de aplicações, oferecendo um

ambiente virtual unificado e interfaces intuitivas a usuários

com experiência no desenvolvimento deste tipo de

aplicação, e customização da plataforma, permitindo aos

usuários definir o modo como as features presentes em

Hydra são executadas, sendo para isso oferecido a eles

interfaces para construção de plugins, os quais se

comunicam com a plataforma a partir do disparo e

processamento de eventos.

Mesmo tendo atendido seus objetivos, Hydra ainda

encontra-se em fase de protótipo, sendo necessário maior

refinamento tanto em sua estrutura central quanto nos

frameworks que o compõem. Além disso, nem todas as

funcionalidades relacionadas com o desenvolvimento de

ambientes virtuais foram contempladas nesta primeira

versão do protótipo.

Como trabalhos futuros, serão realizadas reavaliações da

estrutura de Hydra, verificando erros ou inconsistências

presentes em sua arquitetura. Para tal serão realizados novos

testes com usuários, avaliando os principais pontos fracos,

além de sugestões diversas para o aperfeiçoamento dos seus

frameworks componentes, e avaliação em relação a outras

ferramentas existentes (tanto soluções fechadas, como

110110

Page 10: [IEEE 2011 XIII Symposium on Virtual Reality (SVR) - Uberlandia, TBD, Brazil (2011.05.23-2011.05.26)] 2011 XIII Symposium on Virtual Reality - Hydra: Virtual Environments Development

engines de RV, Jogos, dentre outros, quanto na composição

de ferramentas para diferentes objetivos, como gráfico, som,

física, dentre outros), utilizando como métricas principais o

desempenho obtido (fps, consumo de memória), linhas de

código escritas, tempo levado para a implementação de

aplicações, dentre outras que ainda serão definidas.

AGRADECIMENTOS

Os autores agradecem ao CNPq pelo financiamento

parcial deste trabalho por meio de uma bolsa de mestrado

acadêmico.

REFERÊNCIAS

[1] J. Ferwerda, ―Three Varieties of Realism in Computer Graphics‖, SPIE Human Vision and Electronic Imaging, 2003, pp. 290-297.

[2] NVIDIA. NVIDIA Site. Disponível em: <http://www.nvidia.com/content/global/global.php>. Acesso em 01 Jan. 2011.

[3] CRYTEC. CRYTEC Site. Disponível em: <http://www.crytek.com>. Acesso em 01 Jan. 2011.

[4] Pixar. Pixar Site. Disponível em: <http://www.pixar.com>. Acesso em 01 Jan. 2011.

[5] KASS, Michael; SOLOMOM, Justin. Smoothed local histogram filters. In: Special Interest Group on Graphics and Interactive Techniques (SIGGRAPH), 2010, Nova York.

[6] MITTRING, Martin. Finding next gen: CryEngine 2. In: Special Interest Group on Graphics and Interactive Techniques (SIGGRAPH), 2007, Nova York.

[7] BAVOIL, Louis; SAINZ, Miguel; DIMITROV, Rouslan. NVIDIA Corporation. Image-space horizon-based ambient occlusion. In: Special Interest Group on Graphics and Interactive Techniques (SIGGRAPH), 2008, Nova York.

[8] Silent Hill. Silent Hill Site. Disponível em: <http://www.konami.com/games/silenthill/silenthill8>. Acesso em 01 Jan. 2011.

[9] Nintendo Company, Ltd. Kyoto. Wiiimote for Wii.

[10] Sony Corporation. Tokyo. Move for Playstation 3.

[11] Microsoft Corp. Redmond WA. Kinect for Xbox 360.

[12] ALMEIDA, G. ; FERREIRA, F. ; SANTOS, A. L. ; TEICHRIEB, Veronica ; KELNER, J. ; SETTON, E. . Sistema de Visualização Científica em Tempo Real para Aplicações de Engenharia. In: XXIX CILAMCE - Congresso Ibero Latino Americano de Métodos Computacionais em Engenharia, 2008, Maceió. Anais do CILAMCE 2008, 2008.

[13] BARELLA, Antonio; CARRASCOSA, Carlos; BOTTI, Vicente. Agent architectures for intelligent virtual environments. In: Proc. IEEE/WIC/ACM Int. Conf. Intell. Agent Technol., 2007, pp. 532–535.

[14] COUMANS, Erwin; Optimizing Proximity Queries for CPU, SPU and GPU bullet. In: Special Interest Group on Graphicics and Interactive Techniques. Los Angeles, 2010.

[15] M. TENNOE, Lambert; T. HENSSONOW Mariam; F. SURHONE, Susan. OPEN DYNAMICS ENGINE. 1ª Edição. BETASCRIPT PUBLISHING. 2010. 108 p.

[16] Newton. Newton Game Dynamics. Disponível em: < http://www.newtondynamics.com/> Acesso em: 15 de setembro de

2011.

[17] HONGPAN Niu; YONG Gao; ZHONGMING, Hou. Application research of PhysX engine in virtual environment. In: Audio Language and Image Processing (ICALIP), Shangai, 2010.

[18] KERGER, Felix. OGRE 3D 1.7 Beginner's Guide. Packt Publishing, Novembro 2010, Birmingham, United Kingdom

[19] Horde. Horde: Next-Generation Graphics Engine. Disponível em: < http://www.horde3d.org> Acesso em: 15 de fevereiro de 2011.

[20] TYBERGHEIN Jorrit; et al. Developing video games and virtual environments with the Crystal Space engine, DEnG-VE workshop, Engineering Interactive Computing Systems (EICS), Berlin, 2010.

[21] FMOD Ex, FMOD Ex Site, Disponível em: <http://www.fmod.org/index.php/fmod>. Acesso em: 01 Fev. 2011.

[22] irrKang. irrKlang Site. Disponível em: < http://www.ambiera.com/irrklang/> Acesso em: 15 de fevereiro de

2011.

[23] RakNet. RakNet Site. Disponível em: <

http://www.jenkinssoftware.com/> Acesso em: 15 de fevereiro de

2011.

[24] Xu, S; et al. Comparing the performance of EPICS Channel Access with a new implementation based on ICE (the Internet Communications Engine). In: Real Time Conference. Beijing , 2009.

[25] FARIAS, Thiago ; TEIXEIRA, João Marcelo ; RODRIGUES, Carlos Eduardo ; PESSOA, Saulo ; COSTA, Nacha ; TEICHRIEB, Veronica ; KELNER, Judith . CIDA: an interaction devices management platform. In: Symposium on Virtual Reality, 2006, Belém. Porto Alegre : SBC, 2006. p. 271-284.

[26] OIS, OIS Site. Disponível em: <http://sourceforge.net/projects/wgois/>. Acesso em: 15 Fev 2011.

[27] MAURINA III, Edward F. Multiplayer Gaming and Engine Coding for the Torque Game Engine. 1ª edição. A K Peters. 2008. 450 p..

[28] C4. C4 Engine. Disponível em: < http://www.terathon.com> Acesso em: 15 de fevereiro de 2011.

[29] SteamCell. SteamCell Game Engine. Disponível em: <

http://www.devcellsoftware.com> Acesso em: 15 de fevereiro de

2010.

[30] Havok, Havok Site, Disponível em: <http://www.havok.com/>. Acesso em: 01 Fev. 2011.

[31] BIERBAUM, Allen; et al. VR juggler: a virtual platform for virtual reality application development. In: Special Interest Group on Graphics and Interactive Techniques Asia (SIGGRAPH-Asia), 2008, Singapore.

[32] ARCILA, Thomas; et al. FlowVR: A Framework for Distributed Virtual Reality Applications. In: Journees de l'AFRV, 2006, Rocquencourt.

[33] SCHROEDER, Will; et al. The Visualization Toolkit An Object-Oriented Approach To 3D Graphics. 4ª edição. Kitware Inc. publishers. 2006. 528 p.

[34] ALEXANDRESCU, Andrei. Modern C++ Design: Generic Programming and Design Patterns Applied. 1ª Edição. Addison Wesle

[35] ALMEIDA, Gabriel Fernandes de ; Santos, Artur ; ANJOS FILHO, Ronaldo Ferreira dos ; Breyer, Felipe ; Almeida, Mozart Williams S. ; FARIAS, Rodrigo ; TEICHRIEB, Veronica ; KELNER, Judith . ReActive Engine Reativo de Física. In: Symposium on Virtual and Augmented Reality, 2008, João Pessoa. Symposium on Virtual and Augmented Reality. Recife : Gráfica e Copiadora Nacional, 2008. p. 251-260.

[36] Anjos Filho, R ; ALMEIDA, Gabriel Fernandes de ; TEICHRIEB, Veronica ; KELNER, J. . Hydra: Engine Modular e Extensível para Construção de Ambientes Virtuais. In: V Workshop de Realidade Virtual e Aumentada, 2008, Bauru-SP. V Workshop de Realidade Virtual e Aumentada, 2008.

111111