FCG2006 Prova sobre OpenGL e Rastreamento de Raios



Documentos relacionados
CG 2013/2014 Primeiro Teste LEIC Alameda/Taguspark

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

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

Sistemas Gráficos Interativos. Interações

n À primeira vista: basta desenhar n Uma subrotina para desenhar cada tipo de objeto n Mas... n Como fazer interação? n Como estruturar a cena?

Sistemas de Interfaces com o Usuário e OpenGL (com IUP ou GLUT)

António Costa. Paulo Roma Cavalcanti

Uma API para geração de gráficos

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

Computação Gráfica II

CG com OpenGL. Paulo Gandra de Sousa Sistemas Gráficos e Interactivos Instituto Superior de Engenharia do Porto

Computação Gráfica - 13

Iluminação. Módulo 10. Sistemas Gráficos e Interação. Filipe Pacheco SGRAI 2017/18 DEI-ISEP 186. Instituto Superior de Engenharia do Porto

Projeções e Visualização

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

LAB. 1. Introdução à OpenGL

Estrutura de um programa gráfico

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

OpenGL, GLU e GLUT. GLUT (OpenGL Utility Toolkit) OpenGL. Linguagem. OpenGL. Esqueleto de um programa em PyOpenGL

Introdução a OpenGL. Profª. Alessandra Martins Coelho

Paulo Sérgio Rodrigues. Exercícios de Laboratório

Introdução a OpenGL. Renato Rodrigues Oliveira da Silva Danilo Medeiros Eler

OpenGL 3.* INF Rendering em Tempo Real. Waldemar Celes Departamento de Informática, PUC-Rio

INF1339 Computação Gráfica Tridimensional. Waldemar Celes. 2 de Agosto de 2010

Introdução à Programação em OpenGL. Prof. Márcio Bueno

Revisões. Módulos Sistemas Gráficos e Interação. Filipe Pacheco SGRAI 2017/18 DEI-ISEP 228. Instituto Superior de Engenharia do Porto

OpenGL. Alberto B. Raposo

OpenGL. Computação Gráfica ISEL/DEETC/SP Computação Gráfica

Animação e Visualização Tridimensional

OpenGL. Licenciatura em Computação Computação Gráfica - Aula 2 (atualizada em 03 ago. 2017)

CG 2015/2016 Prova de Repescagem LEIC Alameda/Taguspark. 12 de Janeiro de 2016

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

Como Fazer um Programa, simples, em OpenGL para Trabalhar com Iluminação (exemplo do site da Isabel Mansour)

Computação Gráfica. Licenciatura em Engenharia Informática e de Computadores Taguspark / Alameda. Primeiro Teste 17 de Março de 2012

OpenGL. Licenciatura em Computação Computação Gráfica - Aula 2 (atualizada em 15/08/2018)

OpenGL. 35T56 Sala 3E3 Bruno Motta de Carvalho DIMAp Sala 15 Ramal 227 DIM102

CG 2015/2016 Primeiro Teste LEIC Alameda/Taguspark. Primeiro Teste

Iluminando o Cenário

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

Introdução ao OpenGL e à Programação Baseada em Eventos

INTRODUÇÃO A OPENGL. Computação Gráfica

Computação Gráfica. Engenharia de Computação. CEFET/RJ campus Petrópolis. Prof. Luis Retondaro. Aula 2. Introdução a OpenGL

Fundamentos de Computação Gráfica

Aula Teórico-Prática nº 2

Engenharia Elétrica Computação Gráfica - Aula 2 (atualizada em 22/04/2018)

Programação Gráfica Cap 2

Modelos de Iluminação Métodos de surface-rendering

Programa de Aprimoramento Discente em Modelagem Geométrica Computacional. Curso Básico de OpenGL

8. Síntese de Imagens: Cálculo de Cor

OpenGL. O que é OpenGL. O Pipeline do OpenGL. Listas de Exposição

Computação Gráfica - 13

Computação Gráfica OpenGL 05 3D

Computação Gráfica. GLSL - Programação de Shaders Iluminação

Introdução Programando com OpenGL Exemplos. O que é OpenGL? [1]

Computação Gráfica. GLSL - Programação de Shaders Iluminação

INF 1620 P1-10/04/02 Questão 1 Nome:

- INF Remoção de faces ocultas Aula 21

Textura e Iluminação

OpenGL Conceitos Básicos

Computação Gráfica OpenGl 01

Transformações Geométricas

Programação Estruturada I

AVRLib - An Object Oriented Augmented Reality Library

OpenGL. Introdução ao OpenGL. OpenGL. OpenGL. OpenGL. OpenGL. Profa. M. Cristina Profa. Rosane

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

Programação Gráfica 2D com OpenGL (Aulas 22, 24 e 25)

CG 2015/2016 Segundo Teste LEIC Alameda/Taguspark. Segundo Teste. 18 de Novembro de 2015

Introdução Prática à Programação em OpenGL

Engenharia Informática Computação Gráfica

André Tavares da Silva

Visualização. - Aula 4 -

OpenGL. Introdução ao OpenGL. Sistemas de Coordenadas. OpenGL 29/04/2010. Profa. M. Cristina Profa. Rosane. Application Programming Interface (API)

IntMu.Lab5. Importe os ficheiros disponibilizados em

OpenGL. Conceitos Básicos. Waldemar Celes. Tecgraf/PUC-Rio

OpenGL. Conceitos Básicos. Waldemar Celes. Tecgraf/PUC-Rio. OpenGL: o que é? Interface para programador de aplicação. Aplicação API abstrata

INF01046 Fundamentos de Processamento de Imagens Semestre Turma A. Prof. Manuel M. Oliveira

Fundamentos de Programação

INF01046 Fundamentos de Processamento de Imagens. Prof. Manuel M. Oliveira

OpenGL. Parte I: Geometria. Waldemar Celes Departamento de Informática Tecgraf/PUC-Rio

3- SUPERFÍCIES PARAMETRIZADAS...27

Transformações Geométricas

Introdução ao OpenGL. Professora: Maria Cristina Ferreira de Oliveira. Erick Gómez Nieto Agosto, 2011 Introdução ao OpenGL

Iluminação (lighting) e Sombreamento (shading)

CAPÍTULO II VISUALIZAÇÃO E APLICAÇÕES GRÁFICAS 2D 3 1- PONTOS E RETAS NO OPENGL 3. 2 TECLADO E MOUSE (Callbacks) 15 3 CURVAS PARAMÉTRICAS 20

CMP513 Rendering Avançado

2º Exame. Computação Gráfica

Experimentos com a memória cache do CPU

OpenGL. Professora: Mercedes Gonzales Márquez

Computação Gráfica. Introdução. Tomás A. C. Badan

Transformações geométricas

Fundamentos de Programação

OpenGL. Sumário COMPUTAÇÃO GRÁFICA E INTERFACES. Introdução. Introdução. Carlos Carreto

FUNDAMENTOS E APLICAÇÕES. Luis Valente

Atividade: matrizes e imagens digitais

Universidade Federal de Campina Grande

Java 3D. Java: Independência de plataforma. Adailton J. A. da Cruz Alberto B. Raposo. Bytecode Java. Código x86. Java VM. Java VM.

Iluminação em OpenGL. André Tavares da Silva.

Computação Gráfica. Texturas

Introdução a Prática em OpenGL

Estruturas (registros)

Transcrição:

FCG2006 Prova sobre OpenGL e Rastreamento de Raios Aluno(a): matrícula: 1. O programa SimpleLight.c mostrado no Quadro 1 produz a janela mostrada na Figura 1. A partir do código, calcule coordenadas na imagem e as componentes RGB de cada um dos 4 vértices das 3 faces visíveis. Confira os valores com os da imagem obtida a partir da implementação do programa (capture a imagem diretamente da tela de seu computador). #include <glut.h> Figura 1 Imagem produzida pelo programa SimpleLight.c. typedef struct float ambiente[4]; float diffuse[4]; float specular[4]; float shininess[1]; Material; Material brass=0.33f, 0.22f, 0.03f, 1, 0.78f, 0.57f, 0.11f, 1, 0.99f, 0.91f, 0.81f, 1, 27.8f; void setmaterial(material* p) glmaterialfv(gl_front_and_back, GL_AMBIENT, p->ambiente); glmaterialfv(gl_front_and_back, GL_DIFFUSE, p->diffuse); glmaterialfv(gl_front_and_back, GL_SPECULAR, p->specular); glmaterialfv(gl_front_and_back, GL_SHININESS, p->shininess); void displaycall(void) glclearcolor(0.4f,0.4f,0.4f,1); glclear(gl_color_buffer_bit GL_DEPTH_BUFFER_BIT); setmaterial(&brass);

glutsolidcube(1); glflush(); /* Callback de REDISPLAY */ void reshapecall(int width, int height) glviewport(0, 0, (GLsizei)(width), (GLsizei)(height)); glmatrixmode(gl_projection); gluperspective(45,4./3,0.5,10); glulookat(1.5,1.5,1.2, 0,0,0, 0,0,1); /* Callback de RESHAPE */ void keyboardcall(unsigned char c, int x, int y) switch (c) case 27: exit(1); /* Callback de KEYBOARD */ void initlight( ) float position[]= 0.5f,2.f,0.f,1.f; float low[]=0.2f,0.2f,0.2f,1; float white[]=1,1,1,1; gllightfv(gl_light0, GL_AMBIENT, low); gllightfv(gl_light0, GL_DIFFUSE, white); gllightfv(gl_light0, GL_SPECULAR, white); gllightfv(gl_light0, GL_POSITION, position); glenable(gl_lighting); glenable(gl_light0); int main(int argc, char **argv) glutinit(&argc, argv); /* Inicializando a GLUT */ glutinitdisplaymode(glut_rgb GLUT_DEPTH); glutinitwindowsize(640, 480); glutcreatewindow("fcg:simple Light"); glutdisplayfunc(displaycall); glutreshapefunc(reshapecall); glutkeyboardfunc(keyboardcall); glenable(gl_depth_test); glenable(gl_normalize); initlight(); /* Inicializando a luz e o material */ glutmainloop(); /* GLUT main loop */ return 0; Quadro 1 Programa SimpleLight.c

2. O programa SimpleTexture.c mostrado no Quadro 2 produz a imagem mostrada na Figura 2 numa janela GLUT. A partir do código, calcule todas as transformações que sofrem os vértices do retângulo. Ou seja, calcule as matrizes Model-View e Projection e as coordenadas de cada um dos vértices nos sistemas do olho, de recorte, normalizado e da janela. Calcule também a interpolação da textura e confira as coordenadas dos 9 vértices que estão na linha vertical tracejada vermelha do centro da imagem (implemente o programa e capture a imagem diretamente da tela de seu computador). Procure calcular as posições dos 7 vértices internos da linha vermelha por interpolação dos 2 da extremidade. Figura 2 Imagem produzida pelo programa SimpleTexture.c. #include <glut.h> unsigned char checker[64][64][3]; static void checkerboard( ) int i,j; for(i=0;i<64;i++) for(j=0; j<64; j++) unsigned char c = (((i&0x8)==0)^((j&0x8)==0))? 255: 0; checker[i][j][0]=c; checker[i][j][1]=c; checker[i][j][2]=c; void displaycall(void) glclearcolor(0.6f,0.6f,0.6f,1); glclear(gl_color_buffer_bit GL_DEPTH_BUFFER_BIT); glbegin(gl_polygon); gltexcoord2d(0.,0.); glvertex3d(0,0,0); gltexcoord2d(1.,0.); glvertex3d(1,0,0); gltexcoord2d(1.,1.); glvertex3d(1,1,0); gltexcoord2d(0.,1.); glvertex3d(0,1,0); glend(); glflush(); /* Callback de REDISPLAY */

void reshapecall(int width, int height) glviewport(0, 0, (GLsizei)(width), (GLsizei)(height)); glmatrixmode(gl_projection); gluperspective(45,4./3,0.5,2); glulookat(1.5,0.5,0.5, 0.5,0.5,0, 0,0,1); /* Callback de RESHAPE */ void keyboardcall(unsigned char c, int x, int y) switch (c) case 27: exit(1); /* Callback de KEYBOARD */ int main(int argc, char **argv) /* Inicializando a GLUT */ glutinit(&argc, argv); glutinitdisplaymode(glut_rgb GLUT_DEPTH); glutinitwindowsize(640, 480); glutcreatewindow("fcg:simple Texture"); /* Registrando as callbacks */ glutdisplayfunc(displaycall); glutreshapefunc(reshapecall); glutkeyboardfunc(keyboardcall); /* Inicializa as texturas do cubo */ checkerboard( ); glenable(gl_depth_test); glenable(gl_texture_2d); glteximage2d(gl_texture_2d,0,3,64,64,0,gl_rgb,gl_unsigned_byte,checker); gltexparameterf(gl_texture_2d,gl_texture_wrap_s,gl_clamp); gltexparameterf(gl_texture_2d,gl_texture_wrap_t,gl_clamp); gltexparameterf(gl_texture_2d,gl_texture_mag_filter,gl_nearest); gltexparameterf(gl_texture_2d,gl_texture_min_filter,gl_nearest); /* GLUT main loop */ glutmainloop(); return 0; Quadro 2 Programa SimpleTexture.c

3. A partir da cena descrita no Quadro 3, um programa de Rasteamento de Raios produziu a imagem ilustrada na Figura 3. A Tabela 1 mostra os valores de RGB de dois pixels diferentes. Re-faça os cálculos de forma a conferir os valores da tabela. Camera: eye = (100, 40, 40), center = (0, 0, 0), up=(0,1,0), fov=90 o, near = 30, far=230, w=500, h=500. Material: amarelo k d = (0.71, 0.71, 0), k s = (1, 1, 1), n = 40, opacidade = 1, não é espelhada. azul k d = (0, 0, 1), k s = (1, 1, 1), n = 50, opacidade = 1, não é espelhada. Esfera: c = (0,20,0), r = 30, material azul Caixa alinhada com os eixos: p 0 = (-80, -50, -50), p 1 = (50, -45, 50) e material amarelo Luzes: Ambiente: (0.35, 0.35, 0.51) Pontual posição=(40,120,0) e intensidade RGB l = (1,1,1) Quadro 3 Descrição da cena Figura 3 Imagem produzida por um programa de Rastreamento de Raios. Pixel x y R G B 1 278 294 0.00 0.00 0.78 2 200 100 0.94 0.94 0.00 Tabela 1 Valores de RGB para dois pixels diferentes.