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.

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

<strong>de</strong> <strong>de</strong>rivadas <strong>de</strong> terceira or<strong>de</strong>m, em especial o tensor <strong>de</strong> <strong>de</strong>rivada <strong>de</strong> curvatura. Da mesma forma que<br />

o tensor <strong>de</strong> curvatura é obtido através da média dos tensores das faces, os coeficientes do tensor <strong>de</strong><br />

<strong>de</strong>rivada <strong>de</strong> curvatura são estimados para cada face e então aproximados para os vértices através <strong>de</strong><br />

uma média pon<strong>de</strong>rada. A formulação utilizada para estimar os coeficientes do tensor <strong>de</strong> <strong>de</strong>rivada<br />

<strong>de</strong> curvatura é aquela das equações 3.26 até 3.29, i.e., utilizando as direções principais como bases<br />

tangentes locais.<br />

4.2 Nossa proposta<br />

A seguir apresentamos nossa abordagem para a estimativa <strong>de</strong> proprieda<strong>de</strong>s <strong>de</strong> geometria diferen-<br />

cial na GPU sobre mo<strong>de</strong>los <strong>3D</strong> que sofrem <strong>de</strong>formações <strong>de</strong> geometria no processador <strong>de</strong> vértices. A<br />

estimativa <strong>de</strong> elementos <strong>de</strong> primeira or<strong>de</strong>m é realizada <strong>de</strong> acordo com algoritmos já conhecidos na<br />

literatura, mas adaptados à arquitetura das atuais GPUs. Para a estimativa <strong>de</strong> elementos <strong>de</strong> segunda<br />

e terceira or<strong>de</strong>m, propomos uma abordagem original <strong>de</strong> fácil implementação em hardware gráfico.<br />

Através <strong>de</strong> uma comparação com outras técnicas, mostramos que ela é ao mesmo tempo eficiente e<br />

capaz <strong>de</strong> fornecer resultados robustos até mesmo em malhas amostradas irregularmente ou com ruído<br />

<strong>de</strong> <strong>de</strong>slocamento ao longo do vetor normal.<br />

4.2.1 Elementos <strong>de</strong> primeira or<strong>de</strong>m<br />

Para a estimativa <strong>de</strong> elementos <strong>de</strong> primeira or<strong>de</strong>m, baseamo-nos no método <strong>de</strong> Calver [2004] que<br />

calcula a estimativa do vetor normal em cada vértice da malha segundo a adaptação para a GPU<br />

do tradicional algoritmo <strong>de</strong> dois passos <strong>de</strong> Blinn [1977]. Entretanto, para tornar o algoritmo mais<br />

robusto, removemos a limitação do número faces adjacentes. Ao contrário, consi<strong>de</strong>ramos todas as<br />

faces adjacentes a cada vértice ao computar a média dos vetores normais nos vértices. Desse modo,<br />

os resultados que po<strong>de</strong>mos obter são tão robustos quanto se eles tivessem sido realizados usando o<br />

algoritmo <strong>de</strong> Blinn [1977] na CPU.<br />

Para a proposta <strong>de</strong> uma arquitetura <strong>de</strong> suporte a tarefas <strong>de</strong> interação <strong>3D</strong>, esten<strong>de</strong>mos o método<br />

<strong>de</strong> Calver [2004] <strong>de</strong> modo a calcular os vetores tangentes e bitangentes alinhados segundo a para-<br />

metrização das coor<strong>de</strong>nadas <strong>de</strong> textura no mo<strong>de</strong>lo [Lengyel, 2003]. Para isso utilizamos o mesmo<br />

princípio <strong>de</strong> armazenar atributos <strong>de</strong> vértices e relações <strong>de</strong> adjacência em texturas. Assim como no<br />

cálculo <strong>de</strong> vetores normais, não impomos uma restrição quanto ao número máximo <strong>de</strong> faces adja-<br />

centes a cada vértice.<br />

Para criar um mapa <strong>de</strong> adjacência no qual o número <strong>de</strong> faces adjacentes a cada vértice não é<br />

fixo, primeiramente calculamos na CPU os índices das faces adjacentes a cada vértice. O resultado é

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

Saved successfully!

Ooh no, something went wrong!