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
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;
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
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
scaleVIEW
Após todas essas multiplicações e transformações aplicadas nós conseguimos obter nosso modelo 3D.
Por fim os códigos,
Main >> http://pastebin.com/J1szvE0h
Matrix.H >> http://pastebin.com/tXeHez7P