28 pontos por kciter1 2024-05-07 | 3 comentários | Compartilhar no WhatsApp

Explica o pipeline de renderização 3D enquanto implementa um renderizador 3D em ASCII

O resultado deste artigo pode ser visto, além do post no blog, nos links a seguir
GitHub: https://github.com/kciter/ascii-3d-renderer.js
Chromatic: https://6637eb83d047d2bb1b3cfe67-bdnazvfsel.chromatic.com/?path=/story…

  • É possível fazer ASCII parecer 3D?
    • ASCII é semelhante a pixels em preto e branco ampliados
    • É possível ajustar o brilho de acordo com a densidade dos caracteres
  • Como transformar coordenadas 3D em coordenadas 2D?
    • O processo é dividido, em linhas gerais, em processamento de vértices, rasterização e processamento de fragmentos
    • Coordenadas 3D são chamadas de vértices e representam "pontos" posicionados no espaço 3D
    • Um único vértice não é suficiente para representar um objeto, então os vértices são agrupados para formar objetos
    • A menor unidade para representar um objeto é chamada de polígono
  • Processamento de vértices
    • O processo de transformar vértices é chamado de processamento de vértices
    • Segue a ordem de transformação de mundo, transformação de visão e transformação de projeção
    • Cada transformação é calculada usando matrizes
    • A transformação de mundo posiciona no espaço 3D os vértices contidos no arquivo do modelo 3D
    • A transformação de visão posiciona a câmera e calcula de quais coordenadas e de qual ponto de vista o objeto será observado
    • A transformação de projeção é o cálculo para expressar perspectiva. Normalmente usa-se projeção em perspectiva.
    • Com a transformação de projeção, é possível converter para coordenadas no espaço 2D
  • Rasterização
    • É o processo de converter coordenadas no espaço 2D em coordenadas de pixel
    • Passa por clipping, divisão por perspectiva, remoção de faces traseiras, transformação de viewport e varredura de linhas
    • Neste artigo, essas etapas são implementadas misturadas de forma apropriada
  • Processamento de fragmentos
    • É o processo de tratar as coordenadas convertidas em pixels
    • Em renderizadores 3D comuns, são feitos pós-processamentos como cálculos de shader
    • Neste artigo, aplica-se apenas o resultado do cálculo de iluminação
  • Como a parte de implementação é quase toda composta por código-fonte, ela foi omitida deste resumo

3 comentários

 
cosine20 2024-05-09

Gostei muito de ler. Foi bom relembrar a aula de computação gráfica que tive na graduação.

 
toaonly 2024-05-08

Foi uma leitura divertida. Fiquei impressionado com o fato de você ter trabalhado levando em conta até a posição da câmera.

 
thesol9 2024-05-07

Até a explicação do pipeline básico de renderização
foi um conteúdo muito interessante.