Sumário
Computação Gráfica
Introdução
Computação Gráfica
Expectativas e Objetivos do Curso
Aula 01 - Introdução
Um Breve Histórico
Whirlwind, Sage e Sketchpad
Universidade de Utah
Empresas Comerciais
Síntese de Imagens
Monitores de Vídeo
Picture Elements
Rasterização
Objetos em 3D
Percepção Tridimensional
Perspectiva
Conhecimento Prévio e Oclusão
Densidade de Texturas
Sombreamento e Sombras
Efeitos Atmosféricos
Profundidade de Campo
Estereoscopia
Vinicius Graciano Santos
[email protected]
2
Bibliografia
Bibliografia
Real Time Rendering. Tomas Akenine-Moller, Eric Haines e Naty
Hoffman. Terceira edição (2008)
Computação Gráfica. Eduardo Azevedo e Aura Conci. vol. 1 (2003)
3
3
Introdução
Bibliografia
Computação Gráfica
Computação Gráfica
É a ciência e a arte da comunicação visual via uma tela de computador e
seus dispositivos de interação.
◮
Síntese de imagens baseada em dados e modelos.
◮
Área de estudo interdisciplinar: ciência da computação, design,
engenharia, física, matemática, etc.
Mathematics for 3D Game Programming and Computer Graphics.
Eric Lengyel. Terceira edição (2011)
3
5
Introdução
Introdução
Computação Gráfica
Computação Gráfica
Computação Gráfica
Síntese
Modelagem
Dados
Modelos
Imagem
Design
Processamento
Dados
Modelos
Imagem
Processamento
Digital de Imagens
Visão Computacional
Análise
6
6
Introdução
Introdução
Expectativas do Curso
Objetivos do Curso
Exemplos do que você irá aprender nesta disciplina:
◮
Hardware gráfico
◮
Transformações e projeções geométricas
◮
Modelos de iluminação
◮
Shaders
Objetivo Principal
Proporcionar aos alunos uma visão geral dos fundamentos da área de
computação gráfica
Exemplos do que você não irá aprender nesta disciplina:
Programas de modelagem e animação (Blender, 3DS Max, etc)
◮
◮
Métodos básicos por trás das engines e programas gráficos
Programas de edição de imagens (Photoshop, GIMP, etc)
◮
◮
Possibilitar o aprendizado de técnicas avançadas
◮
Motores para jogos (Unity, UDK, etc)
◮
Mas podem ser utilizados para exemplificar algum tópico...
8
7
Um Breve Histórico
Um Breve Histórico
Sketchpad (Ivan Sutherland 1963)
(a) Whirlwind (MIT 1945)
(b) SAGE (US Navy 1958)
(c) Light Pen (SAGE)
(d) Boeing Man (William Fetter 1966)
10
Um Breve Histórico
Um Breve Histórico
Universidade de Utah (1968)
Primeira Animação (Catmull & Parke 1972)
(a) Texture Mapping (Catmull 1974)
(b) Shading (Blinn 1977)
(c) Facial Animation (Parke 1974)
(d) Bump Mapping (Blinn 1978)
12
Um Breve Histórico
Um Breve Histórico
Empresas Comerciais
Evolução entre 1960–1980 (Pixar Shutterbug & Renderman)
(a) ILM (1975)
(b) Pixar (1986)
(c) Sierra Entertainment (1979)
(d) Id Software (1991)
Wireframe
15
Um Breve Histórico
Um Breve Histórico
Evolução entre 1960–1980 (Pixar Shutterbug & Renderman)
Evolução entre 1960–1980 (Pixar Shutterbug & Renderman)
Remoção de linhas ocultas
Wireframe com brilho baseado na profundidade
15
15
Um Breve Histórico
Um Breve Histórico
Evolução entre 1960–1980 (Pixar Shutterbug & Renderman)
Evolução entre 1960–1980 (Pixar Shutterbug & Renderman)
Iluminação constante
Iluminação facetada
15
15
Um Breve Histórico
Um Breve Histórico
Evolução entre 1960–1980 (Pixar Shutterbug & Renderman)
Evolução entre 1960–1980 (Pixar Shutterbug & Renderman)
Gouraud shading
Phong shading
15
15
Um Breve Histórico
Um Breve Histórico
Evolução entre 1960–1980 (Pixar Shutterbug & Renderman)
Evolução entre 1960–1980 (Pixar Shutterbug & Renderman)
Modelos avançados de iluminação
Patches bicúbicos
15
15
Um Breve Histórico
Um Breve Histórico
Evolução entre 1960–1980 (Pixar Shutterbug & Renderman)
Evolução entre 1960–1980 (Pixar Shutterbug & Renderman)
Bump mapping e texturas projetivas
Mapeamento de texturas
15
15
Um Breve Histórico
Atualmente
Evolução entre 1960–1980 (Pixar Shutterbug & Renderman)
Os Vingadores (2012) - VisualFX Breakdown
youtube.com/ILMVisualFX
Reflexões
15
Síntese de Imagens
Síntese de Imagens
Monitores de Vídeo
Varredura Fixa
Varredura Aleatória
◮
Como são formadas as imagens na tela de um computador?
18
Síntese de Imagens
Monitores de Vídeo
Varredura Aleatória
Conversão entre gráficos
Gráficos vetoriais
◮
Gráficos raster/matriciais
◮
Objetos são representados por
conjuntos geométricos:
◮
Objetos são amostrados em uma
grade regular:
◮
◮
Rasterização
Varredura Fixa
◮
◮
19
Síntese de Imagens
Retas
Curvas
Polígonos.
◮
◮
◮
Picture elements (pixels)
Matrizes de pixels
Frame buffer.
◮
Eficiência depende do número
de objetos.
◮
Eficiência independe do número
de objetos.
◮
Não propensa a serrilhados
◮
Propensa a serrilhados
Gráficos
Vetoriais
Observações:
◮
Monitores de varredura aleatória estão obsoletos para CG.
◮
Monitores atuais podem apresentar outros padrões de varredura fixa.
Gráficos
Raster
Reconhecimento
de Padrões
20
Síntese de Imagens
Síntese de Imagens
Picture Elements
Picture Elements
Picture Element (Pixel):
Um ponto físico em um gráfico raster/matricial.
◮
Geralmente é representado por três ou quatro canais (RGB ou RGBA).
◮
Cada canal possui 8 bits (0–255 em decimal).
◮
Modelo aditivo de cor:
COR = 01101110
| {z } 01101100
| {z } 11001101
| {z } = 110R + 108G + 205B
110
◮
108
205
Tamanho de uma imagem de 800 × 600 pixels com três canais:
(800 × 600 pixels) × (8 bits) × (3 canais) = 11520000 bits
≈ 1.36 MBytes
Pixels vistos através de um microscópio
23
22
Síntese de Imagens
Síntese de Imagens
Picture Elements
Picture Elements
Modo de cor direto:
Modo de cor indexado:
◮
Os valores de cada pixel são armazenados diretamente na matriz.
◮
Os valores de cada pixel são armazenados indiretamente na matriz.
◮
Ocupa muito espaço se houver poucas cores na imagem.
◮
Ocupa muito espaço se houver muitas cores na imagem.
253
255
99
253
255
99
253
255
99
253
255
99
253
255
99
253
255
99
Imagem Direta
253
255
99
22
122
192
253
255
99
51
51
51
253
255
99
253
255
99
253
255
99
253
255
99
253
255
99
253
255
99
51
51
51
253
255
99
253
255
99
253
255
99
253
255
99
253
255
99
51
51
51
253
255
99
253
255
99
22
122
192
253
255
99
51
51
51
253
255
99
253
255
99
253
255
99
253
255
99
253
255
99
253
255
99
253
255
99
253
255
99
(6 × 6 pixels) × (8 bits) × (3 canais) = 864 bits
Paleta
Imagem Indexada
2
2
2
2
2
2
0
2
1
2
2
1
2
1 (22, 122, 192)
2
2
2
2
2
2
2
0
2
2
0
2
2
2
0
0
2
2
2
2
2
2
2
2
(51, 51, 51)
2 (253, 255, 99)
(6 × 6 pixels) × (2 bits) + (3 cores) × (3 canais) × (8 bits) = 144 bits
25
Síntese de Imagens
Síntese de Imagens
Profundidade de Cor
Profundidade de Cor
Profundidade de Cor (quantização):
◮
Número de bits em cada canal
◮
Número total de bits utilizado para representar uma cor
◮
Cuidado: várias definições!
◮
bpp - bits por pixel
◮
bpc - bits por canal
◮
bpc - bits por cor
◮
bps - bits por sample (amostra)
Exemplos:
Monocromático: 1 bpp
Escala de cinza: 8 bpp
High color: 16 bpp - 4 bpc RGBA
True color: 24 bpp - 8 bpc RGB
Observação:
N bits podem representar 2N valores diferentes.
1 bpp – 2 cores
26
Síntese de Imagens
Síntese de Imagens
Profundidade de Cor
Profundidade de Cor
2 bpp – 4 cores
3 bpp – 8 cores
Síntese de Imagens
Síntese de Imagens
Profundidade de Cor
Profundidade de Cor
4 bpp – 16 cores
5 bpp – 32 cores
Síntese de Imagens
Síntese de Imagens
Profundidade de Cor
Profundidade de Cor – Dither
Dither (dithering):
Padrão aplicado com o intuito de minimizar o erro de quantização na
ausência de bits suficientes para representar uma imagem.
◮
Representa mais cores com menos bits.
◮
Trade-off entre resolução e quantização.
◮
Efeito baseado na percepção humana.
◮
Bastante utilizado por jornais para
economia na impressão.
8 bpp – 256 cores
28
Síntese de Imagens
Síntese de Imagens
Profundidade de Cor – Dither
Profundidade de Cor – Dither
1 bpp – 2 cores (SEM DITHER)
1 bpp – 2 cores (COM DITHER)
Síntese de Imagens
Síntese de Imagens
Profundidade de Cor – Dither
Profundidade de Cor – Dither
2 bpp – 4 cores (SEM DITHER)
2 bpp – 4 cores (COM DITHER)
Rasterização de Linhas
Rasterização de Linhas
Algoritmo de Bresenham
Algoritmo de Bresenham
◮
◮
O algoritmo de Bresenham rasteriza uma linha em uma grade regular.
◮
Utiliza apenas aritmética inteira → mais eficiente
◮
Todas as placas de vídeo implementam alguma versão desse algoritmo.
Exemplo: Rasterizar uma linha do ponto (x0 , y0 ) a (x9 , y5 ).
30
31
Rasterização de Linhas
Rasterização de Linhas
Algoritmo de Bresenham
Algoritmo de Bresenham
◮
O primeiro pixel é fácil: (x0 , y0 )
◮
31
Qual pixel deve ser o próximo? (x1 , y0 ) ou (x1 , y1 )?
31
Rasterização de Linhas
Rasterização de Linhas
Algoritmo de Bresenham
Algoritmo de Bresenham
◮
Ache a distância de y0 e y1 para a reta e pegue a mais próxima.
◮
O processo se repete até chegar ao pixel (x9 , y5 ).
31
31
Rasterização de Linhas
Rasterização de Linhas
Algoritmo de Bresenham
Algoritmo de Bresenham
◮
O processo se repete até chegar ao pixel (x9 , y5 ).
◮
31
O processo se repete até chegar ao pixel (x9 , y5 ).
31
Rasterização de Linhas
Rasterização de Triângulos
Algoritmo de Bresenham
Algoritmo de Bresenham com Preenchimento
◮
O processo se repete até chegar ao pixel (x9 , y5 ).
◮
Exemplo: Rasterizar um triângulo com preenchimento.
31
32
Rasterização de Triângulos
Rasterização de Triângulos
Algoritmo de Bresenham com Preenchimento
Algoritmo de Bresenham com Preenchimento
◮
Execute simultaneamente o algoritmo de Bresenham para as duas
linhas que vão de cima para baixo.
◮
32
Execute simultaneamente o algoritmo de Bresenham para as duas
linhas que vão de cima para baixo.
32
Rasterização de Triângulos
Rasterização de Triângulos
Algoritmo de Bresenham com Preenchimento
Algoritmo de Bresenham com Preenchimento
◮
Preencha os pixels horizontalmente.
◮
O processo se repete até completar o triângulo.
32
32
Rasterização de Triângulos
Rasterização de Triângulos
Algoritmo de Bresenham com Preenchimento
Algoritmo de Bresenham com Preenchimento
◮
O processo se repete até completar o triângulo.
◮
32
O processo se repete até completar o triângulo.
32
Rasterização de Polígonos
Rasterização de Polígonos
Triangulação
Triangulação
◮
Para rasterizar um polígono, separe-o
em triângulos.
◮
Para rasterizar um polígono, separe-o
em triângulos.
◮
Todo polígono com N arestas pode ser
triangulado em N − 2 triângulos.
◮
Geometria computacional
33
33
Rasterização de Polígonos
Rasterização de Polígonos
Triangulação
Triangulação
◮
Para rasterizar um polígono, separe-o
em triângulos.
◮
Para rasterizar um polígono, separe-o
em triângulos.
◮
Todo polígono com N arestas pode ser
triangulado em N − 2 triângulos.
◮
Todo polígono com N arestas pode ser
triangulado em N − 2 triângulos.
◮
Geometria computacional
◮
Geometria computacional
◮
Rasterize cada triângulo com o algoritmo
de Bresenham.
◮
Rasterize cada triângulo com o algoritmo
de Bresenham.
◮
Atenção: As arestas internas não
existem no polígono original, logo elas
devem ser coloridas com a cor de
preenchimento.
33
33
Rasterização de Curvas
◮
Rasterização de Curvas
Para rasterizar uma curva qualquer:
◮
Para rasterizar uma curva qualquer:
◮
Aproxime a curva por um polígono.
34
Rasterização de Curvas
34
Rasterização de Curvas
◮
Para rasterizar uma curva qualquer:
◮
Para rasterizar uma curva qualquer:
◮
Aproxime a curva por um polígono.
◮
Aproxime a curva por um polígono.
◮
Triangule ou tessele o polígono.
◮
Triangule ou tessele o polígono.
◮
Rasterize os triângulos.
34
34
Rasterização de Curvas
Objetos em 3D
Placa de Vídeo:
Basicamente, a placa de vídeo é um hardware especializado em rasterizar
triângulos em uma grade bidimensional.
◮
Para rasterizar uma curva qualquer:
◮
Aproxime a curva por um polígono.
◮
Triangule ou tessele o polígono.
◮
Dezenas, centenas, milhares, milhões de triângulos.
◮
Rasterize os triângulos.
◮
Triângulos são objetos naturalmente de duas dimensões.
◮
Fim!
◮
Como é possível renderizar um objeto de três dimensões?
34
35
Objetos em 3D
3D é uma ilusão:
3D é uma ilusão!
36
◮
Você nunca jogou um jogo virtual em 3D!
◮
Você nunca modelou um personagem virtual em 3D!
◮
Sua placa de vídeo não desenha gráficos 3D!
◮
Tudo é feito em 2D!
◮
Seu cérebro é enganado para achar que os objetos são 3D!
37
Objetos em 3D
Percepção Tridimensional
Percepção de Profundidade:
Humanos possuem a habilidade visual de perceber, com relativa facilidade, a
profundidade em imagens bidimensionais.
◮
Informações monoculares e binoculares (estereoscópicas).
◮
Existem vários tipos de informações de profundidade, mas vamos
exemplificar apenas alguns.
Isso não é um golfinho em 3D
São vários triângulos 2D com cores diferentes
40
38
Percepção Tridimensional
Perspectiva:
Percepção Tridimensional
Perspectiva:
◮
Objetos distantes são menores do que objetos próximos.
◮
Objetos distantes são menores do que objetos próximos.
◮
Objetos orientados sobre o ângulo de visão são mais rasos.
◮
Objetos orientados sobre o ângulo de visão são mais rasos.
Percepção Tridimensional
Percepção Tridimensional
Conhecimento Prévio e Oclusão:
Conhecimento Prévio e Oclusão:
Ajudam a determinar a forma, as dimensões e a ordenação dos objetos em
relação à profundidade.
Ajudam a determinar a forma, as dimensões e a ordenação dos objetos em
relação à profundidade.
Qual objeto está na frente?
Qual objeto está na frente?
42
Percepção Tridimensional
Conhecimento Prévio e Oclusão:
42
Percepção Tridimensional
Conhecimento Prévio e Oclusão:
Ajudam a determinar a forma, as dimensões e a ordenação dos objetos em
relação à profundidade.
Ajudam a determinar a forma, as dimensões e a ordenação dos objetos em
relação à profundidade.
Triângulo cortado...
Qual objeto está na frente?
Percepção de Profundidade
Percepção de Profundidade
Densidade das Texturas:
Densidade das Texturas:
Variações nas texturas em relação ao espaço indicam profundidade.
Variações nas texturas em relação ao espaço indicam profundidade.
43
Percepção de Profundidade
Sombreamento (shading):
Variação na intensidade da iluminação de acordo com a distância e
curvatura dos objetos.
43
Percepção de Profundidade
Sombreamento (shading):
Variação na intensidade da iluminação de acordo com a distância e
curvatura dos objetos.
Percepção de Profundidade
Percepção de Profundidade
Efeitos Atmosféricos:
Sombras:
◮
Criadas por objetos que ocludem a luz.
◮
Auxiliam a compreender a profundidade de maneira contínua.
A interação da luz com partículas no ar reduz o contraste e altera o matiz de
objetos muito distantes.
45
Percepção de Profundidade
46
Percepção de Profundidade
Efeitos Atmosféricos:
Profundidade de Campo:
A interação da luz com partículas no ar reduz o contraste e altera o matiz de
objetos muito distantes.
46
◮
Objetos fora de foco ficam embaçados.
◮
Geralmente estão muito próximos ou muito longe da câmera.
Percepção de Profundidade
Percepção de Profundidade
Estereoscopia:
Profundidade de Campo:
◮
Objetos fora de foco ficam embaçados.
◮
Geralmente estão muito próximos ou muito longe da câmera.
Técnica utilizada para aumentar a percepção da profundidade a partir da
análise de duas imagens obtidas em pontos diferentes.
47
48
Download

Computação Gráfica Sumário Bibliografia Bibliografia