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 141<br />
<strong>de</strong> cor obtido do mapa <strong>de</strong> interação. Nesta imagem, o mo<strong>de</strong>lo é mostrado com a cor ambiente azul<br />
pois o cursor 2D está apontando uma região azul do mapeamento do mapa <strong>de</strong> interação. Os seguintes<br />
comandos da biblioteca são utilizados para inicializar o fluxo <strong>de</strong> processamento da arquitetura e obter<br />
os atributos calculados:<br />
• Assim como na tarefa <strong>de</strong> seleção, chamamos o comando<br />
CIntManager::SetAttributes() passando como parâmetro apenas o valor <strong>de</strong> enume-<br />
ração ATTTYPE_USERDEFI. Tal valor é o valor <strong>de</strong> cada texel do mapa <strong>de</strong> interação, amostrado<br />
no estágio <strong>de</strong> modificação <strong>de</strong> atributos <strong>de</strong> fragmentos. O buffer <strong>de</strong> vértices da geometria origi-<br />
nal não precisa ser modificado. Assim, o comando CIntManager::BindSemantics()<br />
não precisa ser chamado para informar atributos além do i<strong>de</strong>ntificador do vértice.<br />
• Utilizamos o comando CIntObj::SetPixelDeform() para <strong>de</strong>finir um sha<strong>de</strong>r <strong>de</strong> frag-<br />
mentos que amostra o mapa <strong>de</strong> interação segundo as coor<strong>de</strong>nadas <strong>de</strong> textura da geometria ori-<br />
ginal, e armazena o valor amostrado no registrador <strong>de</strong> saída utilizado para armazenar o valor<br />
<strong>de</strong>finido pela aplicação.<br />
• Assim como na tarefa <strong>de</strong> seleção, a região <strong>de</strong> interesse é o pixel apontado pelo cursor 2D. Isto<br />
é configurado com o comando CIntManager::SetROI().<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 o i<strong>de</strong>ntificador armazenado no pixel apontado pelo cursor 2D. Esse i<strong>de</strong>n-<br />
tificador é utilizado pela aplicação para realizar a realimentação visual.<br />
6.2.4 Posicionamento restrito a superfícies<br />
Em nossa aplicação <strong>de</strong> posicionamento restrito a superfícies, <strong>de</strong>slocamos um cursor tría<strong>de</strong> para<br />
o ponto da superfície apontado pelo cursor 2D e orientamos seus eixos <strong>de</strong> acordo com os atributos<br />
<strong>de</strong> proprieda<strong>de</strong>s <strong>de</strong> geometria diferencial estimados para aquele ponto da superfície. Em particular,<br />
alinhamos o cursor tría<strong>de</strong> tal forma que um <strong>de</strong> seus eixos aponta na direção do vetor normal (seta ver-<br />
melha) e os outros dois eixos perpendiculares apontam nas direções dos vetores tangente e bitangente<br />
(setas ver<strong>de</strong> e azul, respectivamente). A simulação <strong>de</strong> um campo <strong>de</strong> atração não é utilizada neste<br />
caso. <strong>Uma</strong> imagem <strong>de</strong>sta aplicação é mostrada na figura 6.8. Os valores <strong>de</strong> posição e orientação são<br />
mostrados no texto no canto inferior esquerdo da imagem.<br />
Os seguintes comandos da biblioteca são utilizados para inicializar o fluxo <strong>de</strong> processamento da<br />
arquitetura e obter os atributos necessários para posicionar e orientar o cursor tría<strong>de</strong>:<br />
• Chamamos o comando CIntManager::SetAttributes(), passando como parâmetros<br />
os valores <strong>de</strong> enumeração ATTTYPE_DEPTH e ATTTYPE_TBN. Isso significa que os atributos