WebGL-Tutorials

Place to do random C.G. things and hopefully make tutorials out of them.

O que é isso?

Esse é o meu trabalho final da disciplina de Computação Gráfica. A disciplina é parte do curso de Ciência da Computação na UFRJ (Universidade Federal do Rio de Janeiro), e foi ministrado pelo professor Paulo Roma, no primeiro semestre de 2019.

A descrição do trabalho está na página do professor, especificamente o item 6:

Versão em Inglês

Estou fazendo toda a parte documental em português primeiro, e o código em inglês. Mais pra frente vou atualizar a parte da documentação em inglês.

versão en-US

Linha do tempo

Esse trabalho foi feito em forma de linha de tempo. Isso quer dizer que cada item da sequência é baseado no item anterior, então a qualidade do código em geral vai melhorando a medida que avançamos nos exemplos.

Pretendo melhorar o código de cada passo com o tempo, e talvez transformar isso numa forma de tutorial. Eu queria que cada exemplo tivesse no HTML somente o código pertinente ao exemplo, e mover outras dependências para um arquivo JS externo… mas por enquanto não está assim, todo o código está dentro de cada HTML.

Dia 1

No primeiro dia foi tudo bem simples. O THREE JS cuida de vários aspectos para o programador, que não tem que lidar com shaders, nem com a complexidade de carregar as faces na ordem correta.

Também é bem símples lidar com iluminação, cores dos objetos, e renderização em vários formatos: iluminado, aramado, entre outros.

  1. Cena simples
  2. Animando a cena
  3. Iluminação simples
  4. Geometria customizada de cilindro
  5. Arestas da geometria
  6. Normais computadas
  7. Normais da geometria customizada calculadas manualmente
  8. Aramado e normais

Dia 2

No segundo dia, tive que lidar com as complexidades de mapear texturas. O principal problema é mapear texturas em superfícies que não possuem um mapeamento linear para as coordenadas de textura chamadas de UV.

Veja mais: Relatório sobre texturização do cilindro

  1. Texturizando o cilindro

Dia 3

Uma das coisas que fazem falta é poder controlar manualmente os objetos na tela. Portanto, no terceiro dia vou adicionar controles usando o teclado e mouse.

Além disso vou adicionar botões e caixas para poder configurar a figura na tela, permitir visualizar as várias formas de renderização, alterar texturas, cores e outras características.

Veja mais: Relatório sobre rotação usando teclado e mouse

  1. Rotação de câmera, objeto e luzes usando teclado e mouse
  2. Configurações de cor, textura e outras
  3. Configuração de aramado e de materiais