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

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

3.3 <strong>Uma</strong> estratégia alternativa à técnica ray picking 57<br />

vértice atual, armazenando-o como um valor <strong>de</strong> componente <strong>de</strong> cor do vértice resultante. Durante<br />

a rasterização, esse valor é interpolado linearmente para cada fragmento da primitiva, e armazenado<br />

para cada pixel da primitiva rasterizada. A aplicação po<strong>de</strong> ler esse valor <strong>de</strong> profundida<strong>de</strong> e, juntamente<br />

com os dados <strong>de</strong> configuração da janela <strong>de</strong> visualização e matrizes <strong>de</strong> transformação, <strong>de</strong>terminar a<br />

posição <strong>3D</strong> correspon<strong>de</strong>nte. O cursor <strong>3D</strong> é então <strong>de</strong>slocado para essa posição. Um procedimento<br />

semelhante é aplicado para obter as informações do vetor normal e vetores tangentes. Tais vetores<br />

são calculados, e os componentes <strong>de</strong> cada vetor são armazenados em componentes <strong>de</strong> cor do vértice.<br />

Esses valores são interpolados no rasterizador e armazenados para cada pixel da primitiva rasterizada.<br />

A aplicação lê esses valores do pixel apontado pelo cursor 2D e utiliza-os para orientar o cursor <strong>3D</strong>.<br />

A factibilida<strong>de</strong> <strong>de</strong>sta proposta foi mostrada em [Batagelo and Wu, 2005].<br />

Não é do nosso conhecimento a aplicação da estratégia <strong>de</strong> codificação <strong>de</strong> atributos em pixels da<br />

imagem para movimentos do cursor restritos a características do mo<strong>de</strong>lo usando a simulação <strong>de</strong> um<br />

campo <strong>de</strong> gravida<strong>de</strong>. Entretanto, sugerimos uma maneira simples <strong>de</strong> utilizá-lo para este propósito,<br />

empregando uma variação do procedimento utilizado para seleção. Em especial, a busca pelo ele-<br />

mento visível mais próximo do cursor 2D po<strong>de</strong> ser feita no espaço da imagem, verificando os atribu-<br />

tos <strong>de</strong> uma região <strong>de</strong> pixels em torno do pixel apontado pelo cursor 2D. Tal procedimento não requer<br />

percursos <strong>de</strong> subdivisões espaciais além daqueles necessários para ren<strong>de</strong>rizar a cena <strong>3D</strong>. É, portanto,<br />

consi<strong>de</strong>ravelmente mais simples em comparação com o método <strong>de</strong> ray picking. Por exemplo, para<br />

o posicionamento restrito a vértices, atribui-se a cada vértice um i<strong>de</strong>ntificador único (e.g., uma cor<br />

única), além do valor <strong>de</strong> profundida<strong>de</strong> utilizado para calcular posteriormente a posição <strong>3D</strong>. Somente<br />

os vértices do mo<strong>de</strong>lo são ren<strong>de</strong>rizados, como pontos correspon<strong>de</strong>ntes a um pixel. Em seguida, a apli-<br />

cação lê os atributos dos pixels contidos em uma área da tela em torno do pixel apontado pelo cursor<br />

2D. Essa área <strong>de</strong>fine a área <strong>de</strong> atuação do campo <strong>de</strong> gravida<strong>de</strong>, em coor<strong>de</strong>nadas da tela. Para cada<br />

pixel que contém algum i<strong>de</strong>ntificador <strong>de</strong> vértice, a aplicação calcula a distância entre esse pixel e o<br />

pixel apontado pelo cursor 2D. O cursor 2D é então <strong>de</strong>slocado para o pixel mais próximo que contém<br />

o i<strong>de</strong>ntificador, e o cursor <strong>3D</strong> é <strong>de</strong>slocado para a posição <strong>3D</strong> correspon<strong>de</strong>nte indicada pelos atributos<br />

obtidos. Para o posicionamento restrito a arestas, o procedimento é semelhante. Em vez <strong>de</strong> vértices,<br />

o mo<strong>de</strong>lo é ren<strong>de</strong>rizado em modo aramado, e cada aresta contém um i<strong>de</strong>ntificador único. Para que<br />

a ren<strong>de</strong>rização dos vértices ou arestas respeite as relações <strong>de</strong> oclusão existentes na ren<strong>de</strong>rização <strong>de</strong><br />

primitivas preenchidas, as primitivas preenchidas <strong>de</strong>vem ser ren<strong>de</strong>rizadas em um passo anterior no<br />

qual apenas o buffer <strong>de</strong> profundida<strong>de</strong> é alterado. Desse modo, os pontos ou linhas escondidos pelas<br />

primitivas preenchidas não serão exibidos.<br />

No caso <strong>de</strong> posicionamentos restritos <strong>de</strong> cursor sobre os objetos nas cenas geradas com a técnica<br />

<strong>de</strong> ren<strong>de</strong>rização baseada em imagens, as características da imagem po<strong>de</strong>riam ser <strong>de</strong>terminadas por<br />

filtros <strong>de</strong> pós-processamento <strong>de</strong> imagem (e.g., um filtro <strong>de</strong> <strong>de</strong>tecção <strong>de</strong> bordas), Portanto, a estraté-

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

Saved successfully!

Ooh no, something went wrong!