sexta-feira, 6 de maio de 2016

Pipeline Gráfico - CG Atividade 2 

Em Computação gráfica 3D, o pipeline gráfico é uma sequência de passos para criar uma representação 2D de uma cena 3D.


A representação  do modelo 3D passa por 5 espaços:

  • Espaço do objeto
  • Espaço do universo
  • Espaço da câmera
  • Espaço projetivo (recorte)
  • Espaço canônico
Espaço do objeto
Cada objeto esta contido em seu próprio espaço tridimensional, onde são definidos suas dimensões(descrição dos vértices dos triângulos que dão forma ao objeto). Neste espaço poderemos aplicar qualquer transformação sobre o objeto: rotação, translação, shear e/ou escala.

Espaço do universo
O espaço do universo é onde esta descrito todos os vértices dos triângulos de todos os objetos, para isso, os objetos precisam passar por uma transformação, e os seus vértices que eram descritos nas coordenadas do espaço do objeto, neste espaço são descritos no sistema de coordenadas do universo.

Espaço da câmera
No espaço da câmera todos os objetos descritos no Espaço do universo serão descritos em um novo sistema de coordenadas, este sistema é criado levando em conta a posição da câmera.
 

Para ser feita a passagem do espaço do objeto para o espaço do universo nós devemos levar em consideração a aplicação de algumas transformações geométricas , sendo estas a Escala, Translação e Rotação.


Todas as transformações são aplicadas usando multiplicação de matrizes e vetores.

Matriz essa que será a MYVIEW, após essa criação poderemos unir essa matriz com a Model, 
criando a MYMODELVIEW.
Após a criação dos valores de base da câmera poderemos criar as matrizes necessárias para a criação da View.
Serão estas as matrizes BT e T.

BT
{ Xcx, Xcy, Xcz, 0},
{ Ycx, Ycy, Ycz, 0},
{ Zcx, Zcy, Zcz , 0},
{   0,      0,      0,     1}

T
{1,  0,  0,  -posx}
{0,  1,  0,  -posy}
{0,  0,  1,  -posz}
{0,  0,  0,      1   }

MYVIEW = BT * T;




Nessa aplicação que irei demonstrar utilizamos uma matriz de projeção mais simples que leva em conta somente o valor da distância entre a câmera e o near plane.

Matriz Projeção
https://www4c.wolframalpha.com/Calculate/MSP/MSP6971b35a6gf14h36357000032547655d847dd55?MSPStoreType=image/gif&s=47

Após essas transformações poderemos realizar a primeira aplicação nos vetores, através da matriz resultante gerada até o momento, a MYMODELVIEWPROJECTION, resultado das multiplicações entre essas matrizes.


translateVIEW
https://www5b.wolframalpha.com/Calculate/MSP/MSP150020aha3dih9174i9i000053i88b5d8dh332h0?MSPStoreType=image/gif&s=60
scaleVIEW
https://www5b.wolframalpha.com/Calculate/MSP/MSP25271cag46geb1c1gg80000039ge880ec9a4h332?MSPStoreType=image/gif&s=51


Após todas essas multiplicações e transformações aplicadas nós conseguimos obter nosso modelo 3D.

Esqerda: modelo gerado pipiline grafico. Direita: Modelo Gerado Pelo Objet Loader







Por fim os códigos,
Main         >> http://pastebin.com/J1szvE0h
Matrix.H   >> http://pastebin.com/tXeHez7P