Uploaded by Douglas Ferraz

COMPUTAÇÃO GRÁFICA

advertisement
Atividade Parcial
Computação Gráfica
Douglas Ferraz Verçosa | 03087933
Gabriela Prestes Farias | 03058613
George Moraes de Sousa | 03113538
José Ribamar Queiroz da Silva Neto | 03118421
Sthefanye Guimarães Oliveira | 03116527
Manaus – AM
2022
Sumário
1. Introdução
3
2. OpenGL
4
2.1. Introdução ao OpenGL
4
2.2. Arquitetura do OpenGL
4
2.3. APIs Relacionadas ao OpenGL
5
2.4. Desenhando com OpenGL
5
3. Experimentos
6
3. Conclusão
10
1.
Introdução
A Computação Gráfica é uma área da Ciência da Computação que se dedica ao
estudo e ao desenvolvimento de técnicas e algoritmos para a geração, manipulação
e análise de imagens pelo computador. Atualmente, a Computação Gráfica está
presente em quase todas as áreas do conhecimento humano, desde o projeto de
um novo modelo de automóvel até o desenvolvimento de ferramentas de
entretenimento, entre as quais estão os jogos eletrônicos.
2.
OpenGL
2.1. Introdução ao OpenGL
OpenGL é definida como "um programa de interface para hardware gráfico". Na
verdade, OpenGL é uma biblioteca de rotinas gráficas e de modelagem, bi (2D) e
tridimensional (3D), extremamente portável e rápida. Usando OpenGL é possível
criar gráficos 3D com uma qualidade visual próxima de um ray tracer. Entretanto, a
maior vantagem na sua utilização é a rapidez, uma vez que usa algoritmos
cuidadosamente desenvolvidos e otimizados pela Silicon Graphics, Inc., líder
mundial em Computação Gráfica e Animação.
OpenGL não é uma linguagem de programação, é uma poderosa e sofisticada API
(Application Programming Interface) para criação de aplicações gráficas 2D e 3D.
Seu funcionamento é semelhante ao de uma biblioteca C, uma vez que fornece uma
série.de funcionalidades. Normalmente se diz que um programa é baseado em
OpenGL ou é uma aplicação OpenGL, o que significa que ele é escrito em alguma
linguagem de programação que faz chamadas a uma ou mais bibliotecas OpenGL.
2.2. Arquitetura do OpenGL
Quando a OpenGL é utilizada, em vez de descrever detalhadamente uma
cena 2D ou 3D, basta especificar o conjunto de passos que devem ser
seguidos para se obter o aspecto ou o efeito desejado. Esses passos
envolvem chamadas a rotinas desta API que inclui em torno de 250
funções: 200 da própria biblioteca OpenGL e 50 da biblioteca GLU
(OpenGL Utility Library), que faz parte da implementação OpenGL. Por
ser portável, a OpenGL não possui funções para gerenciamento de
janelas, tratamento de eventos ou manipulação de arquivos. Neste caso,
são utilizadas as funções específicas de cada plataforma para tal
propósito, como, por exemplo, a própria API do ambiente Microsoft
Windows. Tampouco existe um formato de arquivo OpenGL para
descrição dos modelos e ambientes virtuais. OpenGL oferece apenas um
pequeno conjunto de primitivas gráficas, como pontos, linhas e polígonos,
para exibição de modelos. Já a biblioteca GLU fornece algumas funções
para modelagem. Superfícies quádricas, assim como curvas e superfícies
NURBS (Non Uniform Rational B-Splines) são algumas delas.
A palavra pipeline é usada para descrever um processo composto de
duas ou mais etapas para a geração de uma imagem. A Figura mostra
uma versão simplificada do pipeline OpenGL. Como uma aplicação faz
chamadas a várias funções da API OpenGL, os comandos são
armazenados em uma memória específica (buffer de comandos). Depois
de ser preenchida com comandos de desenho de primitivas, iluminação e
dados de textura, entre outros, ela é “esvaziada”, ou seja, os comandos e
dados são passados para o próximo estágio do pipeline.
2.3. APIs Relacionadas ao OpenGL
● GLU (OpenGL Utility Library)
○ Parte do padrão OpenGL;
○ NURBS, trianguladores, quádricas, etc;
● AGL, GLX, WGL.
○ Camadas entre o OpenGL os diversos sistemas de janelas;
● GLUT (OpenGL Utility Toolkit)
○ API portátil de acesso aos sistemas de janelas;
○ Encapsula e esconde as camadas proprietárias;
○ Não é parte official do OpenGL;
2.4. Desenhando com OpenGL
● OpenGL funciona como uma máquina de estados.
● API tem rotinas para:
○ Desenhar primitivas geométricas e imagens;
○ Alterar variáveis de estado (ex.: cor, material, fontes de iluminação,
etc)
○ Consultar variáveis de estado;
● OpenGL é um padrão em evolução.
○ Mecanismo padronizado de extensões;
○ Novas versões são estabelecidas por um comitê (ARB) de usuários
e fabricantes.
3.
Experimentos
3.1. Primitivas Gráficas
As primitivas são os elementos gráficos mais simples que podem ser criados dentro
de uma aplicação. A partir dessas primitivas são construídos cenários, personagens
e objetos em uma aplicação de computação gráfica.
3.1.1 Pontos
É o elemento mais simples a ser criado em qualquer produto de computação
gráfica. O ponto pode ter sua cor e tamanho alterados, mas nada muito além disso.
3.1.2. Retas
É o elemento que se constitui como um segmento criado entre dois pontos.
Pode ser compreendido como uma sequencia de pontos, a linha pode ter sua
espessura, estilo, cor e comprimento alterados.
3.1.3. Curvas
Em se tratando das curvas, a geração é feita baseada em alguns pontos já
conhecidos. Considerando esses pontos há duas formas principais de geração da
curva, a primeira é a geração de uma curva que passe por todos os pontos e a
segunda a identificação da melhor curva que represente os pontos, independente de
passar por eles ou não. Em ambos os casos vamos considerar o termo geração de
curvas.
Primeira Técnica utilizada: Curva de Bézier - A curva de Bézier é uma
curva polinomial expressa como a interpolação linear entre alguns pontos
representativos, chamados de pontos de controle.
Segunda Técnica utilizada: Curva Spline - é uma curva completa
polinomial por partes consistindo de um conjunto de segmentos.
3.1.4 Projeção paralela x perspectiva
A projeção perspectiva, produz uma imagem realista, porém não em suas
verdadeiras medidas, executando uma operação dentro do espaço tridimensional
para representar a cena vista de um ponto de observação a uma distância finita.
3.
Conclusão
Tendo em vista todos os aspectos observados sobre o OpenGL concluímos que se
trata de uma biblioteca de rotinas gráficas 2D e 3D que é extremamente portátil e
rápida de ser usada com intuito de desenvolvimento de aplicações gráficas para
construções jogos que detém cenários e personagens sendo muito importante e
eficiente nas suas funções de acordo com a aplicação desejada.
4.
Referências
https://github.com/Eduardodsb/Computacao-Grafica-OpenGl
https://github.com/topics/computacao-grafica
https://github.com/PranjalSahu/SplineFitting
https://github.com/mateustoin/Computacao-Grafica
https://www.gsigma.ufsc.br/~popov/aulas/cg/perspectiva/index.html
https://sites.google.com/site/profferdesiqueiracompgrafica/aulas/aula-5---processamento-deimagens-e-primitivas
https://pt.wikipedia.org/wiki/Curva_de_B%C3%A9zier
http://www.ic.uff.br/~anselmo/cursos/CGI/slidesGrad/CG_aula8(curvasinterativas).pdf
Download