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