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.
50 Atributos elementares para manipulação direta<br />
Fig. 3.2: Seleção usando o modo <strong>de</strong> seleção do OpenGL.<br />
dados associados ao evento <strong>de</strong> interseção entre a geometria e o volume <strong>de</strong> recorte, tais como um<br />
i<strong>de</strong>ntificador numérico <strong>de</strong>finido pela aplicação e utilizado para i<strong>de</strong>ntificar a geometria intersectada, e<br />
valores mínimos e máximos <strong>de</strong> profundida<strong>de</strong> da geometria <strong>de</strong>ntro <strong>de</strong>sse volume <strong>de</strong> recorte. Tais dados<br />
são suficientes para que a aplicação <strong>de</strong>termine o objeto selecionado e a posição <strong>3D</strong> correspon<strong>de</strong>nte ao<br />
ponto <strong>de</strong> seleção. Esse procedimento é realizado sem requerer processamento em um banco <strong>de</strong> dados<br />
da cena na CPU. Para <strong>de</strong>terminar tais dados, o OpenGL utiliza as próprias primitivas enviadas pela<br />
aplicação para o fluxo <strong>de</strong> ren<strong>de</strong>rização.<br />
Explorando as características do OpenGL, mostramos em [Wu et al., 2003] a possibilida<strong>de</strong> <strong>de</strong><br />
realizar seleção <strong>3D</strong> com o uso do modo <strong>de</strong> seleção (para selecionar objetos convexos) e o buffer<br />
estêncil (para selecionar objetos não convexos), tornando <strong>de</strong>snecessário o uso do algoritmo <strong>de</strong> ray<br />
picking com a existência do mo<strong>de</strong>lo geométrico na CPU. Nesta ocasião, exploramos a idéia utilizar<br />
um conjunto mínimo e suficiente <strong>de</strong> proprieda<strong>de</strong>s geométricas (posição <strong>3D</strong> e vetor normal) do mo<strong>de</strong>lo<br />
para realizar a tarefa <strong>de</strong> seleção e posicionamento restrito.<br />
<strong>Uma</strong> vez que os selection hits são calculados após o processamento <strong>de</strong> vértices, o modo <strong>de</strong> se-<br />
leção leva em consi<strong>de</strong>ração a geometria modificada no estágio <strong>de</strong> processamento <strong>de</strong> vértices da GPU.<br />
Entretanto, a modificação <strong>de</strong> fragmentos no processador <strong>de</strong> fragmentos não é consi<strong>de</strong>rada, já que a<br />
seleção é avaliada antes da rasterização. Além disso, não é possível obter dados geométricos adi-<br />
cionais sobre os pontos <strong>de</strong> interseção, como o vetor normal à superfície nesses pontos. Em [Wu et al.,<br />
2003], o vetor normal ainda é calculado pela aplicação.<br />
Atualmente, as GPUs contam com uma funcionalida<strong>de</strong> <strong>de</strong> consulta <strong>de</strong> visibilida<strong>de</strong> <strong>de</strong> fragmentos,<br />
conhecida como hardware occlusion queries [Microsoft, 2006]. Ao habilitar essa consulta, a GPU<br />
calcula, para todas as primitivas enviadas ao fluxo <strong>de</strong> visualização, a quantida<strong>de</strong> <strong>de</strong> fragmentos que<br />
passam pelo teste <strong>de</strong> profundida<strong>de</strong> e estão <strong>de</strong> fato visíveis na tela. Esse processamento é realizado <strong>de</strong>