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.
118 <strong>Arquitetura</strong> <strong>de</strong> interação<br />
normal serão armazenadas em três componentes distintas <strong>de</strong> cor, cada uma com 32 bits <strong>de</strong> precisão.<br />
Tal procedimento é utilizado em nossa implementação da arquitetura. Alternativamente, porém, esses<br />
valores po<strong>de</strong>m ser armazenados com menor precisão em componentes <strong>de</strong> cor <strong>de</strong> 16 e 8 bits sem sinal,<br />
diminuindo assim o consumo <strong>de</strong> memória <strong>de</strong> ví<strong>de</strong>o. Consi<strong>de</strong>rando vetores normalizados (portanto,<br />
com valores dos seus componentes situados entre -1 e 1), cada componente p do vetor po<strong>de</strong> ser<br />
convertido em uma cor c (com valores entre 0 e 1) através da fórmula c = (p + 1)/2 e <strong>de</strong>codificado<br />
na CPU usando p = 2c − 1.<br />
O procedimento <strong>de</strong> <strong>de</strong>codificação dos atributos é executado pela aplicação através da chamada do<br />
comando Deco<strong>de</strong>(). Internamente, tal comando lê o conteúdo da região <strong>de</strong> interesse <strong>de</strong> cada um<br />
dos buffers <strong>de</strong> ren<strong>de</strong>rização utilizados na codificação, <strong>de</strong>codifica os atributos <strong>de</strong> fragmentos contidos<br />
neles e retorna-os à aplicação.<br />
5.5 Procedimento <strong>de</strong> uso<br />
A interface <strong>de</strong> programação da arquitetura proposta é discutida <strong>de</strong>talhadamente no apêndice C.<br />
Nesta seção, <strong>de</strong>screvemos os passos necessários para implementar uma tarefa <strong>de</strong> manipulação direta<br />
<strong>3D</strong> segundo tal interface. Para inicializar a arquitetura, os seguintes procedimentos são realizados<br />
através <strong>de</strong> chamadas <strong>de</strong> comandos da arquitetura (a or<strong>de</strong>m <strong>de</strong> execução dos comandos não é rele-<br />
vante):<br />
• Criação do buffer <strong>de</strong> vértices <strong>de</strong> cada mo<strong>de</strong>lo. Cada vértice inclui necessariamente como atri-<br />
buto adicional o índice do vértice no buffer. A aplicação utiliza o comando SetVertex-<br />
Buffer() para informar esse buffer à arquitetura.<br />
Depen<strong>de</strong>ndo da tarefa <strong>de</strong> interação <strong>3D</strong> <strong>de</strong>sejada, atributos adicionais <strong>de</strong>vem ser incluídos. Con-<br />
si<strong>de</strong>remos, por exemplo, uma tarefa <strong>de</strong> seleção em uma cena <strong>3D</strong> constituída <strong>de</strong> n mo<strong>de</strong>los. A<br />
seleção consistirá em i<strong>de</strong>ntificar qual mo<strong>de</strong>lo está sendo apontado pelo cursor 2D. Segundo o<br />
paradigma <strong>de</strong> armazenar os atributos no espaço da imagem, isto po<strong>de</strong> ser obtido se codificarmos<br />
os i<strong>de</strong>ntificadores dos mo<strong>de</strong>los em cada pixel dos mo<strong>de</strong>los ren<strong>de</strong>rizados. Para tanto, o buffer<br />
<strong>de</strong> vértices <strong>de</strong> cada mo<strong>de</strong>lo <strong>de</strong>ve conter como atributo adicional o i<strong>de</strong>ntificador do mo<strong>de</strong>lo, i.e.,<br />
um valor entre 1 e n, on<strong>de</strong> n é o número <strong>de</strong> mo<strong>de</strong>los da cena <strong>3D</strong>.<br />
• Criação do buffer <strong>de</strong> índices <strong>de</strong> cada mo<strong>de</strong>lo, informado à arquitetura através do comando<br />
SetIn<strong>de</strong>xBuffer().<br />
• Definição dos atributos que serão codificados para cada pixel dos mo<strong>de</strong>los ren<strong>de</strong>rizados, usando<br />
o comando SetAttributes(). Se esses atributos incluírem proprieda<strong>de</strong>s <strong>de</strong> geometria<br />
diferencial, o estágio 2 será habilitado.