Nessa postagem será mostrado o desenvolvimento de um pipeline gráfico através da implementação de um pipeline completo, capaz de transformar vértices descritos no espaço do objeto em primitivas rasterizadas no espaço da tela.
Assim como no trabalho anterior, a implementação do pipeline gráfico será feita utilizando a linguagem de programação C/C++, com o suporte de um loader de arquivos OBJ disponibilizado pelo professor.
Descrição do pipeline gráfico
Em computação gráfica, pipeline gráfico é uma sequência de transformações que deve ser seguida para criar a representação uma cena 3D em um cenário 2D. Basicamente, cada passo do pipeline transforma descrições geométricas de um um sistema de coordenadas para outro.
![]() |
Passos do pipeline gráfico |
Espaço do objeto
Inicialmente é necessário criar um modelo que será descrito no seu própio sistema de coordenadas que define o espaço do objeto. Para isso existem ferramentas que dão suporte a modelagem de objetos nos seus respectivos espaços.
![]() |
Exemplo de um objeto modelado no Blender. |
Transformação: Espaço do Objeto→Espaço do Universo
Esta etapa do pipeline gráfico é responsável pela transição dos vértices do espaço do objeto para o espaço do universo que por sua vez contém todos os objetos que compõem a cena.
![]() |
Transformação para o espaço do objeto |
Matriz de modelagem
Para realizar a transformação dos vértices para o espaço do universo, é feita a multiplicação destes vértices por uma matriz denominada matriz de modelagem (ou model matrix). A matriz de modelagem é composta por uma sequência de transformações geométricas que levam o modelo do espaço do objeto para o espaço do universo. As transformações que podem compor a matriz de modelagem são a escala, rotação, translação e cisalhamento (shear).
Transformação: Espaço do Universo → Espaço da Câmera
Esta etapa do pipeline gráfico é responsável por transformar os vértices do espaço do universo para o espaço da câmera. Para isso é definido de onde os objetos serão visualizados, ou seja, a posição da câmera e para onde ela está apontando, no sistema de coordenadas do universo.
![]() |
Posição de visualização |
Considerando a posição da câmera como a nova origem do sistema, é necessário realizar um processo chamado ortogonalização. Esse processo define uma base ortonormal a partir da posição da câmera, para onde ela aponta e seu vetor "up".
Por fim é aplicada a mudança de base que leva os vértices que estão no sistema de coordenadas do universo para o sistema de coordenadas da câmera.
![]() |
Transformação para o espaço da câmera |
Matriz de visualização
A transformação dos vértices no espaço do universo para o espaço da câmera é feita através da multiplicação destes vértices por uma matriz chamada matriz de visualização (ou view matrix). A matriz de visualização é composta por uma translação e uma rotação. Esta translação e esta rotação são definidas através do vetores de posição, direção e "up", da câmera.
Transformação: Espaço da Câmera → Espaço de Recorte
Nesta etapa do pipeline gráfico, os vértices são transformados do espaço da câmera para o espaço de recorte (ou projetivo). Nesse processo os vértices que formam a cena são projetados contra o viewplane. O resultado desse processo depende do tipo de projeção a ser feita, que pode ser ortogonal onde o paralelismo das retas são preservados, ou perspectiva que permite a sensação de profundidade dos objetos na tela.
![]() |
Comparação entre a projeção ortogonal e a projeção perspectiva |
Matriz de projeção
A transformação dos vértices do espaço a câmera para o espaço de recorte é dada pela multiplicação dos vértices pela matriz de projeção (ou projection matrix), fazendo com que esses vértices sejam projetados no plano de projeção (viewlplane). Após essa transformação, a coordenada homogênea dos vértices provavelmente serão diferente de 1.
Transformação: Espaço de Recorte → Espaço "Canônico"
Nesta etapa do pipeline gráfico, os pontos do espaço de recorte são transformados para o espaço canônico. Isto é feito dividindo as coordenas dos vértices no espaço de recorte pela sua coordenada homogênea. Com esta transformação a geometria da cena é alterada, de tal forma que os objetos mais afastados da câmera se tornam menores.
Transformação: Espaço "Canônico" → Espaço da Tela
Nesta etapa, os pontos no espaço canônico são transformados para o espaço da tela através da multiplicação destes pontos pela matriz viewport. A matriz viewport é formada pela multiplicação de matrizes de translação e escala, que transformam as coordenadas dos vértices para a correta rasterização da cena na tela.
Rasterização do modelo no espaço da tela
Nesta última etapa é gerada a rasterização do modelo transformado pelo pipeline gráfico. A rasterização é feita com o que foi implementado no trabalho anterior.
Para que o resultado final do pipeline gráfico implementado nesse trabalho (cabeça marrom) ficasse o mais próximo do exemplo disponibilizado pelo professor (cabeça branca), foi necessário algumas alterações de escala e na distância do viewplane. Além de adicionar a rotação para se obter o efeito de movimento como visto no vídeo.
Dificuldades
A maior dificuldade neste trabalho esteve nos detalhes implementação das transformações de um espaço para outro, além de garantir que cada etapa do pipeline gráfico estivesse funcionando corretamente. Outra dificuldade neste trabalho foi descrever cada passo do pipeline de uma forma inteligível e não cansativa.
Melhorias
Melhorias podem ser feitas no desempenho de cada passo do pipeline evitando alguns cálculos desnecessários, uma vez que as transformações são aplicadas a uma quantidade grande de vértices.
Repositório
O trabalho apresentado neste blog pode ser encontrado no seguinte repositório:
Referências
- Notas de aula
- Script feito no octave (disponibilizado pelo professor)
Las Vegas' Wynn Casino - JTM Hub
ResponderExcluirCasino. novcasino Wynn is a $4 billion resort with four https://septcasino.com/review/merit-casino/ hotel towers with 출장안마 5,750 rooms and suites. Each of the hotel towers includes a 20,000 square foot casino and apr casino a