Skip to content

Sistema Solar 3D interativo em OpenGL/C++ com técnicas avançadas de renderização: multi-textura, bump mapping, environment mapping, skybox, neblina e transparência.

Notifications You must be signed in to change notification settings

EmilyBalestrin/SolarSystem-OpenGL-3DMax

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

25 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

🌌 Sistema Solar Interativo - OpenGL

Simulação 3D interativa do Sistema Solar desenvolvida em OpenGL como trabalho final da disciplina de Computação Gráfica.


📖 Sobre o Projeto

Este projeto implementa uma visualização 3D completa do Sistema Solar demonstrando técnicas avançadas de Computação Gráfica. O sistema apresenta:

  • Sol com efeito de multi-textura e iluminação
  • 8 Planetas (Mercúrio, Vênus, Terra, Marte, Júpiter, Saturno, Urano e Netuno)
  • Lua orbitando a Terra
  • Sonda espacial com efeito de reflexão do ambiente
  • Dois modos de visualização:
    • Modo Estático: Planetas alinhados para comparação
    • Modo Orbital: Planetas orbitando o Sol em tempo real

🎯 Objetivos

Implementar um sistema gráfico 3D que demonstre domínio das principais técnicas de Computação Gráfica:

  • Modelagem e renderização de objetos 3D
  • Mapeamento e manipulação de texturas
  • Sistemas de iluminação e sombreamento
  • Efeitos visuais avançados (reflexão, relevo, transparência)
  • Otimização de renderização
  • Interação em tempo real

🛠️ Tecnologias Utilizadas

Linguagem e APIs

  • C++ - Linguagem de programação
  • OpenGL 2.1 - API gráfica para renderização 3D
  • GLUT/FreeGLUT - Gerenciamento de janelas e entrada
  • GLU - Utilitários do OpenGL

Bibliotecas

  • Lib3DS - Carregamento de modelos 3D (.3DS)
  • Windows Multimedia (winmm) - Reprodução de áudio

Ferramentas

  • Visual Studio - IDE de desenvolvimento
  • 3DS Max - Modelagem 3D e mapeamento UV

✅ Técnicas Implementadas

Técnicas de Computação Gráfica

# Técnica Implementação Função
a Modo Imediato (glVertex) Órbitas, anéis de Saturno, eixos DrawLinhaOrbital(), DrawAneisSaturno()
b Modelagem 3DS MAX Todos os planetas CModel_3DS::Load()
c Mapeamento de Texturas Planetas, skybox e sonda Modelos .3DS com UV mapping
d Iluminação (Point Light) Luz posicionada no Sol GL_LIGHT0
e Filtro Anisotrópico Melhora qualidade das texturas EnableFilroAnisotropico()
f Multi-Textura Sol com 2 camadas de textura DrawSol()
g SkyBox Céu espacial com 6 faces CreateSkyBox()
h Environment Mapping Reflexo na sonda espacial DrawSonda() - GL_SPHERE_MAP
i Bump/Normal Mapping Efeito de relevo nos planetas DrawPlanetasComBumpMap()
j Neblina (Fog) Atmosfera espacial glEnable(GL_FOG)
k Transparência (Blending) Anéis de Saturno semi-transparentes GL_BLEND
l Display Lists Otimização do SkyBox skyboxDisplayList

Funcionalidades Adicionais

  • 🎵 Áudio Ambiente - Tema de Star Wars em loop
  • 🎥 Câmera Livre - Movimentação first-person completa
  • 🎮 Controle de Efeitos - Toggle de bump mapping e som em tempo real

🎮 Controles

Movimentação da Câmera

Tecla Ação
W Mover para frente
S Mover para trás
A Mover para esquerda
D Mover para direita
Q Descer
E Subir
Mouse Rotacionar câmera (look around)

Comandos de Visualização

Tecla Ação
R Alternar entre modo Estático e Orbital
B Ligar/Desligar Bump Mapping
M Ligar/Desligar Som
TAB Alternar entre modo FILL e WIREFRAME
SPACE Resetar timer

📸 Screenshots

Modo Estático (Alinhado)

Modo Estático Todos os planetas alinhados lado a lado para comparação de tamanhos

Modo Orbital (Animado)

Modo Orbital Planetas orbitando o Sol com órbitas coloridas visíveis

Comparação: Bump Mapping

Bump Mapping OFF Bump Mapping ON
Bump OFF Bump ON
Planetas com textura lisa Planetas com efeito de relevo e profundidade

Pressione [B] durante a execução para alternar entre os dois modos

Detalhes da Sonda Espacial

Sonda Sonda com Environment Mapping


🚀 Como Compilar e Executar

Requisitos

  • Windows 10/11
  • Visual Studio 2019 ou superior
  • Placa gráfica com suporte a OpenGL 2.1+

Estrutura de Pastas

TrabalhoFinal/
├── TrabalhoFinal.cpp/.h       # Código principal
├── CCamera.h/cpp              # Gerenciamento de câmera
├── CTexture.h/cpp             # Sistema de texturas
├── CModel_3DS.h/cpp           # Loader de modelos
├── skybox/                    # 6 texturas do skybox
│   ├── back.png
│   ├── front.png
│   ├── bottom.png
│   ├── top.png
│   ├── left.png
│   └── right.png
├── sol/textures/sol.jpg       # Textura do Sol
├── marte/marte.3ds            # Modelo de Marte
├── mercurio/mercurio.3ds      # Modelo de Mercúrio
├── venus/venus.3ds
├── terra/terra.3ds
├── lua/lua.3ds
├── jupiter/jupiter.3ds
├── saturno/saturno.3ds
├── urano/urano.3ds
├── netuno/netuno.3ds
├── sonda/sonda.jpg            # Textura da sonda
├── normalMap.jpg              # Textura de normal map
└── audio/
    └── StarWarsTheme.wav      # Música de fundo

Passos para Executar

  1. Abra o projeto no Visual Studio

    • Abra o arquivo .sln
  2. Verifique as dependências

    • Certifique-se de que OpenGL, GLUT e Lib3DS estão configuradas
  3. Compile o projeto

    • Build > Build Solution (Ctrl+Shift+B)
  4. Execute

    • Debug > Start Without Debugging (Ctrl+F5)

Troubleshooting

Problema: Texturas não aparecem

  • Verifique se as pastas estão no caminho correto relativo ao executável

Problema: Som não toca

  • Certifique-se de que StarWarsTheme.wav está em ../TrabalhoFinal/audio/

📊 Estrutura do Código

Classes Principais

  • TrabalhoFinal - Gerencia toda a aplicação e renderização
  • CCamera - Sistema de câmera first-person
  • CTexture - Carregamento e gerenciamento de texturas
  • CModel_3DS - Carregamento e renderização de modelos 3DS

Funções Principais

DrawGLScene()              // Loop principal de renderização
DrawSol()                  // Desenha o Sol com multi-textura
DrawSonda()                // Sonda com environment mapping
DrawPlanetasComBumpMap()   // Aplica bump mapping
DrawAneisSaturno()         // Anéis transparentes
DrawLinhaOrbital()         // Órbitas com glVertex
CreateSkyBox()             // Skybox espacial
EnableFilroAnisotropico()  // Filtro anisotrópico
ToggleSound()              // Controle de áudio

📝 Licença

Este projeto foi desenvolvido para fins acadêmicos como trabalho final da disciplina de Computação Gráfica.

About

Sistema Solar 3D interativo em OpenGL/C++ com técnicas avançadas de renderização: multi-textura, bump mapping, environment mapping, skybox, neblina e transparência.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published