03.04.2013 Views

Uma Arquitetura de Suporte a Interações 3D ... - DCA - Unicamp

Uma Arquitetura de Suporte a Interações 3D ... - DCA - Unicamp

Uma Arquitetura de Suporte a Interações 3D ... - DCA - Unicamp

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

2.2 Manipulação direta 19<br />

Outra ferramenta disponível no Open Inventor é o sensor. Um sensor <strong>de</strong> dados (data sensor) po<strong>de</strong><br />

ser utilizado para disparar um evento assim que houver uma mudança na base <strong>de</strong> dados da cena. Da<br />

mesma forma, um sensor <strong>de</strong> tempo (timer sensor), po<strong>de</strong> ser configurado para acionar um evento em<br />

intervalos regulares <strong>de</strong> tempo.<br />

O Open Inventor conta com um mecanismo simples <strong>de</strong> tratamento <strong>de</strong> eventos. Um evento especí-<br />

fico do sistema <strong>de</strong> janelas é gerado como resultado <strong>de</strong> alguma ação do usuário (movimentação do<br />

mouse, digitação, etc.) e é passado para a instância da área <strong>de</strong> ren<strong>de</strong>rização que correspon<strong>de</strong> à janela<br />

on<strong>de</strong> ocorreu o evento. Se o componente utilizado não processar o evento, ele é convertido para um<br />

evento in<strong>de</strong>pen<strong>de</strong>nte do sistema <strong>de</strong> janelas e distribuído pelos nós, para o caso <strong>de</strong> algum <strong>de</strong>les tratá-lo<br />

<strong>de</strong> maneira específica.<br />

A flexibilida<strong>de</strong> do Open Inventor está resumida na adição <strong>de</strong> novos no<strong>de</strong> kits e na chamada <strong>de</strong><br />

funções durante o percurso do grafo. Cada nó po<strong>de</strong> conter uma chamada <strong>de</strong> retorno (callback no<strong>de</strong>)<br />

que invoca uma função configurável pela aplicação, quando o nó é percorrido, quando está a ponto<br />

<strong>de</strong> ser alcançado, ou quando acabou <strong>de</strong> ser alcançado. Isto permite introduzir comportamentos espe-<br />

cializados <strong>de</strong>ntro do grafo da cena e acessar o estado atual do percurso do grafo.<br />

Os widgets <strong>de</strong> interação <strong>3D</strong> do Open Inventor – chamados <strong>de</strong> manipulators – são criados através da<br />

composição <strong>de</strong> objetos geométricos simples chamados draggers. Essas composições <strong>de</strong>finem objetos<br />

especiais capazes <strong>de</strong> tratar eventos do dispositivo apontador <strong>de</strong> modo a rodar, transladar e mudar a<br />

escala dos objetos da cena associados a cada manipulator.<br />

Todas as proprieda<strong>de</strong>s <strong>de</strong> uma cena do Open Inventor, também armazenadas como nós do grafo,<br />

po<strong>de</strong>m ser gravadas em um único arquivo em formato texto para posterior reutilização, possivelmente<br />

em diferentes aplicações. Essa e outras características do Open Inventor têm sido utilizadas até hoje<br />

em bibliotecas <strong>de</strong> visualização baseadas em grafo <strong>de</strong> cena, como o OpenSG [OpenSG, 2007] e Open-<br />

SceneGraph [OpenSceneGraph, 2007]. Essas propostas ainda são baseadas na <strong>Arquitetura</strong> Gráfica<br />

Unificada, centralizadas em torno <strong>de</strong> um banco <strong>de</strong> dados da cena na memória do sistema.<br />

Des<strong>de</strong> o seu lançamento, a SGI observou que o Open Inventor atingia um <strong>de</strong>sempenho muito<br />

inferior ao <strong>de</strong> aplicações criadas exclusivamente com o OpenGL, e portanto não era a<strong>de</strong>quado para<br />

aplicações <strong>de</strong> alto <strong>de</strong>sempenho. Essa preocupação motivou, nos meados da década <strong>de</strong> 1990, a criação<br />

<strong>de</strong> uma nova API: o OpenGL Performer [Eckel and Jones, 2004]. Em seu lançamento, o Performer<br />

tinha a capacida<strong>de</strong> <strong>de</strong> realizar processamento paralelo em sistemas com múltiplos processadores e<br />

possuía um grafo <strong>de</strong> cena mais flexível para se adaptar a diferentes necessida<strong>de</strong>s <strong>de</strong> aplicações, ainda<br />

que sob o custo <strong>de</strong> reduzir as varieda<strong>de</strong>s <strong>de</strong> primitivas que po<strong>de</strong>riam ser utilizadas. Atualmente o<br />

Performer incorpora elementos <strong>de</strong> várias tecnologias <strong>de</strong>senvolvidas pela SGI [Sil, 2005], tais como o<br />

Volumizer (API <strong>de</strong> visualização <strong>de</strong> dados volumétricos), Vizserver (ferramenta para o uso <strong>de</strong> servi-<br />

dores <strong>de</strong> visualização), Multipipe SDK (API <strong>de</strong> escalabilida<strong>de</strong> <strong>de</strong> fluxos <strong>de</strong> ren<strong>de</strong>rização), Optimizer

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!