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.
100 <strong>Arquitetura</strong> <strong>de</strong> interação<br />
se aplica aos eventos <strong>de</strong> outros widgets. Para o widget <strong>de</strong> área <strong>de</strong> <strong>de</strong>senho, cabe à aplicação a tarefa<br />
<strong>de</strong> especificar quais eventos <strong>de</strong>verão ser consi<strong>de</strong>rados, e como esses eventos serão tratados para mo-<br />
dificar o conteúdo da área <strong>de</strong> <strong>de</strong>senho. Em particular, as tarefas básicas <strong>de</strong> posicionamento e seleção<br />
em manipulação direta <strong>3D</strong> po<strong>de</strong>m ser realizadas através do tratamento <strong>de</strong> eventos <strong>de</strong> movimentação<br />
do dispositivo apontador 2D e eventos <strong>de</strong> pressionamento <strong>de</strong> seus botões. A arquitetura proposta<br />
auxilia o <strong>de</strong>senvolvedor das ferramentas <strong>de</strong> alto nível ou <strong>de</strong>senvolvedor da aplicação a implementar<br />
rapidamente tais tarefas <strong>de</strong> interação utilizando apenas os atributos geométricos e não geométricos<br />
disponíveis para cada pixel do mo<strong>de</strong>lo ren<strong>de</strong>rizado, conforme sugerido pelo estudo <strong>de</strong> casos apresen-<br />
tado no capítulo 3.<br />
Nossa arquitetura reproduz o processamento análogo à realização <strong>de</strong> um teste <strong>de</strong> interseção en-<br />
tre raios <strong>de</strong> seleção que partem do observador, atravessam os pixels da tela contidos numa região<br />
<strong>de</strong> interesse <strong>de</strong>finida pela aplicação, e são propagados pelo volume da cena contido no volume <strong>de</strong><br />
visualização. Os atributos calculados são essencialmente os mesmos atributos geométricos ou não<br />
geométricos que po<strong>de</strong>riam ser obtidos <strong>de</strong> uma superfície no ponto <strong>de</strong> interseção mais próximo entre<br />
um raio <strong>de</strong> seleção e a geometria usando um algoritmo <strong>de</strong> ray picking tradicional na CPU. Embora<br />
a arquitetura forneça dados apenas do ponto <strong>de</strong> interseção visível, i.e., do ponto mais próximo do<br />
plano <strong>de</strong> projeção, é possível a obtenção <strong>de</strong> atributos em todas as interseções ao longo <strong>de</strong> cada raio<br />
<strong>de</strong> seleção, classificados segundo a distância dos pontos ao plano <strong>de</strong> projeção. Isto é obtido através<br />
da execução <strong>de</strong> múltiplos passos <strong>de</strong> ren<strong>de</strong>rização dos atributos da cena, <strong>de</strong> modo que, em cada passo<br />
<strong>de</strong> ren<strong>de</strong>rização adicional, são filtrados os fragmentos das primitivas visíveis <strong>de</strong>ntro da região <strong>de</strong><br />
interesse.<br />
Os atributos geométricos e não geométricos processados pela arquitetura <strong>de</strong> interação são escritos<br />
em buffers <strong>de</strong> ren<strong>de</strong>rização não visíveis e codificados como componentes <strong>de</strong> cor dos pixels da imagem<br />
ren<strong>de</strong>rizada. Posteriormente, esses atributos são <strong>de</strong>codificados pela CPU e retornados à aplicação.<br />
Cabe à aplicação a tarefa <strong>de</strong> utilizar tais atributos <strong>de</strong> acordo com o tipo <strong>de</strong> tarefa <strong>de</strong> interação que está<br />
sendo implementado. Isso significa que, embora integrada ao laço <strong>de</strong> visualização da aplicação, a<br />
arquitetura não é responsável pela etapa <strong>de</strong> retorno visual da interação. Portanto, ela não é responsável<br />
pela execução <strong>de</strong> tarefas tais como atualizar a cena original ou modificar a posição e orientação<br />
<strong>de</strong> um widget <strong>3D</strong>. Ao contrário, os atributos necessários para fazer essas modificações <strong>de</strong>vem ser<br />
requisitados e utilizados pela aplicação <strong>de</strong> modo a fornecer um retorno visual particular à tarefa que<br />
está sendo implementada (e.g., atualizando a posição e orientação do cursor <strong>3D</strong>, mudando a aparência<br />
do mo<strong>de</strong>lo envolvido na interação, entre outras formas <strong>de</strong> realimentação). Desse modo, se a aplicação<br />
implementa uma ação <strong>de</strong> manipulação que modifica a geometria ou topologia do mo<strong>de</strong>lo, a própria<br />
aplicação é responsável pela atualização dos novos dados para a arquitetura usando uma interface<br />
específica <strong>de</strong> dados <strong>de</strong> entrada.