• Nenhum resultado encontrado

A biblioteca gráfica Java3D permite implementar dois modelos diferentes de visualização: câmara virtual e o denominado modelo de visualização Java3D. O primeiro modelo tem uma grande aplicabilidade no desenvolvimento de aplicações personalizadas para uma dada tarefa, em que as cenas já estão previamente definidas e em que os programadores têm controlo sobre todos os parâmetros de visualização. Não é um modelo adaptado à criação de sistemas do tipo visualizador/navegador que carregam e exibem mundos genéricos. Na realidade, este modelo simula o funcionamento de uma câmara num mundo virtual e não o comportamento natural de um ser humano no mundo real. Para que tal aconteça, a aplicação tem que reposicionar a câmara continuamente, a fim de emular um ser humano no mundo virtual [Sowizral97].

A biblioteca gráfica Java3D pode sintetizar imagens numa extensa gama de dispositivos de visualização, onde se incluem os monitores vídeo comuns, salas de projecção múltipla e capacetes de visualização, tudo isto sem que seja alterado o grafo da cena. Isto significa que uma aplicação, baseada no modelo de visualização próprio desta biblioteca gráfica, pode naturalmente sintetizar vistas estereoscópicas ou monoscópicas, de uma forma transparente para o programador.

O modelo de visualização do Java3D, quando opera num ambiente sem detector de posição e sintetiza imagens num único monitor vídeo padrão, assemelha-se ao modelo de visualização tradicional baseado na câmara. Este modelo de visualização permite uma fácil integração, com uma panóplia de dispositivos de entrada, com 6 graus de liberdade, como por exemplo, head

trackers e luvas de dados; dispositivos de saída como sejam monitores vídeo

comuns, HMD’s e sistemas de projecção múltipla do tipo CAVE. Por exemplo, ao utilizarmos um HMD, são as suas ópticas que determinam o FOV ( Field of

View) que a aplicação deve utilizar. Então, é o próprio dispositivo exterior que

influencia os parâmetros de visualização do sistema.

O modelo de visualização do Java3D consiste na inter-relação existente entre dois componentes: o mundo virtual representado pelo objecto ViewPlatform e o mundo físico representado pelo nó View e seus objectos associados. Assim, passam-se a descrever alguns desses tipos de nós que estão representados na Figura 26 :

Viewplatform – classe que especifica uma plataforma de visualização que

define a localização e orientação do observador dentro do mundo virtual. Uma aplicação pode manipular um objecto ViewPlatform, como se de qualquer outro objecto dentro do respectivo sub-grafo de visualização se tratasse, através de operações de translacção, rotação e escala. Desta forma, a aplicação pode movimentar o nó ViewPlatform (e consequentemente o respectivo observador) através do mundo virtual com base nas transformações geométricas operadas sobre os nós TransformGroup que estão posicionados entre o ViewPlatform e o objecto Locale (conforme Figura 26). Um objecto ViewPlatform é acedido pelo objecto View que define os parâmetros de visualização do sistema.

View – classe que abstrai em detalhe o ambiente de visualização do utilizador,

possuindo para tal todos os parâmetros necessários ao rendering de uma cena tridimensional, a partir do ponto de vista do utilizador. Um objecto View referencia uma lista de objectos Canvas3D sobre os quais é efectuado o processo de rendering. A classe View descreve parâmetros do sistema de visualização, como sejam por exemplo: ângulo FOV, planos Near (BackClip) e Far (FrontClip), visualização monoscópica/estereoscópica e o tipo de projecção que o sistema deve executar (perspectiva ou paralela).

PhysicalBody - Esta classe contém especificações sobre características

físicas associadas à cabeça do utilizador. Os atributos deste tipo de nó são descritos num sistema de coordenadas da cabeça, e a sua origem é definida por um plano perpendicular à face que está entre o olho direito e o esquerdo. Este nó permite receber e obter informação sobre algumas características físicas, como sejam por exemplo, a localização dos olhos e a distância entre as pupilas.

PhysicalEnvironment - Esta classe possui informação sobre o ambiente do

local físico (dispositivos de entrada/saída de dados) onde as imagens irão ser geradas, sendo usado para activar sensores associados a dispositivos de entrada de dados (detectores de posição/orientação, luvas de dados entre outros) e a dispositivos de saída áudio.

Canvas3D – classe que fornece uma tela de desenho para se efectuar o

rendering das cenas 3D. O sistema de rendering do Java3D sintetiza todas as

imagens para os objectos Canvas3D que estão associados aos nós View que estejam activos. A classe Canvas3D é uma sub-classe de Canvas (pertencente ao pacote java.awt – Abstract Window Toolkit) que representa telas de desenho 2D, e possui informação sobre, por exemplo, a localização e tamanho da janela de visualização.

Screen3D – classe que contém toda a informação sobre um dispositivo físico

de visualização e que é gerado a partir de um nó Canvas3D (os vários nós Canvas3D, que possam estar associados ao mesmo dispositivo físico de visualização, referenciam o mesmo nó Screen3D). Este nó possui as propriedades físicas do dispositivo de visualização, como por exemplo, a largura e altura do monitor.

O modelo de visualização do Java3D impõe, assim, uma clara separação entre o mundo virtual e o físico. Simultaneamente, existe uma ponte entre esses dois mundos, pela definição de uma correspondência de um-para-um entre o espaço virtual definido pelo objecto ViewPlatform e o espaço físico definido pelos objectos associados ao objecto View. Assim, um ponto num dos espaços tem um outro ponto correspondente no outro espaço.

O modelo de visualização da câmara virtual fornece aplicações com uma variedade de controlos sobre os parâmetros da câmara, tais como a sua localização e orientação, o seu campo de visão (field-of-view) e a proporção de aspecto das imagens geradas, entre outros. Este modelo funciona correctamente em determinados casos, mas noutros não, como é, por exemplo, num sistema de múltiplas projecções, em que são geradas e projectadas diferentes imagens em várias paredes em simultâneo, como é o caso do sistema CAVE. Nesta situação as aplicações baseadas naquele modelo só controlam a geração de uma imagem de cada vez.

O conceito central do modelo de visualização Java3D consiste na co-existência do utilizador no mundo virtual, bem como no mundo físico. Assim, as aplicações baseadas em Java3D podem facilmente mapear os movimentos descritos no objecto ViewPlatform, na sequência dos movimentos da cabeça do utilizador, nas correspondentes e apropriadas vistas processadas graficamente. Esta capacidade advém do controlo que as referidas aplicações possuem sobre as características do ambiente físico do utilizador.

O modelo de visualização Java3D opera como um sistema de restrições altamente optimizado e que sustenta duas grandes políticas [Sowizral99]. Uma dessas políticas é usada em ambientes onde os olhos do utilizador se movimentam em relação à superfície do dispositivo de visualização, como sejam, entre outros, os baseados em écrans de visualização comuns (com suporte ou não de detectores de posição) e em salas com sistemas de múltipla projecção em paredes. A segunda política é usada em ambientes onde os olhos do utilizador não se movimentam em relação à superfície do dispositivo de visualização, como são os casos do uso do capacete de visualização, e da utilização de ambientes de realidade aumentada.