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.

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

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

Saved successfully!

Ooh no, something went wrong!