Desenho de objetos em OpenGL -- Computação Gráfica

jSSessão 4.6  

 

 

         4.6. Posição da Câmera

 

Conforme dito nos tópicos anteriores, caso você não especifique uma matriz de projeção, ou seja, caso você faça a projeção com os comandos glOrtho ou glFrustum, o OpenGL especifica uma matriz default, na qual a câmera está alinhada com o eixo z. Isso significa que se você desenhar um cubo verá um quadrado.   

A posição da câmera pode ser alterada através das transformações geométricas já citadas sobre a matriz de visualização. O OpenGL coloca a câmera numa posição inicial ( no sentido contrário ao eixo Z) conforme abaixo:

 

Posição inicial da câmera

 

 

As mudanças feitas em relação a matriz Model-View (matriz de visualização) movem o mundo em relação a câmera, afetando assim a visualização dos objetos. Para modificar a matriz Model-View é necessário o seguinte comando :

    >> glMatrixMode(GL_MODELVIEW);

Cada operação realizada na matriz de visualização será realizada também em cada vértice dos objetos a serem desenhados.

Basta inserir o seguinte código depois da declaração da projeção.  

    >> glMatrixMode( GL_MODELVIEW ); 
    >> glLoadIdentity();
    >> glRotatef(-30, 1.0, 0.0, 0.0);
    >> glRotatef(30, 0.0, 1.0, 0.0);
    >> glRotatef(30, 0.0, 0.0, 1.0);
    >> glTranslatef(2.0,0.0,0.0);

Repare que a matriz Model-View está sendo modificada através dos comandos Rotate e Translate, fato esse que moverá o mundo de acordo com as transformações geométricas específicadas em relação a câmera. 

Voltando ao exemplo da projeção paralela ortogonal que visualiza duas pirâmides, podemos a partir daí criar um novo exemplo, no qual a câmera vai ter posição diferente. Na primeira figura, a câmera está alinhada ao eixo Z e na segunda foi feitas algumas transformações geométricas na matriz de visualização. 

Veja os resultados:

          

 

 

[principal]

[anterior]

[próxima]