Skip to content
/ fcg Public

Trabalho Final de Fundamentos de Computação Gráfica (FCG) - 2025/1

Notifications You must be signed in to change notification settings

jspast/fcg

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

84 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

FCG - Trabalho Final

2025/1 - Turma A

Dupla: João Pastorello e Isadora Schwaab

Contribuições

O contribuinte João Pastorello foi responsável pela montagem inicial da estrutura do projeto, baseada na refatoração do código disponibilizado pelo professor nas atividades de laboratório. Encontrou os modelos de objetos e texturas utilizados no jogo; implementou o sistema de estados que rege o fluxo de controle da aplicação, organizou a implementação das câmeras (livre e look-at) e aplicou os mapeamentos de textura, modelos de iluminação e de interpolação de todos os objetos. Também foi responsável pela aplicação dos testes de colisão e das features extras (Reflection Mapping, seleção de casas do tabuleiro com mouse e mapeamento de normais).

A contribuinte Isadora Schwaab foi responsável pela organização final da instanciação dos objetos (em nível de instâncias que diferem apenas em sua posição). Também foi responsável pela implementação da lógica de jogo (mapeamento entre o jogo 3D e um tabuleiro virtual, que é modificado conforme os inputs), bem como pela animação das peças na captura a partir de curvas de Bézier cúbicas (incluindo a aplicação de um dos testes de colisão na captura) e pela moviementação automática da câmera look-at após uma jogada (que também é implementada como uma animação baseada em tempo decorrido).

Uso de IAs generativas

O ChatGPT foi utilizado principalmente para esclarescer conceitos de C++, como o uso de ponteiros inteligentes, estruturas de dados e processamento assíncrono. Além disso, gerou um esboço do sistema de estados (classes GameState e GameStateManager) que foi adaptado e incrementado para a utilização no jogo. No geral, a ferramenta foi útil, mas se mostrou incapaz de auxiliar com decisões complexas. Conseguiu substituir muitas buscas rápidas na documentação e internet, mas não tarefas de raciocínio lógico avançado.

O Deepseek também foi utilizado como auxiliar para a implementação da lógica de jogo, esclarescendo a documentação da biblioteca Chess Library (Disservin) e fornecendo exemplos práticos para a aplicação de funções.

Conceitos de Computação Gráfica aplicados no desenvolvimento

  • Malhas poligonais complexas
  • Transformações geométricas controladas pelo usuário
  • Câmera livre e câmera look-at
  • Instâncias de objetos
  • Três tipos de testes de intersecção
  • Modelos de Iluminação Difusa e Blinn-Phong
  • Modelos de Interpolação de Phong e Gouraud
  • Mapeamento de texturas em todos os objetos
  • Movimentação com curva Bézier cúbica
  • Animações baseadas no tempo ($\Delta t$)

Extras:

  • Mapeamento de normais
  • SkyBox com Reflection Mapping
  • Seleção de casas do tabuleiro com o mouse

Malhas poligonais complexas

Modelo de Iluminação Difusa de Lambert com Interpolação de Gouraud

Modelo de Iluminação de Blinn-Phong com Interpolação de Phong

Seleção de casas do tabuleiro com o mouse

Manual de usuário

Executando a aplicação, o usuário deve ter acesso a um menu simples. Ele pode:

  • alterar a qualidade das texturas carregadas, para que estejam correspondentes aos recursos do ambiente de execução;
  • iniciar um novo jogo, clicando no botão 'JOGAR'.

Na tela de jogo, o controle se dá tanto através do mouse quanto do teclado. O usuário pode:

  • usar o scroll do mouse para controlar a aproximação da câmera look-at com o ponto de foco;
  • usar a tecla ESC para poder movimentar a câmera look-at com o mouse;
  • mover o cursor sobre o tabuleiro para indicar uma casa (que fica colorida em verde);
  • clicar em uma casa do tabuleiro (com o botão esquerdo do mouse) para seleciona-la (tornando a casa azul);
  • com o cursor posicionado fora do tabuleiro, ele pode ainda controlar a seleção da casa com as teclas UP, DOWN, LEFT e RIGHT do teclado; como uma casa pré-selecionada (verde), o usuário pode usar a tecla ENTER para selecioná-la (tornando-a azul);
  • usar a tecla O para entrar no modo observador;
  • usar a tecla F3 para exibir informações de depuração na tela.

Estando no modo observador (o qual captura o cursor, não permitindo que o usuário faça um movimento de peça), o usuário pode:

  • se movimentar com as teclas W, A, S e D, determinando sua direção com o cursor do mouse;
  • voltar para o modo de jogo com a tecla O.

O jogo segue a lógica de xadrez comum, alternando entre turnos. Contudo, não permite jogadas especiais (promoção de peça, roque, en-passant...). A aplicação detecta automaticamente o fim de jogo e exibe na tela o resultado correspondente. Encerrado o jogo, é necessário reiniciar a aplicação para jogar novamente.

Compilação

Este repositório faz uso de submódulos git para incluir bibliotecas externas. Para clonar o repositório juntamente com os submódulos utilizados, use o seguinte comando:

git clone --recurse-submodules https://github.com/jspast/fcg.git

Caso o repositório já esteja clonado sem os submódulos, use o comando:

git submodule update --init --recursive

Windows

VSCode (Visual Studio Code)

  1. Instale o VSCode.

  2. Instale o compilador GCC no Windows seguindo as instruções do VSCode.

  3. Instale o CMake.

  4. Instale as extensões ms-vscode.cpptools e ms-vscode.cmake-tools no VSCode. Se você abrir o diretório deste projeto no VSCode, automaticamente será sugerida a instalação destas extensões.

  5. Abra as configurações da extensão cmake-tools (Ctrl-Shift-P e busque por CMake: Open CMake Tools Extension Settings), e adicione o caminho de instalação do GCC na opção de configuração additionalCompilerSearchDirs.

  6. Clique no botão de "Play" na barra inferior do VSCode para compilar e executar o projeto. Na primeira compilação, a extensão do CMake para o VSCode irá perguntar qual compilador você quer utilizar. Selecione da lista o compilador GCC que você instalou com o MSYS/MinGW.

Se necessário, mais instruções de uso do CMake no VSCode estão disponíveis.

Caso você tenha problemas de compilação no Windows com GCC, cuide para extrair o código em um caminho que não contenha espaços no nome de algum diretório.

Caso você tenha problemas de execução, tente atualizar o driver da sua placa de vídeo.

Linux

Instalando bibliotecas necessárias

Ubuntu
apt-get install build-essential make libx11-dev libxrandr-dev libxinerama-dev libxcursor-dev libxcb1-dev libxext-dev libxrender-dev libxfixes-dev libxau-dev libxdmcp-dev
Linux Mint
apt-get install build-essential make libx11-dev libxrandr-dev libxinerama-dev libxcursor-dev libxcb1-dev libxext-dev libxrender-dev libxfixes-dev libxau-dev libxdmcp-dev libmesa-dev libxxf86vm-dev
Fedora Linux
dnf install make automake gcc gcc-c++ kernel-devel libXxf86vm-devel mesa-libGL-devel libxcb-devel libX11-devel libXrandr-devel libXinerama-devel libXcursor-devel libXext-devel libXrender-devel libXfixes-devel libXau-devel libXdmcp-devel

VSCode (Visual Studio Code)

  1. Instale o VSCode.

  2. Instale as extensões ms-vscode.cpptools e ms-vscode.cmake-tools no VSCode. Se você abrir o diretório deste projeto no VSCode, automaticamente será sugerida a instalação destas extensões.

  3. Clique no botão de "Play" na barra inferior do VSCode para compilar e executar o projeto. Na primeira compilação, a extensão do CMake para o VSCode irá perguntar qual compilador você quer utilizar. Selecione da lista o compilador que você deseja utilizar.

Se necessário, mais instruções de uso do CMake no VSCode estão disponíveis.

macOS (não testado)

Para compilar e executar esse projeto no macOS, primeiro você precisa instalar o HOMEBREW, um gerenciador de pacotes para facilitar a instação de bibliotecas. O HOMEBREW pode ser instalado com o seguinte comando no terminal:

/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

Após a instalação do HOMEBREW, a biblioteca GLFW deve ser instalada. Isso pode ser feito pelo terminal com o comando:

brew install glfw

Makefile

Abra um terminal no diretório do projeto e execute o comando make -f Makefile.macOS para compilar. Para executar o código compilado, execute o comando make -f Makefile.macOS run.

About

Trabalho Final de Fundamentos de Computação Gráfica (FCG) - 2025/1

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Contributors 2

  •  
  •