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.

3.2 Estudo <strong>de</strong> casos 49<br />

Fig. 3.1: Estimativa incorreta do ponto <strong>de</strong> interseção entre a geometria <strong>de</strong>formada na GPU e o raio <strong>de</strong><br />

seleção calculado com ray picking avaliado na CPU.<br />

2002, 2004]. Neste tipo <strong>de</strong> animação, um mo<strong>de</strong>lo estático é submetido à GPU, juntamente com uma<br />

hierarquia <strong>de</strong> matrizes <strong>de</strong> transformação e atributos <strong>de</strong> vértices contendo valores <strong>de</strong> pon<strong>de</strong>ração da<br />

influência <strong>de</strong> cada matriz. Em tempo <strong>de</strong> execução, apenas as matrizes são modificadas e enviadas<br />

novamente à GPU. O processador <strong>de</strong> vértices aplica tais transformações a cada vértice <strong>de</strong> acordo<br />

com os valores <strong>de</strong> pon<strong>de</strong>ração associados, sem precisar recorrer à CPU. O resultado é uma geome-<br />

tria <strong>de</strong>formada, enviada diretamente para ren<strong>de</strong>rização. Para interação, este procedimento é repetido<br />

na CPU <strong>de</strong> modo a obter o mesmo resultado <strong>de</strong> <strong>de</strong>formação, porém sobre o mo<strong>de</strong>lo armazenado na<br />

memória do sistema. Tal abordagem prejudica o <strong>de</strong>sempenho da aplicação em razão da necessida<strong>de</strong><br />

<strong>de</strong> processar a geometria duas vezes durante a interação: uma para visualização e outra para interação.<br />

Outra abordagem, igualmente ineficiente, consiste em <strong>de</strong>ixar <strong>de</strong> utilizar a GPU para <strong>de</strong>formação <strong>de</strong><br />

geometria nos momentos em que o processamento para interação é exigido. Nesses casos, a aplicação<br />

<strong>de</strong>ve enviar a geometria já modificada à GPU, o que gera um gargalo no barramento. Mais do que<br />

isso, tanto a abordagem <strong>de</strong> realizar o cálculo duas vezes (na CPU e na GPU), como a <strong>de</strong> ignorar o<br />

processamento na GPU durante a interação, são inviáveis quando se <strong>de</strong>seja trabalhar com <strong>de</strong>formação<br />

<strong>de</strong> geometria em seu nível <strong>de</strong> fragmentos, pois este caso implicaria a implementação, na CPU, <strong>de</strong> todo<br />

o estágio <strong>de</strong> processamento <strong>de</strong> fragmentos.<br />

A API OpenGL fornece uma abordagem alternativa para a tarefa <strong>de</strong> seleção e posicionamento<br />

através <strong>de</strong> um modo especial <strong>de</strong> ren<strong>de</strong>rização chamado modo <strong>de</strong> seleção [Shreiner et al., 2005]. No<br />

modo <strong>de</strong> seleção, fragmentos <strong>de</strong> pixels não são gerados a partir da rasterização. Em vez disso, se a<br />

geometria produz uma interseção com um “volume <strong>de</strong> recorte” <strong>de</strong>finido pelo volume <strong>de</strong> visualização<br />

e por planos <strong>de</strong> recorte <strong>de</strong>finidos pela aplicação, um evento <strong>de</strong> seleção (selection hit) é gerado e<br />

retornado para a aplicação. <strong>Uma</strong> ilustração <strong>de</strong>sse procedimento é mostrada na figura 3.2. Em geral,<br />

o volume <strong>de</strong> recorte utilizado no modo <strong>de</strong> seleção é configurado <strong>de</strong> forma semelhante ao volume<br />

<strong>de</strong> visualização, porém envolvendo apenas o pixel apontado pelo cursor. Cada selection hit contém

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

Saved successfully!

Ooh no, something went wrong!