Skip to content

Minoxs/penguin-cafe-fcg-UFRGS

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Penguin Cafe

Um café onde penguins servem comida para outros penguins

Ninguém nunca teve essa ideia antes, confia. Favor não olhar o click jogos. https://www.crazygames.com/game/penguin-diner

3 leis de Gastal

  • No MÁXIMO 15% de código pronto (exceto desenvolvido em aulas práticas)
  • Sempre que utilizar código pronto, comentar com "FONTE" para que possa ser identificado com facilidade
  • Proibido uso de funções 'glu' que simplificam a manipulação de vetores e tal
    • gluLookAt()
    • gluOrtho2D()
    • gluPerspective()
    • gluPickMatrix()
    • gluProject()
    • gluUnProject()
    • glm::lookAt()
    • glm::ortho()
    • glm::perspective()
    • glm::pickMatrix()
    • glm::rotate()
    • glm::scale()
    • glm::translate()
    • dentre outras

Requisitos

Mais detalhes dos requisitos podem ser vistos no Moodle da cadeira

  • Interação em Tempo Real
  • Objetivo/Lógica não-trivial
  • Utiliza as matrizes vista em aula
  • Interação com usuário utilizando teclado e mouse
  • Malhas poligonais complexas
    • Um modelo mais complexo que a vaca
  • Transformações geométricas em outros objetos além da câmera
  • Controle de câmeras virtuais
    • Câmera Look-At
    • Câmera Livre
  • Diversas instâncias do mesmo objeto, com diferentes matrizes de modelo
  • Testes de intersecção entre objetos virtuais
    • Três tipos de teste de intersecção
      • Teste Cubo-Cubo
      • Teste Esfera-Esfera
      • Teste Esfera-Cubo
    • Arquivo nomeado collisions.cpp
  • Modelos de iluminação
    • Lambert E Blinn-Phong
    • Interpolação de Iluminação
      • Gouraud
      • Phong
  • Mapeamento de Texturas
    • Dois objetos
  • Curva de Bézier
    • Um objeto cujo caminho é definido por curva de Bézier
  • Animação de Movimento baseada no tempo
    • Todas as movimentações de objetos (incluindo da câmera) devem ser computadas baseado no tempo.

Compilação

Para compilar o código com biblioteca estática, basta buildar o target PenguinCafe.
Caso prefira utilizar bibliotecas dinâmicas, disponibilizamos o target PenguinCafeDLL.

Na pasta lib estão disponilizadas as bibliotecas. Utilizamos o GLFW do mingw64, porém, caso precise mudar para outro compilador ou plataforma basta modificar os arquivos que estão na pasta e o resto da compilação deve funcionar corretamente.

Tarefas

  • Organizar código atual em diferentes pacotes
    • File Handling
    • Rendering
    • Player Movement
    • Apenas código do GLFW na main
  • Mapear funcionalidades
  • Descobrir como enviar dados de objetos uma vez só para a GPU (Vamos suportar apenas UV mapping)
  • Descobrir como ter várias texturas em um shader só
    • Utilizar um ID para selecionar qual textura está sendo utilizada
    • Utilizar textura definida no material (No Need)
  • Implementar primeira pessoa
    • Talvez precise de um shader específico
  • Suportar especularidade
    • Implementar modelos de iluminação
  • Definir escopo do jogo
  • Implementar lógica de jogo
  • Implementar colisão
  • Criar cena que será utilizada no jogo
  • Definir quais objetos vamos utilizar
    • "Limpar" objetos
    • Diminuir resolução das imagens
    • Linkar referências dos objetos/texturas
    • Não esquecer de um modelo altamente complexo

Referências

Por enquanto, somente coisas utilizadas durante a cadeira.

Modelos altamente complexo:

  • Caixa registradora (parte principal):
    • 800 Kb
    • 5.500 vértices
  • Barril:
    • 1 Mb
    • 5.600 vértices
  • Bolo:
    • 1,1 Mb
    • 6.800 vértices

Referências de Modelos com Textura

Código

  • Coisas dos labs
  • Tudo original 😎
  • Muito Polimorfismo 🪿

About

Trabalho Final de FCG UFRGS 2022

Resources

Stars

Watchers

Forks

Languages