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.

68 Cálculo <strong>de</strong> elementos <strong>de</strong> geometria diferencial discreta na GPU<br />

vetores formados das arestas dos triângulos, começando <strong>de</strong> um vértice comum. O resultado é<br />

armazenado em um mapa <strong>de</strong> normais às faces.<br />

3. Cálculo das normais aos vértices: Para cada vértice, é amostrado um grupo <strong>de</strong> dois texels<br />

subseqüentes no mapa <strong>de</strong> adjacência. Isso correspon<strong>de</strong> à leitura dos índices <strong>de</strong> até oito faces<br />

adjacentes ao vértice, um para cada componente <strong>de</strong> cor RGBα dos dois texels. Para cada um<br />

<strong>de</strong>sses índices <strong>de</strong> faces, o mapa <strong>de</strong> normais às faces é amostrado <strong>de</strong> modo a obter a normal à<br />

face correspon<strong>de</strong>nte. As oito normais às faces são somadas e o resultado é normalizado para<br />

obter a normal ao vértice. Tal resultado é armazenado em um mapa <strong>de</strong> normais aos vértices.<br />

Com o mapa <strong>de</strong> normais aos vértices calculado, o sha<strong>de</strong>r <strong>de</strong> vértices po<strong>de</strong> acessar seus dados <strong>de</strong><br />

modo a fornecer ao sha<strong>de</strong>r <strong>de</strong> fragmentos as normais corretas para realizar os cálculos <strong>de</strong> iluminação.<br />

<strong>Uma</strong> vez que os resultados são armazenados no mapa <strong>de</strong> normais aos vértices, eles só precisam ser<br />

calculados novamente caso a geometria seja afetada por uma nova <strong>de</strong>formação.<br />

Vetores tangente e bitangente<br />

Segundo Lengyel [2003], vetores tangentes alinhados <strong>de</strong> acordo com o mapeamento das coor<strong>de</strong>-<br />

nadas <strong>de</strong> textura po<strong>de</strong>m ser obtidos através do cálculo, para cada face, <strong>de</strong> vetores T (tangente) e B<br />

(bitangente) tais que qualquer ponto <strong>3D</strong> Q <strong>de</strong>ntro <strong>de</strong> um triângulo com vértices <strong>3D</strong> Pn (n = 0, 1, 2) e<br />

coor<strong>de</strong>nadas <strong>de</strong> textura (sn, tn) po<strong>de</strong> ser representado por:<br />

on<strong>de</strong> (Qs, Qt) são as coor<strong>de</strong>nadas <strong>de</strong> textura associadas a Q.<br />

Q − Pn = (Qs − sn)T + (Qt − tn)B, (4.1)<br />

Atribuindo P0 a Pn e substituindo Q por P1 e P2, obtemos o seguinte sistema <strong>de</strong> equações lineares:<br />

Resolvendo para T e B, temos:<br />

on<strong>de</strong> c = (s1t2 − s2t1) −1 .<br />

P1 − P0 = (s1 − s0)T + (t1 − t0)B,<br />

P2 − P0 = (s2 − s0)T + (t2 − t0)B.<br />

T = ((P1 − P0)t2 − (P2 − P0)t1)c,<br />

B = ((P2 − P0)s1 − (P1 − P0)s2)c,<br />

Com T e B calculados, e consi<strong>de</strong>rando o vetor normal N no espaço do objeto correspon<strong>de</strong>nte,<br />

ortogonalizamos esses vetores <strong>de</strong> modo a produzir a base tangente {T, B, N}. Em mapeamento <strong>de</strong><br />

(4.2)<br />

(4.3)

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

Saved successfully!

Ooh no, something went wrong!