Simulação 3D interativa do Sistema Solar desenvolvida em OpenGL como trabalho final da disciplina de Computação Gráfica.
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
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
- 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
- Lib3DS - Carregamento de modelos 3D (.3DS)
- Windows Multimedia (winmm) - Reprodução de áudio
- Visual Studio - IDE de desenvolvimento
- 3DS Max - Modelagem 3D e mapeamento UV
| # | 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 |
- 🎵 Á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
| 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) |
| 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 |
Todos os planetas alinhados lado a lado para comparação de tamanhos
Planetas orbitando o Sol com órbitas coloridas visíveis
| Bump Mapping OFF | Bump Mapping ON |
|---|---|
![]() |
![]() |
| Planetas com textura lisa | Planetas com efeito de relevo e profundidade |
Pressione [B] durante a execução para alternar entre os dois modos
- Windows 10/11
- Visual Studio 2019 ou superior
- Placa gráfica com suporte a OpenGL 2.1+
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
-
Abra o projeto no Visual Studio
- Abra o arquivo
.sln
- Abra o arquivo
-
Verifique as dependências
- Certifique-se de que OpenGL, GLUT e Lib3DS estão configuradas
-
Compile o projeto
- Build > Build Solution (Ctrl+Shift+B)
-
Execute
- Debug > Start Without Debugging (Ctrl+F5)
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.wavestá em../TrabalhoFinal/audio/
TrabalhoFinal- Gerencia toda a aplicação e renderizaçãoCCamera- Sistema de câmera first-personCTexture- Carregamento e gerenciamento de texturasCModel_3DS- Carregamento e renderização de modelos 3DS
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 áudioEste projeto foi desenvolvido para fins acadêmicos como trabalho final da disciplina de Computação Gráfica.

