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.

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.

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

Saved successfully!

Ooh no, something went wrong!