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
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