uma ferramenta de autoria de ambientes virtuais adaptável ... · adaptável a diferentes motores...

12
Uma Ferramenta de Autoria de Ambientes Virtuais Adaptável a Diferentes Motores Gráficos Creto A. Vidal, George A. M. Gomes, Glaudiney M. Mendonça-Junior, Humberto O. O. Gomes e Joaquim B. Cavalcante-Neto CRAb: Computer graphics, virtual Reality and Animation Departamento de Computação Universidade Federal do Ceará 60455-760 – Fortaleza – CE – Brasil {cvidal, george, gney, humberto, joaquimb}@crab.ufc.br Abstract. The construction of a virtual environment involves a series of tasks that demand time and specialized knowledge on the author. Thus, robust tools to aid the author with his work are of the utmost importance. The majority of the existing tools is geared only toward the creation of the static parts of the virtual environments, and are lacking in capabilities for manipulation and configuration of the dynamic elements. The main focus of this work is the specification of an authoring tool, which, through a simple and intuitive interface, allows users to edit their own virtual worlds. Another important feature of the tool is its uncoupling from the graphics engine used. In fact, through a properly designed intermediate layer, the tool can be adapted to work with different graphic engines. Resumo. As etapas de construção de um ambiente virtual são tarefas que demandam tempo e conhecimento por parte do autor. Por conseguinte, ferramentas robustas que o auxiliem nesse processo são indispensáveis. A maioria das ferramentas existentes é voltada para a criação apenas das partes estáticas dos ambientes virtuais, deixando a desejar quanto aos aspectos de manipulação e configuração dos elementos dinâmicos. Nesse trabalho, é apresentada a especificação de uma ferramenta de autoria que possui uma interface simples e intuitiva, permitindo a um usuário sem conhecimentos técnicos editar seus próprios mundos. Além disso, ela é desvinculada do motor gráfico utilizado graças a uma camada intermediária que, por ser suficientemente genérica, permite a adaptação a diferentes motores. 1. Introdução Ambientes virtuais em rede (NVE – Networked Virtual Environments) permitem a interação entre usuários remotos em modelos computacionais tridimensionais de um ambiente real ou imaginário. No desenvolvimento de um NVE, são aglutinadas tecnologias de três áreas da computação: processamento distribuído, computação gráfica e realidade virtual [Durlach & Mavor, 1995]. Segundo Çapin et al. (1999), Realidade Virtual (RV) pode ser definida como a tecnologia capaz de transportar um indivíduo para um ambiente diferente do real, sem movê-lo fisicamente, manipulando as informações destinadas aos órgãos sensoriais humanos de tal maneira que o ambiente percebido seja associado ao ambiente virtual desejado e não ao ambiente real. Com essa tecnologia, pode-se criar uma grande diversidade de ambientes apropriados aos mais variados tipos de aplicações. De fato, o

Upload: buidan

Post on 29-Nov-2018

214 views

Category:

Documents


0 download

TRANSCRIPT

Uma Ferramenta de Autoria de Ambientes Virtuais Adaptável a Diferentes Motores Gráficos

Creto A. Vidal, George A. M. Gomes, Glaudiney M. Mendonça-Junior, Humberto O. O. Gomes e Joaquim B. Cavalcante-Neto

CRAb: Computer graphics, virtual Reality and Animation Departamento de Computação Universidade Federal do Ceará

60455-760 – Fortaleza – CE – Brasil

{cvidal, george, gney, humberto, joaquimb}@crab.ufc.br

Abstract. The construction of a virtual environment involves a series of tasks that demand time and specialized knowledge on the author. Thus, robust tools to aid the author with his work are of the utmost importance. The majority of the existing tools is geared only toward the creation of the static parts of the virtual environments, and are lacking in capabilities for manipulation and configuration of the dynamic elements. The main focus of this work is the specification of an authoring tool, which, through a simple and intuitive interface, allows users to edit their own virtual worlds. Another important feature of the tool is its uncoupling from the graphics engine used. In fact, through a properly designed intermediate layer, the tool can be adapted to work with different graphic engines.

Resumo. As etapas de construção de um ambiente virtual são tarefas que demandam tempo e conhecimento por parte do autor. Por conseguinte, ferramentas robustas que o auxiliem nesse processo são indispensáveis. A maioria das ferramentas existentes é voltada para a criação apenas das partes estáticas dos ambientes virtuais, deixando a desejar quanto aos aspectos de manipulação e configuração dos elementos dinâmicos. Nesse trabalho, é apresentada a especificação de uma ferramenta de autoria que possui uma interface simples e intuitiva, permitindo a um usuário sem conhecimentos técnicos editar seus próprios mundos. Além disso, ela é desvinculada do motor gráfico utilizado graças a uma camada intermediária que, por ser suficientemente genérica, permite a adaptação a diferentes motores.

1. Introdução

Ambientes virtuais em rede (NVE – Networked Virtual Environments) permitem a interação entre usuários remotos em modelos computacionais tridimensionais de um ambiente real ou imaginário. No desenvolvimento de um NVE, são aglutinadas tecnologias de três áreas da computação: processamento distribuído, computação gráfica e realidade virtual [Durlach & Mavor, 1995].

Segundo Çapin et al. (1999), Realidade Virtual (RV) pode ser definida como a tecnologia capaz de transportar um indivíduo para um ambiente diferente do real, sem movê-lo fisicamente, manipulando as informações destinadas aos órgãos sensoriais humanos de tal maneira que o ambiente percebido seja associado ao ambiente virtual desejado e não ao ambiente real. Com essa tecnologia, pode-se criar uma grande diversidade de ambientes apropriados aos mais variados tipos de aplicações. De fato, o

uso de ambientes virtuais está sendo difundido pelas diversas áreas do conhecimento. Assim, atualmente, podem-se observar aplicações de RV em áreas tais como educação e cultura [Vidal et al., 2003; Kaufmann et al., 2000], medicina [Freitas et al., 2003], arquitetura [Silva et al., 2003], entretenimento [Leite et al., 2002; Cardoso et al., 2003], entre outras.

As aplicações de RV são projetadas de forma a proporcionar ao usuário sensações de imersão, no ambiente virtual, compatíveis com aquelas que ele experimenta no mundo real. Segundo Slater et al. (1994), um ambiente imersivo ideal é aquele onde todos os órgãos sensoriais do usuário são estimulados de maneira contínua pelo sistema computacional. Os sistemas imersivos atuais fazem uso de hardware especial de custo ainda muito elevado. Os sistemas chamados semi-imersivos (Desktop Virtual Reality), por sua vez, utilizam computadores comuns e não necessitam de hardware especial. No entanto, proporcionam ao usuário um nível de imersão mais modesto.

O modelo de NVE utilizado nesse trabalho é semi-imersivo, e todos os elementos gráficos do ambiente são armazenados previamente nos computadores dos usuários de forma que o acesso a esses elementos possa ser feito através de troca de mensagens simples, minimizando o tráfego na rede. O gerenciamento dos elementos gráficos do ambiente virtual é feito através de um motor gráfico que se comunica indiretamente com o NVE através de uma interface. Essa comunicação indireta permite que o motor gráfico possa ser substituído por outro sem a necessidade de alterações na estrutura do NVE.

Os ambientes virtuais possuem estrutura tridimensional própria, denominada cenário nesse trabalho. No cenário, estão inseridos objetos estáticos, objetos interativos, personagens virtuais controlados por computador e personagens virtuais controlados pelos usuários [Csordas, 2000]. Essa estrutura, os objetos estáticos e interativos e os personagens virtuais são todos criados a priori e distribuídos aos usuários do sistema através da Internet ou de uma mídia como o CD. Os estados do cenário e dos objetos estáticos não serão alterados durante a utilização do ambiente virtual. Os elementos dinâmicos – objetos interativos e personagens virtuais – podem interagir entre si e alterar seus estados.

As etapas de construção de um ambiente virtual – criação do mundo virtual, disposição dos elementos no mundo, configuração dos personagens virtuais e dos objetos interativos, e atribuição de comportamento a esses objetos interativos – não são triviais. Por conseguinte, ferramentas robustas que auxiliem o autor nesse processo de criação são indispensáveis. A maioria das ferramentas existentes é voltada para a criação apenas das partes estáticas dos ambientes virtuais, deixando a desejar quanto aos aspectos de manipulação e configuração dos elementos dinâmicos.

Alguns dos problemas mais comuns encontrados por um autor de ambientes virtuais são: compatibilidade de escala entre os elementos dinâmicos incluídos a posteriori e o mundo virtual construído a priori; posicionamento dos elementos dinâmicos, nascedouros e portais entre mundos virtuais; definição de hierarquias de agrupamento de elementos; e definição e atribuição de comportamento aos elementos dinâmicos.

Compatibilidade de Escala. Como os elementos dinâmicos são criados separadamente dos mundos virtuais onde serão inseridos, existe a necessidade de se manter a proporção entre eles. Assim, na fase de edição, deve-se avaliar o tamanho dos elementos dinâmicos em relação a cada mundo virtual no qual serão inseridos.

Posicionamento. O posicionamento dos elementos estáticos e dinâmicos é uma tarefa que também requer o auxílio de ferramentas que facilitem o trabalho de construção de ambientes virtuais. A posição de um elemento pode ser definida de forma fixa, através da simples atribuição de uma localização para o mesmo; ou através de nascedouros, que são posições no mundo virtual onde objetos ou personagens virtuais podem aparecer. Uma vez definido um nascedouro e configurados os tipos de elementos que podem aparecer naquela posição, o elemento só será posicionado quando da utilização do sistema. Isso permite, por exemplo, que se possa definir mais de um nascedouro para um mesmo elemento e deixar a cargo do sistema do NVE decidir em qual deles esse elemento irá aparecer quando o mundo for utilizado. Ainda relacionado ao problema de assistência ao posicionamento, está a definição da localização dos chamados portais, elementos por meio dos quais o usuário é transportado a um outro mundo virtual.

Hierarquias de agrupamento. Elementos dinâmicos podem estar vinculados entre si, formando agrupamentos hierárquicos. Em geral, alterações feitas ao elemento mestre são propagadas aos elementos vinculados. No entanto, é possível configurar alterações que, mantendo a estrutura do agrupamento, afetem elementos individuais do mesmo.

Definição e atribuição de comportamento. Alguns elementos dinâmicos possuem comportamento, e ações são associadas a tal comportamento. Há necessidade, portanto, de uma ferramenta de auxílio tanto para a definição dos comportamentos e de suas ações, quanto para atribuí-los aos elementos.

A existência de ferramentas de auxílio à construção e à edição de ambientes virtuais é importante, não apenas para a equipe especializada em criar ambientes virtuais, como também para o usuário final, o qual pode criar seus próprios ambientes virtuais ou editar os existentes. Isso permite ampliar o número de ambientes virtuais disponíveis, além de aumentar a motivação dos usuários finais do sistema, por torná-los agentes modificadores dos ambientes que exploram.

Nesse trabalho, é apresentada a especificação de uma ferramenta de autoria, desenvolvida para auxiliar o responsável pela criação de ambientes virtuais. A ferramenta possui uma interface simples e intuitiva que permite ao usuário final editar seus próprios mundos. Ela não se propõe a substituir ferramentas de edição já consolidadas no mercado, mas sim disponibilizar algumas funcionalidades adicionais. Ela é desvinculada do motor gráfico utilizado graças a uma camada intermediária que, por ser suficientemente genérica, permite a adaptação a diferentes motores.

O restante desse trabalho está dividido como se segue. Na Seção 2, são apresentados a especificação da ferramenta de autoria de ambientes virtuais e seus recursos. Na Seção 3, define-se a camada intermediária entre a ferramenta e o motor gráfico, suas classes e suas funcionalidades. Na Seção 4, são apresentadas algumas considerações sobre a implementação da ferramenta de autoria, utilizando uma versão inicial da camada intermediária. Por fim, algumas conclusões e trabalhos futuros são apresentados na Seção 5.

2. Ferramenta de Autoria

Segundo Valle Filho et al. (2000), ferramentas de autoria são softwares que devem ser operados com facilidade, sem necessitar de profundos conhecimentos de programação, para autores criarem seus próprios conteúdos.

A ferramenta de autoria especificada nesse trabalho visa auxiliar o autor nas etapas de construção de um ambiente virtual tais como: criação do mundo virtual, disposição e manipulação de elementos estáticos e dinâmicos no mundo, configuração dos personagens virtuais controlados por usuários, definição e atribuição de comportamentos a objetos dinâmicos, e por último, a publicação do ambiente virtual. Para isso, ela dispõe de biblioteca de elementos e recursos de atribuição de comportamento, de controle de objetos e de publicação de arquivos.

Bibliotecas de elementos. Facilita a criação do mundo virtual, oferecendo ao autor um conjunto de elementos pré-elaborados organizados em cinco categorias: modelos de cenários, objetos estáticos e dinâmicos, materiais, sons, e personagens virtuais controlados por computador. O autor pode adicionar elementos construídos com outras ferramentas às bibliotecas existentes.

Recurso de Atribuição de Comportamento. Permite que o autor atribua um comportamento a um objeto dinâmico e defina as ações associadas a cada comportamento.

Recurso de controle de objetos. Permite que o autor organize os objetos estáticos e dinâmicos no mundo virtual, utilizando-se das funcionalidades de movimentação, escala, alinhamento, rotação, agrupamento de objetos, entre outras. Esse recurso também permite configurar portais e nascedouros.

Recurso de publicação de arquivos. Essencial para publicação do mundo virtual. Arquivos são gerados com a especificação dos elementos componentes do mundo virtual e de seus respectivos estados.

Para que o maior número possível de usuários seja capaz de criar e publicar seus mundos virtuais, a especificação da ferramenta deve levar em conta aspectos de ergonomia e de usabilidade. Assim, a utilização dos recursos disponíveis deve ocorrer de uma maneira intuitiva através de uma interface amigável, requerendo um conhecimento mínimo sobre programação e computação gráfica. Além disso, é interessante que a ferramenta disponibilize documentação de ajuda, auxiliando o autor a utilizar suas principais funcionalidades [Andrade, 1999].

2.1. Bibliotecas

A utilização de bibliotecas aumenta a produtividade e evita perda de esforços. Elas disponibilizam um conjunto de elementos já elaborados, que podem, de maneira fácil e rápida, ser utilizados para construir um novo ambiente virtual.

Na ferramenta de autoria apresentada nesse trabalho, a adição de novos elementos à biblioteca é trivial. Porém, as funcionalidades para construção de elementos são bastante limitadas, principalmente, quando se tratam de personagens virtuais controlados por computador. Os elementos estão organizados nos seguintes cinco tipos de bibliotecas:

Biblioteca de cenários. Nessa biblioteca, estão disponíveis os modelos pré-elaborados que podem ser utilizados na construção de um novo mundo virtual. É possível inserir nessa biblioteca um modelo criado através de outra ferramenta, desde que o motor gráfico utilizado pela ferramenta suporte o formato desse novo modelo ou possa ser convertido em um formato suportado.

Biblioteca de objetos. Nessa biblioteca, estão disponíveis os objetos estáticos (paredes, por exemplo) e dinâmicos (portas que se abrem e fecham ao comando do usuário, por exemplo) que o autor pode incluir em um mundo virtual construído a priori. Assim como na biblioteca de cenários, o autor também pode adicionar novos objetos criados com o auxílio de outras ferramentas, respeitados os formatos suportados.

Biblioteca de materiais. Nessa biblioteca, encontra-se uma coletânea de materiais que o autor pode aplicar aos objetos inseridos no mundo virtual. Cada objeto possui seu próprio conjunto de materiais, por exemplo, um personagem negro recebe um material de pele negra e uma série de materiais para representar seu estilo de cabelo e sua vestimenta. É importante destacar que os materiais devem ser elaborados previamente para um objeto específico a fim de evitar problemas de mapeamento.

Biblioteca de sons. Nessa biblioteca, estão armazenados os elementos sonoros, dos quais o autor pode dispor para aumentar o realismo dos ambientes virtuais. O autor pode adicionar sons ininterruptos, tais como o emitido pelo compressor de uma geladeira ou por um ventilador; ou associar sons a ações de objetos como, por exemplo, o som de uma porta batendo ou se abrindo.

Biblioteca de personagens virtuais controlados por computador. Nessa biblioteca, estão armazenados os personagens controlados por computador, chamados de simulóides [Csordas, 2000], que devem ser inseridos em um ambiente virtual sempre que o autor quiser aumentar a interação ou disponibilizar o acesso a recursos externos ao ambiente virtual. Por exemplo, ao criar um ambiente virtual de uma biblioteca, o autor poderá inserir um simulóide bibliotecário que interligue serviços de dicionários eletrônicos e enciclopédias; já em uma sala virtual de matemática, poderá inserir um simulóide que se comunique com o software Mathematica (software para computação simbólica) e auxilie os alunos da sala [Vidal et al., 2000].

2.2. Comportamentos

O comportamento é definido como um conjunto de ações que um objeto executa quando exposto a um determinado estímulo, podendo, ou não, mudar seu estado. Atribuição de comportamentos a objetos permite uma interatividade maior do usuário com o ambiente virtual. Na ferramenta especificada, somente os objetos dinâmicos possuem comportamentos. Por exemplo, quando um usuário, através de uma interação com o objeto dinâmico ‘porta’, provocar o estímulo para que ele se abra, o objeto executará a ação ‘abrir’ e seu estado será alterado para ‘porta aberta’.

Segundo o número de reações, os comportamentos podem ser classificados como simples ou complexos. Simples são comportamentos onde só existe uma única reação do objeto a um dado estímulo. Por exemplo, abrir uma porta que está fechada, ou fechar uma que está aberta. Complexos são comportamentos onde, a um dado estímulo, corresponde uma seqüência de reações. Por exemplo, trancar uma porta envolve a ação de fechar e travar a porta.

Segundo o tipo de estímulo, os comportamentos podem ser classificados como: reativo, proativo e simulado. Quando o objeto reage a um estímulo causado por um fator externo, o comportamento é denominado reativo. Por exemplo, uma porta que se abre à aproximação de um avatar. Quando o estímulo é agendado, o comportamento associado é denominado proativo. Por exemplo, o ponteiro de minuto de um relógio de parede pode ser agendado para mover-se a cada minuto. Quando o estímulo resulta de uma simulação, o comportamento associado é denominado simulado. Por exemplo, um simulóide professor de matemática executa a ação de indicar o quadro quando um gráfico é gerado pelo software Mathematica [Santos et al., 2001].

2.3. Controle de Objetos

Os recursos de controle de objetos oferecidos pela ferramenta de autoria permitem que o autor posicione e manipule os objetos inseridos no cenário de forma eficiente, minimizando o tempo de construção de um mundo virtual. Eles também facilitam o trabalho de configuração do ambiente, liberando o autor da necessidade de recorrer a uma linguagem de programação. Esses recursos estão divididos em quatro categorias:

Manipulação de objetos. Nessa categoria, estão, por exemplo, os recursos para mover (translação) e girar (rotação), com os quais o autor pode posicionar os objetos no mundo virtual, e o recurso de escala que permite alterar as proporções dos objetos em relação ao ambiente, entre outros.

Agrupamento. Reúne os recursos que permitem o autor agrupar objetos, formando objetos compostos, que posteriormente podem ser adicionados à biblioteca. Os objetos compostos podem ser formados por objetos simples ou por outros objetos compostos, criando-se, assim, uma hierarquia. Dessa forma, quando o autor altera um objeto composto também altera os objetos a ele agregados.

Alinhamento. Nessa categoria, estão, por exemplo, os recursos que evitam a sobreposição de objetos sólidos (detecção de colisão), e os recursos de atração (‘imã’), entre outros. Esses recursos permitem um posicionamento rápido e simples de objetos no cenário.

Configuração de portais e nascedouros. Nessa categoria, estão os recursos que auxiliam o autor a definir e a posicionar portais e nascedouros no ambiente virtual.

2.4. Publicação de arquivos

O mundo virtual construído através da ferramenta de autoria é armazenado em múltiplos arquivos, cuja organização é apresentada no diagrama mostrado na Figura 1.

Figura 1. Organização dos arquivos do mundo virtual.

O arquivo Virtual Environment referencia todos os arquivos que constituem o ambiente virtual: um arquivo Scene contendo o cenário; os arquivos Portal que contêm

Static Object

Behavior

Dynamic Object

0..*

1

0..*

1

Object

0..*0..*

Portals Spawn Point

Scene Virtual Environment0..*1 0..*1

1

0..*

1

0..*

1

1..*

1

1..*

1 0..*1 0..*

a definição dos portais existentes no ambiente; um ou mais arquivos Spawn Point especificando os nascedouros; e os arquivos Object contendo referências aos objetos do ambiente virtual e seus atributos. Quando um dado objeto for composto, seu arquivo Object faz referência aos arquivos Object de seus componentes. Os arquivos Static Object e Dynamic Object são especializações dos arquivos Object que tratam respectivamente dos objetos estáticos e dinâmicos. O arquivo Dynamic Object de um objeto dinâmico está relacionado a um arquivo Behavior que define seu comportamento.

A utilização da organização de arquivos (Figura 1) facilita e reduz o trabalho de programação do NVE, pois a atribuição de comportamentos, a definição dos estados dos objetos, e a configuração de portais e nascedouros que antes eram feitas no NVE, agora são realizadas a priori. Para isso, basta que o NVE reconheça os arquivos publicados pela ferramenta de autoria.

3. Camada de Abstração de Motores Gráficos

Dentre os diversos motores gráficos disponíveis na Web, alguns são gratuitos, outros têm código aberto e ainda outros são comerciais. Todos implementam praticamente as mesmas funcionalidades, diferenciando-se basicamente pela plataforma em que executam e pela Interface de Programação de Aplicação (Application Programming Interface - API). Embora alguns motores gráficos sejam multiplataforma e permitam a troca de APIs (e.g., a API de renderização), a escolha de um motor é uma tarefa difícil. Mais difícil ainda é substituir o motor utilizado em uma aplicação de realidade virtual, pois sua arquitetura pode ser consideravelmente diferente [Gelatti, 2002]. Por vezes, o motor adotado é de difícil aprendizado e, também pode acarretar problemas aos sistemas com ele desenvolvidos, atrelando-os fortemente à tecnologia utilizada em seu desenvolvimento ou a uma plataforma específica [Maia et al, 2003].

Embora haja uma forte expectativa de aumento de produtividade com a adoção de um motor gráfico, a escolha de um motor inadequado pode limitar a capacidade da aplicação de realidade virtual caso ele não implemente um serviço importante ou não possibilite a implementação de novos serviços. Bierbaun (2003) sugere que um ambiente de desenvolvimento seja aberto, portável, extensível, fácil de aprender, e que forneça um conjunto mínimo de serviços.

Nessa seção, apresenta-se um modelo de uma camada abstrata de programação que possibilita a passagem de dados entre a aplicação de realidade virtual propriamente dita e o motor gráfico utilizado. Essa camada facilita a troca do motor gráfico adotado, aumentando a portabilidade da aplicação de realidade virtual. Esse modelo é utilizado na ferramenta de autoria apresentada na Seção 2. A camada abstrata utiliza o paradigma de orientação a objetos, podendo encapsular classes e métodos de motores que já sejam orientados a objetos, ou ainda, através do uso de padrões de projeto, permitir a adaptação de motores gráficos procedimentais. O padrão Wrapper Facade [Schmidt, 1999], por exemplo, pode ser utilizado no encapsulamento de motores procedimentais, pois se propõe a encapsular funções e estruturas de dados de baixo nível através de interfaces de classes orientadas a objetos.

Por funcionar como um elemento de intermediação entre a aplicação de RV e um motor gráfico que pode ser substituído, a camada deve suprir uma série de funcionalidades com características suficientemente gerais para abranger a maior

variedade possível de motores, além de padronizar a forma como esses disponibilizam seus serviços. Assim, foram identificados os elementos essenciais de um ambiente virtual. Isso permite definir o conjunto de funcionalidades que devem estar presentes em qualquer motor gráfico para que ele seja capaz de gerenciar tais elementos. O diagrama de classes ilustrado na Figura 2 apresenta os relacionamentos entre esses elementos, os quais são descritos a seguir.

Figura 2. Diagrama de Classes dos Componentes da Camada Abstrata

A classe Engine encapsula um conjunto de características e funcionalidades de um motor gráfico. Dentre as funcionalidades, podem ser citadas a renderização e a detecção de colisão. É nos métodos dessa classe, por exemplo, que se configuram a resolução das viewports e a quantidade de cores utilizada.

A classe Environment representa o ambiente virtual com todos os seus componentes. É responsável por gerenciar os elementos do ambiente e manter suas associações.

A classe Entity generaliza as entidades que compõem o ambiente virtual representadas pelas classes Object, Camera, Light, Sound e Sky. As instâncias de Entity podem se relacionar entre si. Por exemplo, um objeto pode seguir uma câmera ou vice-versa. A classe Object representa os modelos tridimensionais que podem ser manipulados, como os avatares e os objetos que contêm alguma animação ou reagem a ações. A classe pode conter animações representadas pela classe Animation que define uma seqüência de deformações nas malhas dos objetos, caracterizando uma animação. Um objeto homem pode, por exemplo, ter as animações “andar” e “correr”. Os objetos da classe Camera são responsáveis por apresentar a visualização do NVE. A posição e a direção de uma câmera determinam que parte do NVE será visto pelo usuário. É possível que existam várias câmeras, cada uma com sua configuração. A classe Light representa os vários tipos de luzes que podem estar presentes nos ambientes virtuais. A classe Sound representa os elementos emissores de som que podem estar associados a qualquer Entity. A classe Sky é responsável pela representação do céu em ambientes virtuais ao ar-livre.

Os materiais, representados pela classe Material, podem ser aplicados a um objeto, definindo algumas características como opacidade, reflexão, refração e cor difusa. A cor difusa pode ser obtida tanto pela definição de uma simples cor, como pelo uso de uma ou mais texturas, que são representadas por instâncias da classe Texture. A AnimatedTexture é uma especialização de Texture que possui mais de uma imagem a ela associada, podendo ser apresentadas em seqüência, dando a idéia de animação.

Camera Light Sound SkyAnimatedTexture

Object

Engine

Material

0..*1..*

0..*1..*

Animation

0..*

0..*

0..*

0..* Texture0..*0..* 0..*0..*

Environment1..*1 1..*1

0..*

1

0..*

1

0..*

1

0..*

1

0..*

1

0..*

1

Entity

1

0..*

1

0..*0..*

1

0..*

1

Path

0..*1 0..*1

A classe Path define um conjunto de pontos para formar um caminho no qual se pode colocar qualquer tipo de Entity. Um trem percorrendo uma estrada de ferro é um exemplo de utilização de Path.

4. Considerações sobre Implementação

Nessa seção, são feitas considerações sobre a implementação dos recursos especificados na Seção 2 e da camada abstrata descrita na Seção 3. Essa implementação resultou em uma primeira versão de uma ferramenta de autoria, cuja interface está ilustrada na Figura 3.

Figura 3. Ferramenta de autoria implementada.

4.1. Recursos Implementados

Nessa versão da ferramenta de autoria, foi implementado um subconjunto dos recursos especificados na Seção 2 suficiente para auxiliar o usuário em suas tarefas mais comuns. Assim, recursos de auxílio à edição, à criação e à configuração da parte estática do ambiente virtual; e alguns dos recursos de auxílio à criação e à configuração de elementos dinâmicos foram implementados. Na Tabela 1, são apresentados todos os recursos especificados na Seção 2, indicando quais deles estão disponíveis na versão atual da ferramenta. A coluna de “Implementação” indica que o recurso está:

• Totalmente funcional, caso esteja implementado seguindo completamente a especificação apresentada na Seção 2;

• Parcialmente funcional, caso esteja implementado sem todas as funcionalidades previstas na especificação; e

• Não disponível, caso o recurso ainda não tenha sido implementado na versão atual da ferramenta.

Tabela 1: Implementação de recursos da ferramenta de autoria

Recursos Implementação Descrição Biblioteca de Cenários Totalmente

funcional Uma variedade de modelos de cenários tais como praça, hotel, discoteca, cidade, entre outros, está disponível.

Biblioteca de Objetos Totalmente funcional

Objetos estáticos e dinâmicos podem ser inseridos no mundo.

Biblioteca de Texturas Totalmente funcional

Texturas dos objetos inseridos podem ser substituídas desde que não apresentem problemas de mapeamento.

Biblioteca de Sons Não disponível Ainda não implementado. Biblioteca de Personagens Controlados por Computador

Não disponível Ainda não implementado.

Comportamentos Não disponível Ainda não implementado. Os objetos dinâmicos inseridos pelo editor ainda não reagem a estímulos.

Manipulação de Objetos Totalmente funcional

Objetos podem sofrer translação, rotação e escala. Outros tipos de manipulação poderão ser inseridos.

Agrupamento Totalmente funcional

Objetos podem ser agrupados para formar objetos compostos, que posteriormente podem ser adicionados à biblioteca.

Alinhamento Parcialmente funcional

Objetos inseridos no mundo podem ser alinhados com o solo, mas ainda podem se sobrepor a outros objetos (teste de colisão ainda não está operacional).

Portais Totalmente funcional

Portais já podem ser definidos.

Nascedouros Parcialmente funcional

Apenas um nascedouro para os personagens controlados por usuário pode ser configurado.

4.2. Camada abstrata implementada A camada abstrata foi implementada sobre o motor gráfico 3DSTATE [Berger, 2002], que é um dos motores gráficos utilizados nas aplicações desenvolvidas pelo grupo CRAb (http://www.crab.ufc.br). O 3DSTATE é um motor proprietário procedimental bastante maduro, projetado para o desenvolvimento de jogos. Ele foi desenvolvido somente para a plataforma Windows e possui um editor de ambientes virtuais, voltado apenas para a parte estática do ambiente.

Como o motor é procedimental, o padrão Wrapper Facade foi utilizado para encapsular as funções do motor nas classes da camada. O 3DSTATE é dividido em várias APIs que aglutinam funções relacionadas a determinados elementos existentes num ambiente virtual. Na Tabela 2, apresenta-se o mapeamento entre as APIs do 3DSTATE e as classes propostas na Seção 3.

A API Engine do 3DSTATE foi mapeada pelas classes Engine e Environment, pois o motor não faz distinção entre instâncias dessas classes. O motor também não possui uma API específica para tratamento de materiais, ficando suas funcionalidades na API Polygon.

Tabela 2. Relação entre as classes da camada e as APIs do motor

Classes da Camada APIs do 3DSTATE Classes da Camada APIs do 3DSTATE Engine Engine API Sky Background API Environment Engine API Object Object API e Group API Entity Entity API Material Polygon API Camera Camera API Texture Bitmap API Light Light API Animated Texture Animation API Sound Sound API Path Track API

Animation 3DAnimation e 3DSequence API

5. Conclusões

Nesse trabalho, foi especificada uma ferramenta de autoria com interface simples e intuitiva para auxiliar na criação de ambientes virtuais. Uma camada intermediária entre o motor gráfico e a ferramenta também foi definida com o objetivo de desvincular a ferramenta do motor gráfico utilizado, permitindo a fácil adaptação a diferentes motores. A camada abstrata, que encapsulou todas as funções do motor gráfico procedimental 3DSTATE, possibilitou o desenvolvimento da ferramenta de autoria utilizando-se o paradigma de orientação a objetos.

A ferramenta de autoria permitiu que tarefas antes realizadas de maneira manual e por tentativa, agora sejam realizadas de forma automática e simples. A utilização da ferramenta também reduziu o trabalho de configuração de NVE, pois tarefas que eram feitas no NVE, agora são realizadas a priori na ferramenta.

Os recursos, que antes estavam disponíveis somente aos elementos estáticos através de ferramentas já existentes, agora se tornaram extensíveis aos objetos dinâmicos, que eram configurados fora do ambiente.

Referências

Andrade, A. (1999). “Uma Proposta Metodológica Para Criação de Roteiros em Ambientes Virtuais Para Aplicação Educacional”. Dissertação de Mestrado submetida ao programa de pós-graduação em Ciência da Computação - UFSC, Florianópolis.

Berger, A. (2002) “3D Programming for Windows”, http://www.3dstate.com. Bierbaun, A. D. (2003) “VR Juggler: A Virtual Platform for Virtual Reality Application

Development”, http://www.vrjuggler.org/pub/Bierbaum-VRJuggler-MastersThesis-final.pdf.

Çapin, T. K.; Pandzic, I. S.; Magnenat-Thalman, N. e Thalman, D. (1999). “Avatars in Networked Virtual Environment”. John Wiley & Sons.

Cardoso, F.; Rocha, F., Lima, L.; Costa, M.; Souza T.; Ferreira, L.; Cardoso, A. e Lamounier Jr., E. (2003). “Jogo: Fogo Amigo - Uso de Técnicas de Realidade Virtual no Desenvolvimento de Jogos Interativos”. Proceedings of the 6th Symposium on Virtual Reality, pp. 431, Ribeirão Preto, SP.

Csordas, T. J. (2000). “Computerized Cadavers: Shades of Being and Representation in Virtual Reality”. Case Western Reserve University. http://www.focusing.org/compucad.html.

Durlach, N. I. e Mavor, A. S. (1995). “Virtual Reality: Scientific and Technological Challenges”. Comitee on Virtual Reality Research and Development, National Research Council, Nacional Academy of Sciences Press.

Freitas, C. M. D. S.; Manssour, I. H.; Nedel, L. P.; Gavião, J. K.; Paim, T. C. e Maciel, A. (2003). “Framework para Construção de Pacientes Virtuais: Uma Aplicação em Laparoscopia”. Proceedings of the 6th Symposium on Virtual Reality, pp. 117-128, Ribeirão Preto, SP.

Gelatti, G. P. (2002). “A framework for Building Engines for Games and Simulations”, Proceedings of the 1st Brazilian Workshop in Games and Digital Entertainment.

Kaufmann, H.; Schmalstieg, D. e Wagner, M. (2000). “Construct3D: A Virtual Reality Application for Mathematics and Geometry Education”, Education and Information Technologies, v.5 n.4, p.263-276.

Leite JR, A. J. M.; Vidal, C. A.; Almendra, C. C.; Santos, E. M.; Gomes, H. O. O. e Mendonça-Junior, G. M. (2002). “Um ambiente virtual compartilhado voltado para entretenimento”. Proceedings of the 5th Symposium on Virtual Reality, pp. 138-149, Fortaleza, CE.

Maia, J. G. R.; Cavalcante-Neto, J. B. e Vidal, C. A. (2003). “CRAbGE: Um Motor Gráfico Customizável, Expansível e Portável Para Aplicações de Realidade Virtual”. Proceedings of the 6th Symposium on Virtual Reality, pp.3-14, Ribeirão Preto, SP – Brazil, 12-15.

Santos, E. M., Vidal, C. A., Leite-Júnior, A. J. M. e Almendra, C. C. (2001). “Beremiz: Integrando o Mathematica a um ambiente virtual em rede”. IV Simpósio de Realidade Virtual. Florianópolis: Sociedade Brasileira de Computação.

Schmidt, Douglas C. (1999). “Wrapper Facade: A Structural Pattern for Encapsulating Functions within Classes”, C++ Report, SIGS, Vol. 11, No 2.

Silva, R. J. M.; Wagner, G. N.; Raposo, A. B. e Gattas, M. (2003). “Experiência de Portais em Ambientes Arquitetônicos Virtuais”. Proceedings of the 6th Symposium on Virtual Reality, pp. 117-128, Ribeirão Preto, SP.

Slater, M.; Ush, M. e Steed, A. (1994). “Depth of Presence in Virtual Environments”. Presence: Teleoperators and Virtual Environments, Vol. 3, No. 2.

Valle Filho, A. M.; Souza, P.; Alves, J. B. M., Wazlawick, R. S. e Luz, R. P. (2000). “Ferramentas de Autoria de Realidade Virtual - Um Estudo Comparativo”. VI Congreso Internacional de Ingeniería Informática, Buenos Aires.

Vidal, C. A.; Leite-Júnior, A. J. M.; Almendra, C. C.; Santos, E. M. e Oliveira, J. P. C. (2000). “Uma Proposta de Integração de Ferramentas Externas a Ambientes Virtuais através de Simulóides e de Aplicações Mediadoras”. 3º Workshop de Realidade Virtual, Gramado, RS, Brasil.

Vidal, C. A.; Santos, E. M.; Leite-Júnior, A. J. M.; Almendra, C. C. e Borges, V. M. C. (2003). “Collaborative Virtual Environments for Language Learning”, Proceedings of the 6th Symposium on Virtual Reality, pp. 309-320, Ribeirão Preto, SP.