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.
108 <strong>Arquitetura</strong> <strong>de</strong> interação<br />
<strong>de</strong>rivada <strong>de</strong> curvatura, mapeado em tons <strong>de</strong> cinza.<br />
• Valor <strong>de</strong>finido pela aplicação. Além dos atributos geométricos <strong>de</strong>scritos até aqui, nossa ar-<br />
quitetura suporta valores numéricos, <strong>de</strong>finidos pela aplicação, para cada vértice <strong>de</strong> uma malha<br />
triangular in<strong>de</strong>xada ou não in<strong>de</strong>xada. Este atributo é fornecido na forma <strong>de</strong> um atributo adi-<br />
cional <strong>de</strong> cada vértice da geometria original (e.g, como um conjunto adicional <strong>de</strong> coor<strong>de</strong>nadas<br />
<strong>de</strong> textura), com valor <strong>de</strong>finido pela aplicação. Para geometria in<strong>de</strong>xada, os valores <strong>de</strong>finidos<br />
em um vértice são compartilhados por todas as faces adjacentes. Para geometria não in<strong>de</strong>xada,<br />
cada vértice po<strong>de</strong> ter valores diferentes <strong>de</strong> acordo com a face que utiliza o vértice. A arquitetura<br />
suporta as duas versões <strong>de</strong> geometria (in<strong>de</strong>xada e não in<strong>de</strong>xada) ao mesmo tempo, dando assim<br />
mais flexibilida<strong>de</strong> para que a aplicação utilize atributos adicionais.<br />
Em geometria in<strong>de</strong>xada é possível <strong>de</strong>finir, para cada vértice, um valor constante que i<strong>de</strong>ntifica<br />
univocamente aquele objeto. A arquitetura armazena esse valor no buffer <strong>de</strong> ren<strong>de</strong>rização não<br />
visível, para cada pixel do objeto. A aplicação po<strong>de</strong> ler esse valor para o pixel que contém o<br />
ponto <strong>de</strong> avaliação do cursor do dispositivo apontador e assim realizar uma tarefa <strong>de</strong> seleção.<br />
O mesmo princípio se aplica para i<strong>de</strong>ntificar vértices. Neste caso, a aplicação atribui para cada<br />
vértice um valor que o <strong>de</strong>fine <strong>de</strong> forma unívoca.<br />
Em geometria não in<strong>de</strong>xada, valores <strong>de</strong>finidos pela aplicação po<strong>de</strong>m ser utilizados para realizar<br />
tarefas tais como selecionar faces e obter as coor<strong>de</strong>nadas baricêntricas <strong>de</strong> um ponto da face.<br />
Para selecionar faces, seus vértices <strong>de</strong>vem conter um mesmo i<strong>de</strong>ntificador que será então <strong>de</strong>-<br />
signado pela arquitetura para todos os pixels da face ren<strong>de</strong>rizada. Esse procedimento requer o<br />
uso <strong>de</strong> geometria não in<strong>de</strong>xada, pois vértices coinci<strong>de</strong>ntes possuem i<strong>de</strong>ntificadores diferentes<br />
para cada face adjacente.<br />
Coor<strong>de</strong>nadas baricêntricas em uma face triangular po<strong>de</strong>m ser obtidas a partir da atribuição <strong>de</strong><br />
pesos a cada um dos três vértices da face. Por exemplo, consi<strong>de</strong>re, os pesos (s, t) da equação<br />
<strong>de</strong> coor<strong>de</strong>nadas baricêntricas V1 + s(V2 − V1) + t(V3 − V1) <strong>de</strong> um triângulo (V1, V2, V3). Os<br />
parâmetros s e t controlam a influência dos vértices V1, V2 e V3 nas coor<strong>de</strong>nadas. Na geome-<br />
tria original, os pares <strong>de</strong> valores (0, 0), (1, 0) e (0, 1) po<strong>de</strong>m ser <strong>de</strong>signados pela aplicação,<br />
respectivamente, para cada conjunto <strong>de</strong> vértices V1, V2 e V3. Durante a rasterização usando<br />
o mo<strong>de</strong>lo <strong>de</strong> interpolação smooth do OpenGL (também chamado <strong>de</strong> mo<strong>de</strong>lo Gouraud no Di-<br />
rect<strong>3D</strong>), esses valores serão interpolados linearmente para os pixels contidos <strong>de</strong>ntro <strong>de</strong> cada<br />
face e po<strong>de</strong>rão ser lidos pela aplicação para <strong>de</strong>terminar as coor<strong>de</strong>nadas baricêntricas do ponto<br />
coinci<strong>de</strong>nte com o pixel. Novamente, esse cálculo requer o uso <strong>de</strong> geometria não in<strong>de</strong>xada,<br />
pois vértices coinci<strong>de</strong>ntes po<strong>de</strong>m ter pesos diferentes para cada face adjacente.<br />
<strong>Uma</strong> visualização, em cores falsas, dos pesos da equação <strong>de</strong> coor<strong>de</strong>nadas baricêntricas <strong>de</strong>-