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

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

Saved successfully!

Ooh no, something went wrong!