Home Projetos Diversos Sistema Solar 3D em C, OpenGL e GLU
Sistema Solar 3D em C, OpenGL e GLU Imprimir E-mail
Sex, 10 de Abril de 2009 04:55

Este foi o projeto final da disciplina Introdução a Computação Gráfica, o qual foi implementado em linguagem C com uso das bibliotecas de rotinas da OpenGL e suas bibliotecas utilitárias da GLU. Sugestivamente[=P] chamando de BobCosmos, se trata de um software interativo que simula o sistema solar 3D com uma interface amigável e de fácil manuseio, disponibilizando interação tanto através do mouse como do teclado. Visa contribuir no ensino/aprendizado de ciências para jovens e afins, bem como no ensino de princípios de programação de jogos 3D, visto que seu código foi escrito de forma simples e é disponibilizado juntamente com o software.

Clique aqui para baixar o relatório original em PDF, ou leia a seguir.

.:: Sumário
1. Motivação
2. Tecnologias Utilizadas
3. Etapas de Desenvolvimento
4. O Software
5. Trabalhos Futuros
6. Considerações Finais
7. Referencias Bibliográficas

Código fonte:

  1. solar.c

  2. texture.h

  3. texture.c

  4. texturas.rar

 

1. Motivação

(...)

2. Tecnologias Utilizadas

Como já citado anteriormente, o projeto BobCosmos foi implementado na linguagem de programação C, com a utilização da biblioteca de rotinas gráficas OpenGL, para geração de gráficos 3D. Também foi utilizada uma API para carga de arquivos de imagem BMP, que por sua vez foram referenciados pela OpenGL¹ e aplicados como texturas nas formas geométricas dos modelos. Ressalta-se que a referencia não é feita para o arquivo em disco, mas para a sua carga de bytes em memória.
Foram utilizadas técnicas de iluminação para um efeito de cor mais agradável nas orbitas dos planetas, as quais foram compiladas usando Listas de Exibição, bem como também os planetas e suas respectivas texturas, afim de melhorar o desempenho do sistema. Para aplicação das texturas, foi utilizado o modo GL_LINEAR_MIPMAP_NEAREST, que proporciona uma melhor qualidade nos modelos desenhados, ao preço que prejudica no desempenho. Este modo propõe causar leves rugosidades nas superfícies onda foram aplicadas as texturas, melhorando desta forma o realismo da cena.
O projeto também usufrui de técnicas de Z-Buffer; para calculo e exibição correta de objetos com diferentes profundidades e Double Buffer; para evitar leves interrupções durante o desenho das cenas na tela, visto que são ativados dois buffers. Para visualização, foi utilizado o modelo de projeção perspectiva, onde objetos mais distantes sofrem distorções nas suas dimensões, assim como ocorre na realidade.

3. Etapas de Desenvolvimento

Inicialmente foram definidas as tecnologias e os objetivos do projeto, para então iniciar o processo de implementação do código, que em um segundo momento foi simplificado para facilitar o seu entendimento por programadores não familiarizados com a linguagem C e OpenGL. Partiu-se então de um ponto fixo no sistema de coordenadas, onde foi desenhado o SOL, e a partir deste ponto foram calculadas as coordenadas dos demais planetas, orbitas e todos os objetos das cenas.
Uma vez que os objetos foram definidos e desenhados, partiu-se para etapa de inserir o 4D (tempo), onde foi possível definir velocidades diferentes de rotação e translação para cada um dos astros. Em seguida, foram adquiridas texturas reais dos planetas, capturadas por satélites da NASA¹ e conseguidas em http://planetpixelemporium.com/planets.html. Segue abaixo um exemplo de uma textura utilizada:


Assim, ao aplicar tais texturas, todos os planetas e luas tomaram um efeito bastante realístico, proporcionando um maior grau de aceitação do software. Outro fator importante é a interação com o usuário, que foi tratada com atenção, sendo implementados métodos de rotacionar o sistema nos 3 eixos xyz, movimentos pelas setas direcionais e zoom, tratados em eventos do teclado. Além disso, também foram tratados eventos no mouse, como zoom através do botão de rolagem, movimentação ao clicar e arrastar e menus acessíveis pelo botão direito.
Por fim, foram inseridos textos com dados de cada um dos planetas e frases de curiosidades sobre o sistema solar, as quais são escolhidas aleatoriamente para serem exibidas quando o usuário solicita mais informações sobre algum planeta. Desta forma, cria-se o “inesperado”, estimulando que os usuários solicitem cada vez mais informações sobre os astros.

4. O Software

O BobCosmo exibe em sua tela inicial uma visão panorâmica do Sistema Solar, onde o usuário poderá interagir com as tecladas “q” e “w”, “a” e “s”, “z” e “x” que giram o sistema nos eixos X, Y e Z, respectivamente, as teclas “+” e “-“ aplicam Zoom, enquanto as teclas “1” e “2” aplicam um zoom reduzido, para pequenas distancias. Utilizando as setas direcionais, o usuário poderá mover o centro do eixo, navegando livremente pela cena. As teclas “p” e ESC pausa e encerra o programa, respectivamente.
Utilizando o mouse, pode-se aumentar e reduzir o zoom com o botão de rolagem, navegar pelo universo clicando e arrastando e acessar um menu com diversas opções através do botão direito.
Ao escolher um dos planetas em algumas das opções do menu, será apresentada uma nova tela com o planeta em foco e as devidas informações solicitadas. Toda a interação do planeta poderá continuar sendo realizada com as mesmas tecladas, porém com o astro em foco o usuário terá uma melhor visão e interação com o mesmo. Segue abaixo algumas imagens ilustrativas do BobCosmos:


5. Trabalhos Futuros

Pretende-se como próximas atualizações inserir novas opções nos menus que possibilitem realizar uma navegação a bordo de uma nave espacial e fazer estudos sobre as camadas componentes dos planetas. Além disso, inserir novos astros, tais como cometas, cinturões, meteoros e meteoritos, a fim de tornar o projeto cada vez mais realístico.

6. Considerações Finais

Analisando o conjunto de requisitos e objetivos almejados pelo projeto BobCosmos, percebe-se que o software se mostrou estável, de boa qualidade gráfica e lógica. Seu conjunto de informações e sua implementação não fugiram aos objetivos iniciais, permanecendo o mesmo de simples entendimento e manuseio, seja para interessados no ensino de ciências como para o da linguagem C com OpenGL para iniciantes em desenvolvimento de interfaces gráficas 2D e 3D, uma vez que foi possível manter o código simples.

7. Referencias Bibliográficas

(MANSSOUR e COHEN, 2006) MANSSOUR, I, H., COHEN, M. OpenGL: Uma abordagem prática e objetiva. NOVATEC
(CALVIN J. HAMILTON, 2000) Vistas do Sistema Solar. Internet.
{joscommentenable}
Comentários
Pesquisar
Somente usuários registrados podem escrever comentários!

!joomlacomment 4.0 Copyright (C) 2009 Compojoom.com . All rights reserved."

 
João F. M. Figueiredo, Creative Commons License
Todo conteúdo, exceto onde indicado ao contrário, está licenciada sob uma Licença Creative Commons.