computação gráfica - 0 - início — univasf universidade...
TRANSCRIPT
Computação Gráfica - 12
Prof. Jorge [email protected]
www.univasf.edu.br/~jorge.cavalcanti
www.twitter.com/jorgecav
Universidade Federal do Vale do São FranciscoCurso de Engenharia da Computação
Computação Gráfica – Parte 11 Prof. Jorge Cavalcanti
Realismo Visual
• Criar imagens sintéticas realistas é o objetivo final dacomputação gráfica.
• O realismo visual é composto pelas técnicas de tratamento computacional aplicadas aos objetos sintéticos gerados, com o objetivo de criar-lhes uma imagem o mais próxima da realidade que se teria se eles fossem construídos e filmados.
• O realismo é fundamental nas simulações, no entretenimento, na educação e muitas outras aplicações.
Computação Gráfica – Parte 11 Prof. Jorge Cavalcanti
• Podemos considerar o realismo em duas etapas.
– Estática: Onde são tratados os objetos e cenas estáticas é trabalhado o chamado realismo fotográfico.
– Dinâmica: A parte dinâmica esta relacionada ao movimento da cena e seus personagens, chamada de animação.
Realismo Visual
Computação Gráfica – Parte 11 Prof. Jorge Cavalcanti
Rendering
• A computação gráfica trata da síntese de imagens através do computador.
• Sintetizar uma imagem (uma cena ou objeto) é criá-la em termos da definição dos dados dos objetos que a compõem.
• Isso se faz a partir da geometria da cena, das informações sobre os materiais de que são feitos os objetos (suas cores e texturas), das condições de iluminação ambiente e da posição de observação da cena.
• Nesse processo de criação sintética, é denominado rendering a fase de introdução nas cenas, do realismo fotográfico.
Computação Gráfica – Parte 11 Prof. Jorge Cavalcanti
O termo Rendering
• Não existe uma tradução fora da área computacional adequada para essa palavra;
• Basicamente, podemos descrevê-la por “realismo visual”
• Podemos interpretar o processo de rendering como o de converter dados em uma imagem realística ou simplesmente sintetizar um objeto ou cena até ter-se deles uma aparência de algo real e não de formas inteiramente criadas no computador.
Computação Gráfica – Parte 11 Prof. Jorge Cavalcanti
Fases do processo de Realismo Visual
• Este processo envolve sete fases distintas.
– Nem todas usadas em todas as aplicações.
• O mais usual é que um trabalho seja apresentado em um nível de realismo adequado ao seu uso.
• Principalmente porque ao aumentar-se o realismo de uma cena aumenta-se também seu tempo de processamento e custo de geração.
Computação Gráfica – Parte 11 Prof. Jorge Cavalcanti
• Na primeira fase, tem-se a construção do modelo que conterá todas as informações para o processo de realismo visual.
– Essa primeira fase consiste na utilização de alguma técnica de modelagem.
• A segunda fase aplica transformações lineares no modelo de modo que ele tenha aparência tridimensional nos diversos dispositivos (geralmente bidimensionais).
– Essa fase consiste, então, na utilização de projeções e perspectivas adequadas.
Fases do processo de Realismo Visual
Computação Gráfica – Parte 11 Prof. Jorge Cavalcanti
• Na terceira fase, considera a eliminação de polígonos ou faces escondidas devido a posição relativa entre os objetos da cena e o observador (culling back-faces).
• Na quarta fase, são desconsideradas as partes das cenas que não serão mostradas, são chamados “recortes”. – Imagine que você tenha uma infinidade de coisas para ver, para
algumas sua visão será limitada, por que estão encobertas ou não chamam atenção.
• Isso é chamado de clipping (assim como o rendering não tem um significado literal) tem sentido no contexto.
Fases do processo de Realismo Visual
Computação Gráfica – Parte 11 Prof. Jorge Cavalcanti
• A quinta fase se encarrega em converter a representação tridimensional para pixels.
• Seja lá qual for o sistema de coordenadas que se esteja usando, os dados serão levados para um conjunto de coordenadas do dispositivo em que será mostrado.
• Essa conversão de coordenadas leva os dados do modelo para o mundo digital.
• Linhas e áreas serão transformadas em conjuntos de pixels.
– Esse processo é chamado rasterização.
Fases do processo de Realismo Visual
Computação Gráfica – Parte 11 Prof. Jorge Cavalcanti
• A sexta fase é de certa maneira uma continuação da terceira, pois trata também da eliminação de partes de um objeto que devem ser removidas.
– Só que agora essas partes são devidas à interferência dos diversos objetos presentes na cena,onde, devido a sua posição relativa, pode ocorrer que uns fiquem na frente de partes de outros.
• Muitos autores englobam estas duas partes no que se chama tratamento de partes escondidas (hidden).
Fases do processo de Realismo Visual
Computação Gráfica – Parte 11 Prof. Jorge Cavalcanti
• Na última fase, o realismo “fotográfico” começa a ser realmente tratado e percebido.– E para que seja feito adequadamente deve-se levar em conta as
luzes presentes na cena, suas intensidades e direções (em relação aos objetos).
• Também devem ser consideradas todas as características das superfícies representadas: transparência, brilho, reflexão e textura.
• Ainda devem ser consideradas as sombras que os diversos objetos fazem entre si e nas superfícies em que se apóiam.
• O nível de realismo dessa fase pode ser tão sofisticado quanto a aplicação precisar.
Fases do processo de Realismo Visual
Computação Gráfica – Parte 11 Prof. Jorge Cavalcanti
Realismo por passadas
• A construção de uma cena realística é um processo incremental.
• Essa forma de criação de cenas realísticas é denominada de realismo por passadas.– É a forma utilizada pela grande maioria dos sistemas para
geração de cenas realísticas
• Esse processo permite que os atributos de uma cena sejam renderizados separadamente da sua geração ou modelagem. – Diversas técnicas e softwares participam do processo de inclusão
do grau de realismo desejado a cena.
Computação Gráfica – Parte 11 Prof. Jorge Cavalcanti
Realismo por passadas• Uma série de bons motivos tornou a renderização por
passadas o padrão da computação gráfica atual.
• Economia de memória: pois nessa técnica não precisam ser colocados todos os objetos de uma vez para o render.
• Facilidade da introdução de modificações: se precisarmos alterar somente alguns elementos de uma cena como luzes, sombras ou cores, não será necessário perder ou refazer todo o processo de renderização anterior.
Computação Gráfica – Parte 11 Prof. Jorge Cavalcanti
Realismo por passadas
• Um outro motivo que torna mais eficiente essa forma de renderização é a possibilidade de maior utilização das imagens estáticas.– Por exemplo, se já temos em uma animação uma cena observada
a partir de um ponto estático (como um filme com uma câmera fixa), não será necessário renderizar toda a cena, apenas os pontos que sofrerem modificações.
• Essa técnica permite também a mixagem com objetos ou texturas reais obtidas por captura, ou seja, o render por passadas permite uma integração com imagens fotográficas, acrescentando sombras, texturas complexas ou elementos do mundo real (como rostos) à cena.
Computação Gráfica – Parte 11 Prof. Jorge Cavalcanti
RasterizaçãoRepresentação Vetorial x Matricial • Normalmente, gráficos são definidos
através de primitivas geométricas como pontos, segmentos de retas, polígonos, etc– Representação vetorial
• Dispositivos gráficos podem ser pensados como matrizes de pixels (rasters)– Representação matricial
• Rasterização é o processo de conversão entre representações vetorial e matricial
• Técnicas de antialiasing podem ser empregadas.
Computação Gráfica – Parte 11 Prof. Jorge Cavalcanti
• Rasterização é um processo de amostragem
– Domínio contínuo discreto
– Problemas de aliasing são esperados
• Cada primitiva pode gerar um grande número de pixels
– Rapidez é essencial
• Em geral, rasterização é feita por hardware
Rasterização
Computação Gráfica – Parte 11 Prof. Jorge Cavalcanti
Rasterização de Segmentos de Reta• Segmento de reta entre P1= (x1, y1) e P2= (x2, y2)
– Já foi recortado com relação ao viewport
• Objetivo é pintar os pixels atravessados pelo segmento de reta– Na verdade, nem todos, apenas os mais próximos
• Reta de suporte dada por a x + b y + c = 0• Queremos distinguir os casos
– Linhas ~ horizontais computar y como função de x– Linhas ~ verticais computar x como função de y
Computação Gráfica – Parte 11 Prof. Jorge Cavalcanti
Amostragem, Aliasing, e Anti-aliasing• A linha, que no universo físico é contínua, é amostrada em uma
matriz finita 2D de pixels.
• Tal discretização pode causar distorções visuais como cisalhamento ou efeito de escada.
• Essas distorções são chamadas de aliasing.
• Para reduzir o problema, usa-se uma técnica chamada anti-aliasing.
• A técnica consiste em uma superamostragem (uma vez que o aliasing é causada por uma subamostragem)
Computação Gráfica – Parte 11 Prof. Jorge Cavalcanti
Superamostragem = Amostrar um objeto numa resolução maior do que será reconstruído.
Dividir os pixels em sub-pixels (i.e. 9), aplicar o algoritmo de Bresenham nesses sub-pixels
Contar o número desub-pixels “acesos”
por pixel
O pixel será aceso com intensidade proporcional ao número de sub-pixels acesos.
23
1 3
3
3
Superamostragem
Computação Gráfica – Parte 11 Prof. Jorge Cavalcanti
Exemplo de Anti-aliasing em Linhas
Observe que quando a cor de fundo não é preto, o anti-aliasing deve fazer uma composição da intensidade com a cor de fundo.
Anti-aliasing é necessário não só para linhas, mas também para polígonos e texturas.
Computação Gráfica – Parte 11 Prof. Jorge Cavalcanti
Remoção de elementos ocultos• Remoção de elementos ocultos (eliminação de linhas e
superfícies escondidas).
• A solução eficiente de problemas de visibilidade é o principal passo do processo de criação de cenas realísticas.
• Esse problema lida freqüentemente com a determinação da visibilidade de linhas e superfícies.
• Existem diversos algoritmos usados para determinar as linhas, arestas, superfícies ou volumes que são visíveis ou não para um observador localizado em um ponto específico no espaço. – Atualmente, são implementados nas placas gráficas.
– Algoritmos Z-Buffer, do Pintor, Cálculo da Normal...
Computação Gráfica – Parte 11 Prof. Jorge Cavalcanti
Remoção de elementos ocultos
E
Computação Gráfica – Parte 11 Prof. Jorge Cavalcanti
Remoção de elementos ocultos• É importante existir uma forma de identificação de linhas, arestas ou
superfícies visíveis e não visíveis.– Decidir se a mesma deverá ser traçada ou não
– Conservar a fidelidade, resolução e agilidade de representação
• Algoritmos de remoção de faces ocultas (HSR) foram desenvolvidos na década de 70, mas foram abandonados por que requeriam alto processamento e grande quantidade de memória
• O avanço tecnológico e barateamento de memória re-introduziram alguns desses algoritmos.
• Os diferentes algoritmos deverão realizar as seguintes tarefas:– Ler e armazenar em matriz as coordenadas 3D dos objetos
– Localizar no espaço 3D a posição do observador, para definição dos parâmetros de visibilidade
– Cálculo do vetor normal 3D de cada face do objeto
– Cálculo do vetor da linha de visibilidade para cada face do objeto
Computação Gráfica – Parte 11 Prof. Jorge Cavalcanti
Remoção de elementos ocultos• Os diferentes algoritmos deverão realizar as seguintes
tarefas (cont.):– Realizar o teste de visibilidade, verificando o ângulo da normal da
face com a linha de visibilidade.
– Definir os vértices ou cantos das faces do objeto e armazená-los– Verificar os cantos visíveis, com seus respectivos posicionamentos– Traçar as arestas das faces visíveis, que revelarão o objeto sob
determinado ponto de vista.
Se 90º < < 180º - Superfície invisívelSe - 90º < < 90º - Superfície visível
Computação Gráfica – Parte 11 Prof. Jorge Cavalcanti
Z-buffer
• Buffers são áreas reservadas de memória utilizadas para determinados propósitos.
• Em aplicações de animação, por exemplo, o double-buffer permite que as sucessivas renderizações sejam feitas de modo suave, sem o efeito indesejável de piscar entre cada atualização da janela de visualização.
• O z-buffer é bastante comum em aplicações gráficas e é utilizado para calcular a distância do observador e remover superfícies ou partes ocultas de objetos sobrepostos.
glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB | GLUT_DEPTH)
Z-Buffer