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 147<br />

fragmentos no sha<strong>de</strong>r <strong>de</strong> fragmentos, implementamos uma aplicação <strong>de</strong> pintura e escultura <strong>de</strong> um<br />

quadrilátero mapeado com relief mapping [Policarpo et al., 2005]. <strong>Uma</strong> imagem <strong>de</strong>ssa aplicação<br />

é mostrada na figura 6.11. A aparência do quadrilátero visualizado antes da pintura e escultura é<br />

mostrado no canto inferior direito. Para uma melhor realimentação visual, um cursor tría<strong>de</strong> é posi-<br />

cionado <strong>de</strong> forma restrita à superfície visualizada, e sua oclusão com relação aos <strong>de</strong>talhes exibidos é<br />

consi<strong>de</strong>rada corretamente (e.g., parte do cursor tría<strong>de</strong> po<strong>de</strong> ficar escondida por <strong>de</strong>talhes da textura, e<br />

vice-versa). <strong>Uma</strong> ferramenta para editar os parâmetros <strong>de</strong> altura do mapa <strong>de</strong> altura associado aos <strong>de</strong>-<br />

talhes também foi implementada, fornecendo assim ao usuário um meio <strong>de</strong> esculpir a mesoestrutura<br />

usando manipulação direta.<br />

Os seguintes comandos da biblioteca foram utilizados para inicializar o fluxo <strong>de</strong> processamento<br />

da arquitetura e obter os atributos calculados:<br />

• Chamamos o comando CIntManager::SetAttributes(), passando como parâmetros<br />

os valores <strong>de</strong> enumeração ATTTYPE_DEPTH, ATTTYPE_TEXCOORD e ATTTYPE_NORMAL.<br />

Isto significa que apenas o valor <strong>de</strong> profundida<strong>de</strong>, coor<strong>de</strong>nadas <strong>de</strong> textura e vetor normal serão<br />

calculados.<br />

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

VSSEMANTIC_TEXCOORD0 e INTSEMANTIC_TEXCOORD para informar que as coor<strong>de</strong>-<br />

nadas <strong>de</strong> textura são encontradas no primeiro atributo <strong>de</strong> coor<strong>de</strong>nadas <strong>de</strong> textura do buffer <strong>de</strong><br />

vértices.<br />

• Chamamos o comando CIntObj::SetPixelDeform() para passar o sha<strong>de</strong>r <strong>de</strong> relief<br />

mapping. Esse sha<strong>de</strong>r é semelhante ao sha<strong>de</strong>r utilizado na visualização do mo<strong>de</strong>lo. Entre-<br />

tanto, em vez <strong>de</strong> retornar um valor <strong>de</strong> cor e um valor <strong>de</strong> profundida<strong>de</strong>, o sha<strong>de</strong>r retorna os<br />

atributos modificados <strong>de</strong> coor<strong>de</strong>nadas <strong>de</strong> textura, profundida<strong>de</strong> e vetor normal.<br />

• Utilizamos o comando CIntManager::SetROI(), passando como coor<strong>de</strong>nadas a locali-<br />

zação atual do cursor 2D.<br />

• No final <strong>de</strong> cada iteração do laço <strong>de</strong> ren<strong>de</strong>rização, o comando CIntManager::Deco<strong>de</strong>()<br />

é utilizado para obter as coor<strong>de</strong>nadas <strong>de</strong> textura, vetor normal e valor <strong>de</strong> profundida<strong>de</strong> do pixel<br />

da região <strong>de</strong> interesse. Com esses valores, a aplicação po<strong>de</strong> modificar o conteúdo do mapa <strong>de</strong><br />

<strong>de</strong>talhes e realizar o posicionamento e alinhamento do cursor tría<strong>de</strong> da mesma forma como no<br />

posicionamento restrito a superfícies.

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

Saved successfully!

Ooh no, something went wrong!