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

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

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

Fig. 4.1: Esfera <strong>de</strong>formada na GPU por ruído <strong>de</strong> Perlin, com normal mapping e sombreamento Phong.<br />

Esquerda: iluminação usando proprieda<strong>de</strong>s <strong>de</strong> geometria diferencial da esfera original (<strong>de</strong>talhe). Direita:<br />

iluminação usando proprieda<strong>de</strong>s <strong>de</strong> geometria diferencial calculadas na GPU após a <strong>de</strong>formação.<br />

formações não po<strong>de</strong> ser obtida por uma simples transformação rígida sobre as quantida<strong>de</strong>s originais,<br />

uma vez que as <strong>de</strong>formações geralmente não preservam as proprieda<strong>de</strong>s locais <strong>de</strong> geometria diferen-<br />

cial como área e curvatura. Se o mo<strong>de</strong>lo <strong>de</strong>formado po<strong>de</strong> ser <strong>de</strong>scrito por uma função paramétrica, as<br />

bases tangentes e outros elementos <strong>de</strong> geometria diferencial po<strong>de</strong>m ser obtidos através das <strong>de</strong>rivadas<br />

parciais <strong>de</strong>ssa função. Infelizmente, a condição <strong>de</strong> existência <strong>de</strong> tais funções dificilmente é atendida,<br />

e uma solução mais geral é necessária. Neste capítulo, mostramos como po<strong>de</strong>mos realizar a estima-<br />

tiva <strong>de</strong>sses elementos <strong>de</strong> forma eficiente para mo<strong>de</strong>los geométricos <strong>de</strong>formados arbitrariamente no<br />

processador <strong>de</strong> vértices. Em razão <strong>de</strong> consi<strong>de</strong>rarmos <strong>de</strong>formações da geometria diretamente na GPU,<br />

essa estimativa é feita inteiramente na GPU após as <strong>de</strong>formações com relação aos vértices.<br />

Para a estimativa <strong>de</strong> elementos <strong>de</strong> geometria diferencial <strong>de</strong> primeira or<strong>de</strong>m aos vértices, adap-<br />

tamos à GPU algoritmos tradicionais utilizados na CPU. Em particular, para o cálculo <strong>de</strong> vetores<br />

normais nos baseamos na técnica <strong>de</strong> Calver [2004]. Para o cálculo <strong>de</strong> vetores tangentes e bitangentes,<br />

utilizamos o algoritmo <strong>de</strong> Lengyel [2003]. Para o cálculo da estimativa discreta das proprieda<strong>de</strong>s <strong>de</strong><br />

geometria diferencial <strong>de</strong> segunda or<strong>de</strong>m ou or<strong>de</strong>ns mais elevadas, propomos um novo algoritmo capaz<br />

<strong>de</strong> produzir resultados robustos e eficientes apenas a partir da vizinhança <strong>de</strong> “1-anel” <strong>de</strong> malhas trian-<br />

gulares ou vizinhança imediata <strong>de</strong> nuvens <strong>de</strong> pontos 1 . Desse modo, mesmo para mo<strong>de</strong>los compostos<br />

<strong>de</strong> milhares <strong>de</strong> vértices, é possível estimar em tempo real proprieda<strong>de</strong>s tais como os coeficientes<br />

1 Em malhas triangulares, a vizinhança <strong>de</strong> 1-anel <strong>de</strong> um ponto p é o conjunto <strong>de</strong> pontos adjacentes a p através <strong>de</strong> uma<br />

única aresta. Em uma nuvem <strong>de</strong> pontos P , essa vizinhança po<strong>de</strong> ser interpretada como uma vizinhança imediata Pd(p)<br />

dada pelo conjunto <strong>de</strong> pontos com distância Euclidiana menor ou igual a um valor d: Pd(p) = {x ∈ P | |p−x| ≤ d} [Tang<br />

and Agam, 2005].

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

Saved successfully!

Ooh no, something went wrong!