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
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.