Sumário. Introdução Câmera sintética Window-to-Viewport Exercício. 29-May-13 Leandro Tonietto!2

Documentos relacionados
Pipeline de Visualização 3D

Projeções e Transformações em 3D

Computação Gráfica - OpenGl 02

Computação Gráfica. Engenharia de Computação. CEFET/RJ campus Petrópolis. Prof. Luis Retondaro. Aula 6. Projeções

Visualização 3D. Soraia Raupp Musse

Transformações 3D. Soraia Raupp Musse

Visualização. - Aula 4 -

3D no OpenGL. Visualização e Transformações Perspectiva. Transformações do Modelview. Processo

Computação Gráfica OpenGL 05 3D

Algoritmos de Recorte em 2D

Matriz de transformação

Transformações geométricas

Sist. Coordenadas Câmera (SCC)

Desenho de uma matriz de retângulos Serve de base para o exercício das cores

Primeira Prova 25 de abril de DURAÇÃO DA PROVA: 90m

Computação Gráfica. Agostinho Brito. Departamento de Engenharia da Computação e Automação Universidade Federal do Rio Grande do Norte

Disciplina: Computação Gráfica Prof. Dr. Paulo R. G. Luzzardi. Universidade Católica de Pelotas Centro Politécnico Ciência da Computação

Computação Gráfica. Licenciatura em Engenharia Informática e de Computadores Alameda/Taguspark. 1º Exame 29 Junho de 2010

Objetos definidos no seu próprio sistema de coordenadas

Sumário COMPUTAÇÃO GRÁFICA E INTERFACES. Modelos e modelagem. Modelos e modelagem. Transformações Geométricas e Visualização 2D

Câmara Virtual Simples

Computação Gráfica 09

Prof. Fernando V. Paulovich 3 de agosto de SCC Computação Gráca

Viewing Pipeline 2D. Viewing Pipeline 2D/3D. Viewing Pipeline 2D. Viewing (onde estamos no pipeline) Maria Cristina F. de Oliveira Rosane Minghim 2010

Computação Gráfica. Licenciatura em Engenharia Informática e de Computadores Alameda / Taguspark. Terceiro Teste 19 de Maio de 2012

Câmara Virtual. Licenciatura em Engenharia Informática e de Computadores Computação Gráfica. Edward Angel, Cap. 5 Apontamentos CG

Rendering de Polígonos. Determinação de Superfícies Visíveis. Back Face Culling. Back Face Culling. Back Face Culling. Back Face Culling.

Prof. Fernando V. Paulovich 25 de abril de SCC Computação Gráca

Cap. 4: Janelas, Visores & Recorte Gráfico

Computação Gráfica Viewing

1 Para expressar um ponto intermediário em função dos pontos extremos, precisamos

Pipeline de Visualização 2D

Pipeline de Visualização Câmara Virtual

Revisão. Soraia Raupp Musse

Transformações Geométricas

2º Exame. Computação Gráfica

UNIVERSIDADE FEDERAL FLUMINENSE Pedro Martins Menezes. Um estudo dos estágios dos pipelines gráficos

Computação Gráfica. Prof. MSc. André Yoshimi Kusumoto

Introdução ao Processamento Gráfico

Visualização 2D. Rasterização de primitivas 2D e Pipeline 2D. Soraia Raupp Musse

Transformações 3D. Soraia Raupp Musse

Computação Gráfica. Prof. MSc. André Yoshimi Kusumoto

Transformações Geométricas

Introdução à Computação Gráfica. Claudio Esperança Paulo Roma Cavalcanti

Computação Gráfica. Prof. MSc. André Yoshimi Kusumoto

Implementação de um Ambiente para Modelagem de Objetos 3D com uso de Sweeping. Ednilson José ALUNO. Prof. Dalton Solano dos Reis ORIENTADOR

Transformações 3D. Soraia Raupp Musse

Exame de Época Especial Computação Gráfica

Computação Gráfica - 09

Computação Gráfica - 09

Computação Gráfica e Processamento de Imagens. - mapeamento - visualização. Prof. Julio Arakaki

Computação Gráfica Transformações Projetivas

Projeções e Visualização

Desenho auxiliado por computador

Determinação da Visibilidade

DESENVOLVIMENTO DE UM SOFTWARE DE GERAÇÃO E VISUALIZAÇÃO DE NANOESTRUTURAS

Visualização e Projeções

Aula 5 TECNOLOGIA EM JOGOS DIGITAIS PROGRAMACAO E INTEGRACAO DE JOGOS I. Marcelo Henrique dos Santos

Capítulo 3 Primeiros Passos em OpenGL Função Desenha Função Teclado Função Inicializa Programa Principal...

Segunda Prova 20 de junho de DURAÇÃO DA PROVA: 90m

Representação de Objetos e Cenas. Soraia Musse

Introdução. 1 Introdução

Recorte. Licenciatura em Engenharia Informática e de Computadores Computação Gráfica. Edward Angel, Cap. 7 Apontamentos CG

Técnicas de renderização com textura

Introdução Geral a Computação Gráfica. Universidade Católica de Pelotas Curso de Engenharia da Computação Disciplina de Computação Gráfica

Introdução ao Processamento e Síntese de imagens -Linhas e superfícies escondidas

Transformações 3D. Soraia Raupp Musse

Pipeline de Visualização Câmara Virtual

XNA. Introdução ao XNA

Aula 4 TECNOLOGIA EM JOGOS DIGITAIS PROGRAMACAO E INTEGRACAO DE JOGOS I. Marcelo Henrique dos Santos

Rasterização de primitivas 2D e Pipeline 2D. Soraia Raupp Musse

Transformações de Pontos. Computação Gráfica Prof. Dr. Paulo Roberto Gomes Luzzardi Aluna: Karina da Silva Salles

ROBÓTICA TRANSFORMAÇÕES MATRICIAIS. Prof a. Dra. GIOVANA TRIPOLONI TANGERINO Tecnologia em Automação Industrial

1º Teste de Computação Gráfica

Computação Gráfica. 5385: Licenciatura em Engenharia Informática. Cap. 3 Janelas e Visores. Janelas e Visores

Computação Gráfica e Áreas Correlatas

Instituto de Computação Bacharelado em Ciência da Computação Disciplina: Computação Gráfica Primeira lista de exercícios

Instituto de Computação Bacharelado em Ciência da Computação Disciplina: Computação Gráfica Primeira lista de exercícios

Transformações (Cap 4.3, 4.4 e 4.6 a 4.10)

Curso de Computação Gráfica (CG) 2014/2- Cap 2 parte 2 Transformações no espaço e projeções Trabalho 5 (individual) - Gabarito

7. Projeções Geométricas e Visualização 3D

Um Algoritmo para a Visualização de um Terreno com Objetos

Universidade de Aveiro Departamento de Electrónica, Telecomunicações e Informática. Visualização 3D

Exame de 1ª Época Computação Gráfica

Curvas e Superfícies Paramétricas

The Graphics Pipeline

1º Teste de Computação Gráfica 3º Ano

Modelagem Geométrica

4. Curvas Paramétricas e Transformações 2D

Computação Gráfica. Licenciatura em Engenharia Informática e de Computadores Alameda/Taguspark. 2º Exame 15 de Julho de 2010

4 Resultados. 4.1 Análise de desempenho

Transformações 2D. Prof. Márcio Bueno Fonte: Material do Prof. Robson Pequeno de Sousa e do Prof.

António Costa. Paulo Roma Cavalcanti

Computaçã. Visão Geral. Sistema Gráfico. Computação Gráfica. Pixels. Sistema Gráfico e o Frame Buffer. Introdução à Computação Gráfica

vértices dessas células. Exemplos de malhas estruturadas e não-estruturadas são apresentados na Figura 2.

Universidade de Aveiro Departamento de Electrónica, Telecomunicações e Informática. Visualização 3D

Sistemas de Referência

Iluminação. Aula 6. Sistemas Gráficos e Interactivos Instituto Superior de Engenharia do Porto. Paulo Gandra de Sousa

Transcrição:

Câmera Sintética Leandro Tonietto Computação Gráfica Desenvolvimento Jogos e Entretenimento Digital ltonietto@unisinos.br http://professor.unisinos.br/ltonietto/jed/pgr/camerasintetica.pdf 05-13 29-May-13 Leandro Tonietto

Sumário Introdução Câmera sintética Window-to-Viewport Exercício. 29-May-13 Leandro Tonietto!2

Introdução Para renderização de objetos reais 3D são necessárias duas etapas antes da rasterização: representação de objetos e projeção para 2D. Representação de objetos do mundo real. Objetos são descritos matematicamente, conforme o sistema de coordenadas do universo. Objetos estão presentes no espaço 3D Modelo de câmera sintética é baseado na idéia de capturar objetos do mundo real, assim como uma fotografia. Representação matemática é convertida para exibição em dispositivo gráfico 2D. Pipeline gráfico converte a representação dos objetos do mundo 3D para o mundo 2D. 29-May-13 Leandro Tonietto!3

Câmera Sintética Metáfora com fotografia. O processo de fotografar um objeto do mundo real é: Posicionamento da câmera: local e direção Arrumar os objetos da cena Qual objeto aparece aonde Qual é o ajuste de zoom: lentes Determinar o tamanho final da fotografia 29-May-13 Leandro Tonietto!4

Os objetos são capturados e representados no computador: Parte de um ponto de referência (local do observador ou localização da câmera ou ponto de visão) Dentro um plano de visão (área visível do mundo real). Chama-se de Window. As informações serão processadas a partir do sistema de referência da câmera (ponto de visão). A visualização é traçada a partir do ponto de visão, sobre o eixo Z até o plano de corte de fundo (em geral assume-se que o eixo Z é perpendicular ao plano de visão). Volume de visão é aquele formado por raios que partem do ponto de visão e passam pela janela do plano de visão (Window) até um limite. Near é o plano que define o início do volume e Far define o final (planos de corte). Objetos contidos neste volume serão os visualizados. Conversão de das informações do universo (Window) para o dispositivo gráfico: Assume-se uma porção lógica de janela (Viewport) do espaço disponível 2D. Faz-se a conversão do objeto do mundo real (Window) para o mundo 2D (Viewport) Figuras: 1 esquema de câmera sintética e 2- conversão window-to-viewport 29-May-13 Leandro Tonietto!5

Figura 1 Volume de visão 29-May-13 Leandro Tonietto!6

Representação de objetos do mundo 3D Transformação em coordenadas de câmara Corte conforme volume de visão Projeção do objeto sob o plano de visão Conversão para viewport Conversão para coordenadas do dispositivo físico 29-May-13 Leandro Tonietto!7

Transformação em coordenadas de câmera: A câmera possui as seguintes componentes: Ponto de visão p Direção (v) Direção para cima (w) ou apenas vetor cima Plano de visão com uma distância d da origem O ponto de referência passa a ser o ponto de visão ou de referência da câmera Requer uma transformação de um sistema para outro. Portanto, os objetos devem estar sendo movimentados para utilizarem a câmera como ponto de referência. Para isto basta transladar o objeto com a mesma distância da câmera para a origem. Neste caso, o mundo está descrito a partir da câmera. 29-May-13 Leandro Tonietto!8

A outra forma de fazer a visualização dos objetos é aplicar transformações sobre a câmera e deixar os objetos aonde estão. As matrizes de transformação são aplicadas então, sobre a câmera e não sobre os objetos. É mais eficiente para renderização com deslocamento de câmera (p. e. jogos em primeira ou terceira pessoa) A âncora não é a câmera, mas sim a origem (0,0,0). Desvantagem: Deve-se aplicar transformações na mão. gltranslate, glrotate e glscale são utilizados apenas para os objetos e não para a câmera. 29-May-13 Leandro Tonietto!9

O recorte de visualização 3D: Objetivo: não processar o que não está visível no frustum. Frustum culling: eliminação do processo de renderização de objetos que não estão dentro do volume de visualização ou estão encobertos por outros objetos. Algoritmos de colisão Clipping 3D: recortar partes visíveis de objetos que estão parcialmente dentro do volume de visualização. Algoritmo Cohen-Suterland 3D 29-May-13 Leandro Tonietto!10

Projeção 3D! 2D: Gerar uma visão 2D dos objetos a serem renderizados. Depois fica mais simples a conversão para sistema de coordenadas do dispositivo. Dois tipos de projeção possíveis: Ortogonal: Objetos do fundo são desenhados primeiro, ignorando a profundidade Perspectiva: Objetos são desenhados considerando-se a perspectiva, ou seja, quanto mais ao fundo, menores são os objetos. Objetos são escalados no tamanho correto em relação a distância da visão. Portanto, quanto maior o z do objeto menor será o tamanho na hora da projeção. 29-May-13 Leandro Tonietto!11

Window-to-viewport Retângulos para representação visual dos objetos. Window no sistema de coordenadas universo Viewport no sistema de coordenadas do dispositivo gráfico Fórmula:!!! Onde: x e y coordenada do ponto no universo (window): V a = x inicial da viewport V b = x final da viewport V c = y inicial da viewport W a = x inicial da window W c = y inicial da window V d = y final da viewport W b = x final da window W d = y final da window 29-May-13 Leandro Tonietto!12

Exercício: Considere uma window de (-10,10) e (-10,10) e uma viewport de (0,300) e (0,300). O objetivo deste exercício é plotar: a linha dos eixos, que passa pela origem a função: a + i (b - a)/n, 0 < i < n a e b os pontos inicial e final do cálculo na window i e n são solicitados ao usuário. E n é um potência de 10. Por exemplo: 1, 10, 100, 1000,... Execute a iteração n vezes. Teste com 10 e com 100. O que acontece com o desenho da função? Como poderíamos resolver o problema? 29-May-13 Leandro Tonietto!13

Com OpenGL: Aqui slides do João 29-May-13 Leandro Tonietto!14

Movimentação em primeira pessoa: A câmera em primeira pessoa, faz o seu deslocamento junto ao personagem Como se fosse os olhos do personagem Normalmente, o personagem não visto, pois ele é a câmera! Na verdade se mostra alguma parte dele, como os braços ou objetos que possa estar carregando/ utilizando Como implementar? Basta que a câmera navegue pelo cenário com translação e rotação. 29-May-13 Leandro Tonietto!15

Movimentação em primeira pessoa: Câmera Personagem Objetos O jogador é a câmera. São usados a direção e a posição da câmera 29-May-13 Leandro Tonietto!16

Movimentação em primeira pessoa. Exemplo: Rotação direita Toda a vez que a câmera é rotacionada ou transladada, devese redefinir a sua posição (glulookat) e quando a proporção de tela muda devemos alterar o frustum (gluperspective) Translação para trás 29-May-13 Leandro Tonietto!17

Movimentação em primeira pessoa. Implementação: Câmera: Ponto de visão (eye) Direção Up Ângulo da direção y - - up direction 270 eye z x Neste exemplo, qual é o ângulo inicial? + + 29-May-13 Leandro Tonietto!18

Movimentação em primeira pessoa. Implementação: y - - Apenas adiciona (sentido horário) ou subtrai (sentido anti-horário) um ângulo alfa do ângulo atual da câmera. Não esquecer de calibrar a câmera e o ângulo de direção conforme a direção inicial estabelecida rotação Neste exemplo, qual seria o ângulo para rotação? Sendo a taxa de rotação é de 45... + z x + funções seno e cosseno são utilizadas para calcular o vetor de direção ddx = cos(a); ddz = sin(a); // eye em qualquer posição: dx = ex + ddx; dz = ez + ddz; 29-May-13 Leandro Tonietto!19

Movimentação em primeira pessoa. Implementação: + y - - z translação x + Devemos considerar que a translação deve ocorrer na mesma direção do vetor direção O que devemos considerar neste caso para realizar a translação? ddx = cos(a) ddz = sin(a) ex += ddx * v; ez += ddz * v; dx = ex + ddx; dz = ez + ddz; Note que este exemplo é para uma translação positiva. No caso de andar para trás deve-se subtrair o ex e o ez por ddx e ddz. Outro detalhe é o quanto se desloca o eye, se multiplicarmos ddx e ddz por um valor (v), que é o tamanho do passo, conseguimos um movimento mais suave. 29-May-13 Leandro Tonietto!20

Resumo de comandos para projeção: sempre utilizar modo de matriz GL_PROJECTION glmatrixmode(gl_projection); fazer definição do volume de visualização: Após mudar o modo de matriz limpar matriz base com glloadidentity() gluperspective(...); glviewport(...); deve ser definido uma vez na inicialização e redefinido a cada vez que o usuário altera a proporção da tela. Na verdade colocar a definição do frustum sempre numa função de reshape : glutreshapefunc(reshape); 29-May-13 Leandro Tonietto!21

Resumo de comandos para movimentação da câmera: sempre utilizar modo de matriz GL_MODELVIEW glmatrixmode(gl_modelview); fazer a redefinição da câmera (posição, direção e up): Após mudar o modo de matriz limpar matriz base com glloadidentity() considere que eye e direction devem ser atualizados antes do comando glulookat glulookat(ex, ey, ez,...); deve ser definido toda vez que o personagem deve movimentado pelo cenário. Normalmente, após eventos de teclado ou mouse: glutspecialfunc(specialkey); glutmousefunc(mouse); 29-May-13 Leandro Tonietto!22

Movimentação em terceira pessoa. Câmera Personagem Objetos O jogador é outro objeto e a câmera acompanha este objeto de referência. 29-May-13 Leandro Tonietto!23

Referências bibliográficas Agoston, Max K. Computer Graphics and Geometric Modeling: Implementation and Algorithms. Springer. 2005. 29-May-13 Leandro Tonietto!24