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.

120 <strong>Arquitetura</strong> <strong>de</strong> interação<br />

região <strong>de</strong> interesse contém o pixel apontado pelo cursor 2D, o atributo retornado é, <strong>de</strong> fato, o<br />

i<strong>de</strong>ntificador do mo<strong>de</strong>lo apontado pelo cursor.<br />

A seguir mostramos uma listagem <strong>de</strong> código exemplificando a aplicação <strong>de</strong>ste procedimento <strong>de</strong><br />

uso para a implementação <strong>de</strong> uma tarefa simples <strong>de</strong> seleção. Os comandos utilizados seguem a<br />

interface <strong>de</strong> programação <strong>de</strong>scrita no apêndice C e utilizam a linguagem C++ com a API OpenGL<br />

e a biblioteca utilitária GLUT. Por simplicida<strong>de</strong>, neste exemplo a geometria é apenas um triângulo,<br />

e os sha<strong>de</strong>rs <strong>de</strong> modificação <strong>de</strong> atributos <strong>de</strong> vértices e fragmentos não modificam esses atributos<br />

(figura 5.11). A implementação <strong>de</strong>ste procedimento <strong>de</strong> seleção em uma cena mais complexa é <strong>de</strong>scrita<br />

na seção 6.2.<br />

Ressaltamos que, comparando com a programação convencional, foi necessário fazer somente as<br />

seguintes modificações:<br />

• Instanciar a arquitetura <strong>de</strong> interação e inicializar o ambiente junto com as funções <strong>de</strong> inicializa-<br />

ção do OpenGL na função Init().<br />

• Chamar, na função <strong>de</strong> ren<strong>de</strong>rização Display(), o comando <strong>de</strong> execução do fluxo <strong>de</strong> proces-<br />

samento da arquitetura e o comando <strong>de</strong> <strong>de</strong>codificação dos atributos calculados.<br />

• Definir a região <strong>de</strong> interesse em relação à posição do cursor do dispositivo apontador 2D.<br />

#inclu<strong>de</strong> "CIntManager.h"<br />

#inclu<strong>de</strong> <br />

#inclu<strong>de</strong> <br />

// Tamanho da região <strong>de</strong> interesse<br />

#<strong>de</strong>fine ROIW 1<br />

#<strong>de</strong>fine ROIH 1<br />

CIntManager *g_pIntManager = NULL;<br />

float *g_pROI[1]; // Array com o conteúdo da região <strong>de</strong> interesse<br />

float g_fNear = 1.0; float g_fFar = 20.0;<br />

// Função <strong>de</strong> chamada <strong>de</strong> retorno para atualizar e ren<strong>de</strong>rizar a geometria<br />

void UpdateRen<strong>de</strong>rCallBack( CIntObj *pObj, void *pUserData ) {<br />

glPushMatrix( );<br />

glBegin( GL_TRIANGLES );

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

Saved successfully!

Ooh no, something went wrong!