Uma implementação de uma câmera simples usada para navegar em um mundo 3D. É possível girar a câmera movendo o mouse e se mover usando as teclas W, A, S e D (ESC para fechar o aplicativo).
Pode ser usado, por exemplo, em jogos em primeira pessoa ou em aplicativos CAD.
Como uma pequena vitrine, criamos um labirinto muito simples.
A grama e as paredes são renderizadas usando shaders.
Também implementamos um sistema de colisão, como o usuário, não vai "dentro" de uma parede, mas ele parará antes dele.
Projeto Final para o Curso Graphics de Computador (AY 2020/2021) da Universidade de Ferrara.
Teacher: Antonino Casile
Students: Alberto Paparella Badge number: 144261
Martina Tenani Badge number: 144739
Existem duas maneiras de mudar para um ponto no espaço.
O primeiro é mudar a posição da câmera e movê -la para esse ponto (não é possível no OpenGL), a outra está mudando a posição do ponto e trazendo -a para a câmera.
Simplesmente falando, para produzir o efeito de seguir em frente, você avance ou traz o mundo para trás.
Portanto, para produzir o efeito de ir ao ponto (x, y) no espaço, é possível traduzir o mundo ao ponto (-x, -y), e será indistinguível.
Se você deseja olhar para o lado direito, gire o mundo para a esquerda.
É por isso que usamos os valores negativos dos ângulos enquanto giram.
Nota importante: sempre gire primeiro e depois traduz.
Para o sistema de colisão, implementamos a lógica seguinte: verifique se a próxima etapa localizará o objeto ao seu redor; Se for esse o caso, não atualize as matrizes nessa direção.
Vá para o diretório principal do projeto sfpg/ com a linha de comando e inicie o comando make .
O projeto criará um executável no mesmo diretório chamado sfpg , que pode ser lançado com ./sfpg .
Todos os arquivos .O são armazenados no diretório obj/ para manter as coisas limpas.