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.

6.2 Exemplos <strong>de</strong> aplicações 139<br />

pelo cursor 2D não contenha mais nenhum i<strong>de</strong>ntificador <strong>de</strong> face. <strong>Uma</strong> vez que cada face <strong>de</strong>ve ter<br />

seu i<strong>de</strong>ntificador próprio, utilizamos geometria não in<strong>de</strong>xada, pois os i<strong>de</strong>ntificadores das faces são<br />

<strong>de</strong>finidos pelos atributos dos vértices que compõem cada face.<br />

A captura <strong>de</strong> uma imagem <strong>de</strong>sta aplicação é mostrada na figura 6.6. Os i<strong>de</strong>ntificadores <strong>de</strong> cada<br />

face intersectada, em uma or<strong>de</strong>m <strong>de</strong> frente para trás a partir do observador, são exibidos no canto<br />

inferior esquerdo da imagem.<br />

Os seguintes comandos da biblioteca são utilizados para configurar o fluxo <strong>de</strong> processamento da<br />

arquitetura e ler os resultados:<br />

• Utilizamos o comando CIntManager::SetAttributes() passando como parâmetro<br />

apenas o valor <strong>de</strong> enumeração ATTTYPE_USERDEFNI. Este parâmetro informa que o único<br />

atributo a ser armazenado para cada pixel do mo<strong>de</strong>lo ren<strong>de</strong>rizado é um valor <strong>de</strong>finido pela apli-<br />

cação para a geometria não in<strong>de</strong>xada do mo<strong>de</strong>lo. Tal valor é o i<strong>de</strong>ntificador <strong>de</strong> cada face, e é<br />

incluído no buffer <strong>de</strong> vértices da geometria original como um elemento adicional <strong>de</strong> coor<strong>de</strong>-<br />

nadas <strong>de</strong> textura.<br />

• O comando CIntManager::BindSemantics() é chamado com o par <strong>de</strong> valores<br />

VSSEMANTIC_TEXCOORD1 e INTSEMANTIC_USERDEFNI <strong>de</strong> modo a informar que o valor<br />

<strong>de</strong>finido pela aplicação para a geometria não in<strong>de</strong>xada é encontrado no segundo atributo <strong>de</strong> co-<br />

or<strong>de</strong>nadas <strong>de</strong> textura do buffer <strong>de</strong> vértices.<br />

• O comando CIntManager::SetROI() é utilizado da mesma forma que na tarefa <strong>de</strong> se-<br />

leção, passando como coor<strong>de</strong>nadas a localização atual do cursor 2D.<br />

• Chamamos o comando CIntObj::SetPixelDeform() do mo<strong>de</strong>lo sob interação para<br />

<strong>de</strong>finir um sha<strong>de</strong>r <strong>de</strong> modificação <strong>de</strong> atributos <strong>de</strong> fragmentos que <strong>de</strong>scarta a ren<strong>de</strong>rização dos<br />

fragmentos <strong>de</strong> todas as faces selecionadas anteriormente no processo iterativo <strong>de</strong> seleção <strong>de</strong><br />

faces. A informação sobre quais faces já foram selecionadas é obtida <strong>de</strong> registradores constan-<br />

tes configurados pela aplicação nas chamadas <strong>de</strong> retorno do estágio <strong>de</strong> codificação <strong>de</strong> atributos.<br />

• No fim <strong>de</strong> cada iteração do fluxo <strong>de</strong> processamento da arquitetura, o comando CIntManager<br />

::Deco<strong>de</strong>() é utilizado para obter o i<strong>de</strong>ntificador da face visível na atual iteração. Nas<br />

funções <strong>de</strong> chamada <strong>de</strong> retorno utilizadas no estágio <strong>de</strong> codificação <strong>de</strong> atributos (i.e., <strong>de</strong>finidas<br />

com CIntObj::SetRen<strong>de</strong>rCallback()), os i<strong>de</strong>ntificadores das faces já selecionadas<br />

são enviados ao sha<strong>de</strong>r <strong>de</strong> modificação <strong>de</strong> atributos <strong>de</strong> fragmentos, o qual utilizará esses valores<br />

para <strong>de</strong>terminar quais as faces que não <strong>de</strong>vem ser ren<strong>de</strong>rizadas.

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

Saved successfully!

Ooh no, something went wrong!