Engenharia Informática Computação Gráfica

Tamanho: px
Começar a partir da página:

Download "Engenharia Informática Computação Gráfica"

Transcrição

1 Computação Gráfica Engenharia Informática Transformações de Visualização Computação Gráfica 1

2 Definições janela de dominio da cena HOUSE CLIP ecrã janela de interface visor! Sistema de Coordenadas Globais (Espaço do Objecto ou Domínio da Cena) - É o referencial do espaço em que se encontram os objectos geométricos. - É neste espaço que o modelo de aplicação é definido; ex: R 2. - É neste espaço que a geometria do objecto é definida.! Janela de Domínio da Cena (Subespaço do Domínio de Cena) - Rectângulo que define a parte do domínio da cena que pretendemos visualizar! Sistema de Coordenadas do Ecrã (Espaço de Imagem) - Espaço no qual a imagem é mostrada; ex: 800x600 pixéis. - Espaço no qual a imagem rasterizada do objecto é definida.! Janela de Interface (Subespaço de Imagem) - Representação visual do sistema de coordenadas do ecrã para sistemas de saída baseados em janelas (sistema de coordenadas move-se com a janela de interface) Definições (cont.) janela do domínio de cena ecrã HOUSE CLIP ecrã janela de interface visor! Transformações de visualização (viewing Transformations)! Processo de mapeamento de uma janela do domínio de cena (world coordinates) para um visor (screen coordinates).! Visor (Subespaço de Imagem)! Um rectângulo no ecrã rasterizado (ou janela de interface) que define onde a imagem irá aparecer, ou na totalidade do ecrã ou numa janela de interface.! Portanto, em princípio, a mesma imagem pode ser replicada em diferentes visores (ou viewports) dentro do ecrã ou duma janela de interface. 2

3 Transformação Janela-Visor Dada uma janela e um visor, qual é a matriz de transformação que mapeia um ponto da janela em coordenadas globais num pixel do visor em coordenadas de ecrã? Esta matriz pode ser dada como a composição de 3 transformações, como é sugerido pela seguinte sequência de figuras: v y (x max,y max ) y v (u max,v max ) (x min,y min ) x x u (u min,v min ) u janela em coordenadas globais (ou de domínio de cena) janela transladada para a origem janela com visor transladado por tamanho alterado (u min,v min ) igual ao tamanho do visor para a posição final Transformação Janela-Visor: representação matricial v y (x max,y max ) y v (u max,v max ) (u min,v min ) (x min,y min ) x x u u 3

4 Transformação Janela-Visor: como é feita? v y (x max,y max ) Mantendo a proporcionalidade no mapeamento de (x,y) para (u,v) (u max,v max ) (u min,v min ) (x min,y min ) x variação de translação tamanho translação u x min x x max u min u u max y max v max y v y min v min Transformação Janela-Visor: exemplo y v (x max,y max ) (u max,v max ) (x min,y min ) janela(10.0,5.0,40.0,30.0) x (u min,v min ) u visor(100,50,250,300) 4

5 Transformação Janela-Visor: em OpenGL! gluortho2d(left, right, bottom, top)! Define uma região de visualização ortogonal 2D ou janela de domínio de cena. É definida por dois planos verticais de recorte left e right e dois planos horizontais de recorte bottom e top.! A janela por defeito é (-1,1,-1,1).! Define uma matriz de projecção ortogonal 2-D.! Define ainda a transformação janela-visor, o que requer a definição do visor através da seguinte função: Transformação Janela-Visor: em OpenGL! gluortho2d(left, right, bottom, top) A definição do visor é feita através da seguinte função:! glviewport(x, y, width, height)! Define o visor na janela de interface, onde x,y especificam o canto inferior esquerdo e width, height as suas dimensões.! Por defeito, o visor ocupa a área gráfica total da janela de interface.! Podem existir vários visores dentro da janela de interface. 5

6 Sequência de Transformações OpenGL coordenadas do olho coordenadas de recorte coordenadas do visor da janela de interface Vertex Modelview Matrix Projection Matrix Viewport GL_MODELVIEW mode! gltranslate()! glrotate()! glscale()! glloadmatrix()! glmultmatrix()! glulookat()! GL_PROJECTION mode! glortho()! gluortho2d()! glfrustum()! gluperspective()! glviewport()! Exemplos em OpenGL! Visor por defeito! Um único visor! Dois visores 6

7 Exemplo 1: visor por defeito! Como já foi referido, se glviewport(x, y, width, height) NÃO é EXPLICITAMENTE usada no programa, o visor por defeito é toda a área gráfica da janela de interface.! Veja-se o exemplo do próximo programa que retrata esta situação. O visor por defeito tem a área 500x500 e é definido por glutinitwindowsize(500,500) no programa principal. Exemplo 1: visor por defeito // Header files first void draw(){ // Make background colour yellow glclearcolor( 100, 100, 0, 0 ); glclear ( GL_COLOR_BUFFER_BIT ); // Sets up the PROJECTION matrix glmatrixmode(gl_projection); glloadidentity(); gluortho2d(0.0,50.0,-10.0,40.0); // also sets up world window // Draw BLUE rectangle glcolor3f( 0, 0, 1 ); glrectf(0.0,0.0,10.0,30.0); // display rectangles glutswapbuffers(); } // end of draw() 7

8 Exemplo 1: visor por defeito (cont.) // Keyboard method to allow ESC key to quit void keyboard(unsigned char key,int x,int y) { if(key==27) exit(0); } int main(int argc, char ** argv) { glutinit(&argc, argv); // Double Buffered RGB display glutinitdisplaymode( GLUT_RGB GLUT_DOUBLE); // Set window size glutinitwindowsize( 500,500 ); glutcreatewindow( Default viewport spans the whole interface window"); // Declare the display and keyboard callback functions glutdisplayfunc(draw); glutkeyboardfunc(keyboard); // Start the Main Loop glutmainloop(); return 0; } Exemplo 2: 1 visor! Um visor é EXPLICITAMENTE definido pela função glviewport(x,y, width,height)! O visor pode ou não ocupar toda a área gráfica da janela de interface.! Podem existir vários visores na janela de interface simultaneamente.! Note-se que a janela de interface e os seus visores são definidos antes da janela de domínio de cena, sendo esta última definida através de gluortho2d(left, right, bottom, top) porque esta função também define a transformação janela-visor. 8

9 Exemplo 2: 1 visor //Header files first. void draw(){ // Make background colour yellow glclearcolor( 100, 100, 0, 0 ); glclear ( GL_COLOR_BUFFER_BIT ); // Sets up viewport spanning the left-bottom // quarter of the interface window glviewport(0,0,250,250); // Sets up the PROJECTION matrix glmatrixmode(gl_projection); glloadidentity(); gluortho2d(0.0,50.0,-10.0,40.0); // also sets up world window // Draw BLUE rectangle glcolor3f( 0, 0, 1 ); glrectf(0.0,0.0,10.0,30.0); // display rectangles glutswapbuffers(); }// end of draw() Exemplo 2: 1 visor (cont.) // Keyboard method to allow ESC key to quit void keyboard(unsigned char key,int x,int y) { if(key==27) exit(0); } int main(int argc, char ** argv) { glutinit(&argc, argv); // Double Buffered RGB display glutinitdisplaymode( GLUT_RGB GLUT_DOUBLE); // Set window size glutinitwindowsize( 500,500 ); glutcreatewindow( Viewport spans the left-bottom interface window quarter"); // Declare the display and keyboard functions glutdisplayfunc(draw); glutkeyboardfunc(keyboard); // Start the Main Loop glutmainloop(); return 0; } 9

10 Exemplo 3: 2 visores // Header files first void draw(){ // Make background colour yellow glclearcolor( 100, 100, 0, 0 ); glclear ( GL_COLOR_BUFFER_BIT ); // Sets up FIRST viewport spanning the left-bottom quarter of the interface window glviewport(0,0,250,250); // Sets up the PROJECTION matrix glmatrixmode(gl_projection); glloadidentity(); gluortho2d(0.0,50.0,-10.0,40.0); // also sets up world window // Draw BLUE rectangle glcolor3f( 0, 0, 1 ); glrectf(0.0,0.0,10.0,30.0); // Sets up SECOND viewport spanning the right-top quarter of the interface window glviewport(250,250,250,250); // Sets up the PROJECTION matrix glmatrixmode(gl_projection); glloadidentity(); gluortho2d(0.0,50.0,-10.0,40.0); // also sets up world window } // Draw RED rectangle glcolor3f( 1, 0, 0 ); glrectf(0.0,0.0,10.0,30.0); // display rectangles glutswapbuffers(); Exemplo 3: 2 visores (cont.) // Keyboard method to allow ESC key to quit void keyboard(unsigned char key,int x,int y) { if(key==27) exit(0); } int main(int argc, char ** argv) { glutinit(&argc, argv); // Double Buffered RGB display glutinitdisplaymode( GLUT_RGB GLUT_DOUBLE); // Set window size glutinitwindowsize( 500,500 ); glutcreatewindow( Two viewports: left-bottom and right-top quarters"); // Declare the display and keyboard functions glutdisplayfunc(draw); glutkeyboardfunc(keyboard); // Start the Main Loop glutmainloop(); return 0; } 10

11 Transformação Janela-Visor: nota importante Quando a janela de dominío da cena aumenta de tamanho:! a imagem no visor dimimui, e! vice-versa. janela do domínio de cena HOUSE CLIP Transformação Janela-Visor: aplicações! Panning! Mover a janela no domínio de cena! Zooming! Redução/Aumento do tamanho da janela 11

12 Activação automática do visor sem distorção de imagem! Qual a maior imagem não-distorcida que ocupa o ecrã?! R = Razão de aspecto da janela do domínio de cena! Duas situações são possíveis.! 1ª - A janela é pequena em altura ajustada à largura do visor da janela de interface, mas algum espaço sobrará em cima/baixo.! Portanto, no máximo, o visor terá largura W e altura W/R. y R>W/H interface window screen world window viewport H W/R aspect ratio R x W Activação automática do visor sem distorção de imagem! Qual a maior imagem não-distorcida que ocupa o ecrã?! R = Razão de aspecto da janela do domínio de cena! Duas situações são possíveis.! 2ª - A janela é alta e estreita comparada com a janela de interface. y world window R<W/H interface window screen! O visor com a mesma razão de aspecto R ocupará toda área gráfica da janela de interface em altura, mas sobrará algum espaço à esquerda/ direita. aspect ratio R x viewport W H.R H! Portanto, no máximo, o visor terá largura H.R e altura H. 12

13 Activação automática do visor sem distorção de imagem y world window R>W/H interface window screen y world window R<W/H interface window screen aspect ratio R viewport W/R H aspect ratio R viewport H.R H x W x W glviewport(0,0,w,w/r);! glviewport(0,0,h*r,h);! Normalmente este ajuste é feito na callback reshape Exemplo 4: janela baixa! Se a janela tem razão de aspecto R=2.0 e a janela de interface tem altura H=200 e largura W=360, então W/H=1.8. y world window R>W/H interface window screen! Portanto, estamos no primeiro caso, e o visor é activado com 180 pixéis de altura e 360 pixéis de largura. aspect ratio R x viewport W/R W H glviewport(0,0,w,w/r);! glviewport(0,0,360,360/2);! 13

14 Exemplo 5: janela alta! Se a janela tem razão de aspecto R=1.6 e o ecrã da janela de interface tem H=200 e W=360, então W/H=1.8. y world window R<W/H interface window screen! Portanto, estamos no segundo caso, e o visor é activado com 200 pixéis de altura e 320 pixéis de largura. aspect ratio R x viewport W H.R H glviewport(0,0,h*r,h);! glviewport(0,0,320,200);! Manutenção das proporções na passagem da janela para o visor! Mas para manter o visor e evitar distorção, há que mudar o tamanho da janela do domínio de cena em conformidade.! Para isso, assumindo a priori que a janela da cena é um quadrado cujos lados têm comprimento L.! Uma solução possível é mudar a janela da cena sempre que o ecrã da janela de interface for alterada. Assim, a callback reshape(glsizei w, GLsizei h) tem de ser alterada por forma a incluir o código seguinte: if (w <= h)! gluortho2d(-l, L, -L * h/w, L * h/w);! else! gluortho2d(-l * w/h, L * w/h, -L, L);! 14

15 Exemplo 6: Mapeamento janela-visor sem distorção //Header files first void draw(){ // Make background colour yellow glclearcolor( 100, 100, 0, 0 ); glclear ( GL_COLOR_BUFFER_BIT ); // Draw triangle glcolor3f( 0, 0, 1 ); glrectf(0.0,0.0,30.0,30.0); glcolor3f(1,0,0); glbegin(gl_triangles); glvertex3f(0.0,30.0,1.0); glvertex3f(30.0,30.0,1.0); glvertex3f(15.0,40.0,1.0); glend(); // display glutswapbuffers(); }// end of draw() Exemplo 6: (cont.) // Keyboard method to allow ESC key to quit GLvoid reshape(glsizei w, GLsizei h) { GLfloat L = 100.0f; if (h == 0) h=1; if (w == 0) w=1; glviewport(0,0,w,h); // prevent a divide by zero // prevent a divide by zero // set viewport to window dimensions glmatrixmode(gl_projection); // reset projection matrix stack glloadidentity(); if (w <= h) gluortho2d(-l, L, -L * h/w, L * h/w); else gluortho2d(-l * w/h, L * w/h, -L, L); } glmatrixmode(gl_modelview); glloadidentity(); // reset model-view matrix stack 15

16 Exemplo 6: (cont.) // Keyboard method to allow ESC key to quit void keyboard(unsigned char key,int x,int y) { if(key==27) exit(0); } int main(int argc, char ** argv) { glutinit(&argc, argv); // Double Buffered RGB display glutinitdisplaymode( GLUT_RGB GLUT_DOUBLE); // Set window size glutinitwindowsize( 500,500 ); glutcreatewindow( Single viewport"); // Declare the display, reshape, and keyboard functions glutdisplayfunc(draw); glutreshapefunc(reshape); glutkeyboardfunc(keyboard); // Start the Main Loop glutmainloop(); return 0; } Recorte Gráfico! Algoritmo de Cohen-Sutherland! 16

17 Recorte Gráfico?! É o processo pela qual todas as primitivas gráficas geradas passam obrigatoriamente (recorte ou clipping). Recorte Gráfico (cont.)! Recorte de Linhas! Recorte de uma linha contra uma área rectangular resulta sempre num segmento de recta.! A parte que recai dentro da área de recorte é visualizada.! As restantes são ignoradas. C C 17

18 Recorte Gráfico (cont.)! Os pontos extremos podem ser facilmente testados para averiguar se estão dentro ou fora da área de recorte.! Seja a área de recorte definida por: xmin, xmax, ymin, ymax Então: O ponto extremo (x, y) está dentro da área de recorte sse xmin<= x <= xmax ymin<= y <= ymax e! Basta que uma destas 4 condições não seja satisfeita para concluirmos que o ponto (x, y) se encontra fora da região de recorte. Recorte Gráfico (cont.)! Casos simples:! Totalmente dentro da área de recorte;! Totalmente fora da área de recorte sem que exista intercepção com a área de recorte. 18

19 Recorte Gráfico (cont.)! Casos complicados:! Dois pontos fora mas intercepta a área de recorte;! Um ponto dentro e outro fora. Recorte Gráfico (cont.)! Algoritmo de Cohen-Sutherland para recorte de linhas! Codifica as 9 regiões com 4 bits:! 1º bit: fora do meio-plano da aresta de topo (y > ymax)! 2º bit: fora do meio-plano da aresta abaixo (y < ymin)! 3º bit: fora do meio-plano da aresta direita (x > xmax)! 4º bit: fora do meio-plano da aresta esquerda (x < xmin) 19

20 Algoritmo de Cohen- Sutherland (cont.)! Codifica os extremos do segmento de recta.! Analisa os resultado da codificação usando o AND lógico (i.e., &) Situação CodP1 = CodP2 = 0000 CodP1 & CodP CodP1 & CodP2 = 0000 Acção Aceitação Rejeição Subdivisão Algoritmo de Cohen- Sutherland (cont.)! Exemplo 1! CodG = 0100 e CodH = 0010 CodG & CodH = > Subdivisão! Calcula-se uma intercepção G com CodG = 0000! Calcula-se a outra intercepção H G G H H 20

21 Algoritmo de Cohen- Sutherland (cont.)! Exemplo 2! CodG = 0100 e CodH = 0010 CodG & CodH = > Subdivisão! Calcula-se uma intercepção G com CodG = 0010 H CodG & CodH 0000 Rejeição G G Visualização 2D/3D e Projecções 21

22 Pipeline de Renderização em OpenGL MODELVIEW matrix PROJECTION matrix perspective division viewport transformation vértice original (object coordinates) vértice no sistema de coordenadas do olho (eye coordinates) projecção 2D do vértice no plano de projecção (clip coordinates) coordenadas normalizadas do dispositivo de saída (normalized device coordinates) coordenadas do pixel no visor da janela de interface (window coordinates) Sistema de câmara! Para criar uma vista duma cena é necessário:! uma descrição da geometria da cena! uma câmara ou definição do ponto de vista (ou observador)! um plano de projecção! Por omissão, a câmara OpenGL está localizada na origem e direccionada no sentido do eixo z negativo. 22

23 Sistema de câmara! A definição da câmara permite a projecção da geometria da cena 3D numa superfície 2D para efeitos de saída gráfica.! Esta projecção pode ser feita de várias maneiras:! ortogonal (paralelismo das linhas é preservado)! ortogonal oblíqua! perspectiva: 1-ponto, 2-pontos ou 3- pontos de fuga Tipos de câmara! Modelo da câmara clássica (pinhole camera model) é o mais usado:! profundidade infinita do campo (infinite depth of field): tudo é focado! Modelo de câmara dos sistemas avançados de renderização! lentes duplas de Gauss são usadas por muitas câmaras profissionais! modela a profundidade de campo e óptica não-linear (incluindo lens flare)! Sistemas de renderização foto-realística empregam muitas vezes o modelo físico do olho humano para renderizar imagens! modela a resposta dos olhos face aos níveis de brilho e cor! modela a óptica interna do próprio olho (difracção pelas fibras da lente etc.) 23

24 Modelo da câmara clássica Renderização foto-realística baseada na resposta do olho 24

25 Sistemas baseados na câmara de lentes duplas Um modelo de câmara implementado na Princeton University (1995) Sistema de visualização! Nesta altura só estamos preocupados com a geometria da visualização.! A posição e a orientação da câmara definem um viewvolume ou view-frustrum.! objectos completa ou parcialmente dentro deste volume serão potencialmente visíveis no visor (viewport).! objectos completamente fora deste volume não são vistos clipped clipped view frustrum clipping planes 25

26 Modelo da câmara! Cada vértice tem de ser projectado no plano da janela 2D da câmara (plano de projecção) por forma a visualizá-lo no ecrã.! A CTM é empregue para determinar a localização de cada vértice no sistema de coordenadas da câmara:! Depois, aplicamos a matriz de projecção definida por GL_PROJECTION para mapear coordenadas da câmara para as coordenadas da janela 2D do plano de projecção.! Finalmente, estas coordenadas 2D são mapeadas para as coordenadas do dispositivo de saída através da utilização da definição dum visor (viewport) na janela de interface (dado por glviewport()). CTM= Current Transformation Matrix Modelação da câmara em OpenGL sistema de coordenadas da câmara sistema de coordenadas da janela 2D sistema de coordenadas do dispositivo/ecrã glmatrixmode(gl_modelview)... glviewport(0,0,xres,yres) glmatrixmode(gl_projection)... 26

27 Projecção 3D " 2D! Tipo de projecção depende dum conjunto de factores:! localização e orientação do plano de projecção! direcção da projecção (descrita por um vector)! tipo de projecção: Projecção Perspectiva Paralela 1-ponto Ortogonal 2-pontos Axonométrica 3-pontos Oblíqua 53 Projecções paralelas - projectantes são paralelas - observador no infinito axonométrica ortogonal oblíqua 54 27

28 Projecções paralelas ortogonais! A mais simples de todas as projecções: as projectantes são perpendiculares ao plano de projecção.! Normalmente, o plano de projecção está alinhado com os eixos (muitas das vezes em z=0) Projecções paralelas axonométricas: isométrica, dimétrica e cavaleira! Se o objecto está alinhado com os eixos, o resultado é uma projecção ortogonal;! Caso contrário, é uma projecção axonométrica.! Se o plano de projecção intersecta os eixos XYZ à mesma distância relativamente à origem, o resultado é uma projecção isométrica. 28

29 Projecções paralelas em OpenGL glortho(xmin, xmax, ymin, ymax, zmin, zmax); Projecções múltiplas! Às vezes é útil ter várias projecções disponíveis para visualização! normalmente: vista de frente, planta e alçado direito perspectiva planta vista de frente alçado direito 29

30 Projecções em perspectiva - projectantes não são paralelas - observador encontra-se a distância finita perspectiva com 3-pontos perspectiva com 1-ponto perspectiva com 2-pontos Projecções em perspectiva! Projecções em perspectiva são mais complexas e exibem concorrência das projectantes ou raios visuais (as linhas paralelas parecem convergir para um ponto localizado a uma distância finita).! Parâmetros:! centro de projecção (COP)! campo de vista (θ,φ)! direcção de projecção! direcção up do eixo da câmara ou do observador 30

31 Projecções em perspectiva Considere uma projecção em perspectiva com o ponto de vista na origem e a direcção de observação orientada ao longo eixo -z e o plano de projecção localizado em z = -d d y y -z PROJECTION matrix perspective division 61 Projecções em perspectiva: alternativa Objectos dentro do frustum são projectados no plano paralelo ao plano XY segundo as seguintes igualdades: z=-d z y x (x,y,-d) (x,y,z) 62 31

32 Projecção em perspectiva! Dependendo da aplicação, pode usar-se mecanismos diferentes para especificar uma vista em perspectiva. Exemplo: os ângulos do campo de vista podem ser inferidos se a distância ao plano de projecção é conhecida.! Exemplo: a direcção de observação pode ser obtida se, além do COP, se especificar um ponto na cena para onde o observador olha.! OpenGL suporta estes dois mecanismos de especificar uma vista em perspectiva através de:! glulookat, glfrustum e gluperspective Projecções em perspectiva glfrustum(xmin, xmax, ymin, ymax, zmin, zmax); 64 32

33 glfrustum! Note-se que todos os pontos na linha definida pelo COP e (xmin,ymin,-zmin) são mapeados para o canto inferior esquerdo da janela.! Também todos os pontos na linha definida pelo COP e (xmax,ymax,-zmin) são mapeados para o canto superior direito da janela.! A direcção de observação é sempre paralela a -z! Não é necessário ter um frustrum simétrico como: glfrustum(-1.0, 1.0, -1.0, 1.0, 5.0, 50.0);! Um frustrum não-simétrico introduz obliquidade na projecção.! zmin e zmax são especificados como distâncias positivas ao longo de -z! 65 Projecções em perspectiva gluperspective(fov, aspect, near, far); 33

34 gluperspective! Uma função para simplificar a especificação de vistas ou projecções em perspectiva.! Só permite a criação de volumes de visualização simétricos.! O ponto de vista do observador (COP) está na origem e a direcção de observação é o eixo -z.! O ângulo do campo de vista, fov, tem de pertencer ao intervalo [0,180].! aspect permite a criação dum frustrum com a mesma razão de aspecto do visor (viewport) por forma a eliminar distorção. Projecções em perspectiva 68 34

35 Posicionamento da câmara! As projecções anteriores têm limitações:! COP fixo e direcção de projecção (ou observação) fixa! Para obter uma posição e orientação arbitrárias da câmara temos de manipular a matriz MODELVIEW antes da criação dos modelos. Desta forma, posiciona-se a câmara relativamente aos objectos da cena.! Por exemplo, há duas possibilidades para posicionar a câmara em (10, 2, 10) em relação ao referencial do domínio da cena:! mudar o referencial do domínio da cena antes de criar os objectos usando translatef e rotatef: gltranslatef(-10,-2,-10);! usar glulookat para posicionar a câmara relativamente ao referencial do domínio da cena: glulookat(10,2,10, );! Estas duas possibilidades são equivalentes. Posicionamento da câmara glulookat(eyex, eyey, eyez, lookx, looky, lookz, upx, upy, upz); equivalente a: gltranslatef(-eyex, -eyey, -eyez); glrotatef(theta, 1.0, 0.0, 0.0); glrotatef(phi, 0.0, 1.0, 0.0); 35

36 Janela de projecção! A matriz de projecção define a transformação de coordenadas 3D do domínio da cena numa janela 2D que pertence ao plano de projecção.! As dimensões da janela de projecção são definidas como parâmetros da projecção: (r,t,-n)! glfrustum(l,r,b,t,n,f) (l,b,-n)! gluperspective(f,a,n,f 1 )! (w,h,-n) (-w,-h,-n) Transformação janela-visor: revisão! Como vimos já, é preciso mapear os pontos do sistema de coordenadas da janela de projecção para os pixéis do sistema de coordenadas do visor, por forma a determinar o pixel associado a cada vértice dos objectos da cena. coordenadas do dispositivo normalizado coordenadas do visor da janela da interface 36

37 Transformação janela-visor: revisão! Uma transformação afim planar é usada.! Após projecção no plano de vista, todos os pontos são transformados em coordenadas do dispositivo normalizado: [-1,+1] [-1,+1]. glviewport(int x, int y, int width, int height);! glviewport é usado para relacionar os dois sistemas de coordenadas: Transformação janela-visor: revisão! (x,y) = posição do canto inferior esquerdo do visor dentro da janela da interface! width,height = dimensões do visor em pixéis! Normalmente, recria-se a janela após o evento resize da janela da interface para assegurar o mapeamento correcto entre as dimensões do visor e da janela: static void reshape(int width, int height) { glviewport(0, 0, width, height); glmatrixmode(gl_projection); glloadidentity(); gluperspective(85.0, 1.0, 5, 50); } 37

38 Razão de aspecto: revisão! A razão de aspect (aspect ratio) define a relação entre a largura (width) e a altura (height) da imagem.! A razão de aspecto da janela de projecção é explicitamente fornecida através da função gluperspective/glfrustum.! A razão de aspecto do visor deve ser a mesma para evitar distorção de imagem: aspect ratio = 1.25 aspect ratio = 0.5 // top left: top view glviewport(0, win_height/2, win_width/2, win_height/2); glmatrixmode(gl_projection); glloadidentity(); glortho(-3.0, 3.0, -3.0, 3.0, 1.0, 50.0); glulookat(0.0, 5.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.0); glmatrixmode(gl_modelview); glloadidentity(); glcalllist(object); // top right: right view glviewport(win_width/2, win_height/2, win_width/2, win_height/2); glmatrixmode(gl_projection); glloadidentity(); glortho(-3.0, 3.0, -3.0, 3.0, 1.0, 50.0); glulookat(5.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0); glmatrixmode(gl_modelview); glloadidentity(); glcalllist(object); // bottom left: front view glviewport(0, 0, win_width/2, win_height/2); glmatrixmode(gl_projection); glloadidentity(); glortho(-3.0, 3.0, -3.0, 3.0, 1.0, 50.0); glulookat(0.0, 0.0, 5.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0); glmatrixmode(gl_modelview); glloadidentity(); glcalllist(object); // bottom right: rotating perspective view glviewport(win_width/2, 0, win_width/2, win_height/2); glmatrixmode(gl_projection); glloadidentity(); gluperspective(70.0, 1.0, 1, 50); glulookat(0.0, 0.0, 5.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0); glmatrixmode(gl_modelview); glloadidentity(); glrotatef(30.0, 1.0, 0.0, 0.0); glrotatef(angle, 0.0, 1.0, 0.0); glcalllist(object); 76 38

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

Cap. 4: Janelas, Visores & Recorte Gráfico Cap. 4: Janelas, Visores & Recorte Gráfico Sumário Definições básicas: sistema de coordenadas globais, sistema de coordenadas do ecrã; janela de domínio de cena; janela de interface e visores de saída

Leia mais

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

Computação Gráfica. 5385: Licenciatura em Engenharia Informática. Cap. 3 Janelas e Visores. Janelas e Visores Computação Gráfica 5385: Licenciatura em Engenharia Informática Cap. 3 Janelas e Visores Janelas e Visores Sumário Definições domínio de imagem (ecrã) janela de ecrã domínio da cena (IR 2 ) janela visor

Leia mais

Projeções e Visualização

Projeções e Visualização Computação Gráfica 5385: Licenciatura em Engenharia Informática Cap. 4 Projeções e Visualização Projeções e Visualização Sumário Pipeline de Visualização em OpenGL x y z w vértice original MODELVIEW matrix

Leia mais

Transformações Geométricas

Transformações Geométricas Transformações Geométricas Computação Gráfica Motivação! Transformações geométricas! Translação, Rotação, Reflexão! Variação de Tamanho (scaling), Cisalhamento (shearing)! Projecção Ortogonal, Projecção

Leia mais

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

Computação Gráfica. Engenharia de Computação. CEFET/RJ campus Petrópolis. Prof. Luis Retondaro. Aula 6. Projeções Computação Gráfica Engenharia de Computação CEFET/RJ campus Petrópolis Prof. Luis Retondaro Aula 6 Projeções 2 Projeções Geométricas Projeções permitem a visualização bidimensional de objetos tridimensionais.

Leia mais

Visualização. - Aula 4 -

Visualização. - Aula 4 - Visualização - Aula 4 - Pipeline de visualização 2D window recorte mapeamento viewport descrição geométrica rasterização Visualização de objetos 2D y viewport 1 região (window) 1 região (window) 2 viewport

Leia mais

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

3D no OpenGL. Visualização e Transformações Perspectiva. Transformações do Modelview. Processo Visualização e Transformações Perspectiva 3D no OpenGL Para gerar imagens de um objeto 3D, é necessário compreender transformações perspectiva Foley & van Dam - Cap. 6 Notas de aula do Prof. Mount: aulas

Leia mais

Computação Gráfica - OpenGl 02

Computação Gráfica - OpenGl 02 Universidade Federal do Vale do São Francisco Curso de Engenharia da Computação Computação Gráfica - OpenGl 02 Prof. Jorge Cavalcanti [email protected] www.univasf.edu.br/~jorge.cavalcanti

Leia mais

CG 2013/2014 Primeiro Teste LEIC Alameda/Taguspark

CG 2013/2014 Primeiro Teste LEIC Alameda/Taguspark Computação Gráfica Licenciatura em Engenharia Informática e de Computadores Alameda / Taguspark Primeiro Teste 6 de Outubro de 013 O teste tem a duração de 1h00, tolerância incluída. Responda às questões

Leia mais

Transformações geométricas

Transformações geométricas Módulo 7 Sistemas Gráficos e Interação Instituto Superior de Engenharia do Porto Filipe Pacheco [email protected] Transformações geométricas SGRAI 2017/18 DEI-ISEP 97 Conteúdo Tipos de transformações Model/View

Leia mais

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

OpenGL, GLU e GLUT. GLUT (OpenGL Utility Toolkit) OpenGL. Linguagem. OpenGL. Esqueleto de um programa em PyOpenGL OpenGL, GLU e GLUT http://www.opengl.org/resources http://pyopengl.sourceforge.net GLUT (OpenGL Utility Toolkit) O GLUT é uma biblioteca de rotinas independentes do SO, que fornecem as ferramentas necessárias

Leia mais

Sist. Coordenadas Câmera (SCC)

Sist. Coordenadas Câmera (SCC) Transformações Modelagem Iluminação (Shading) Transformação Câmera* Recorte Projeção* Mapeamento de coordenadas de Universo para câmera Escolha da projeção: perspectiva ou ortográfica Resumo Rasterização

Leia mais

LAB. 1. Introdução à OpenGL

LAB. 1. Introdução à OpenGL LAB. 1 Introdução à OpenGL OpenGL O que é? É uma biblioteca de funções gráficas. É uma API (Application Programming Interface) gráfica 2D e 3D Primitivas vectoriais e rasterizadas (imagens) Capaz de gerar

Leia mais

Programação Gráfica Cap 2

Programação Gráfica Cap 2 Programação Gráfica (2.2 a 2.7) Instituto Superior Técnico, 2006/2007 Índice Programação 2D Sistemas de Coordenadas API do OpenGL Primitivas e Atributos Introdução à Cor Projecções Interacção com o Sistema

Leia mais

Computação Gráfica OpenGL 05 3D

Computação Gráfica OpenGL 05 3D Universidade Federal do Vale do São Francisco Curso de Engenharia da Computação Computação Gráfica OpenGL 05 3D Prof. Jorge Cavalcanti [email protected] www.univasf.edu.br/~jorge.cavalcanti

Leia mais

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

Desenho de uma matriz de retângulos Serve de base para o exercício das cores Desenho de uma matriz de retângulos Serve de base para o exercício das cores Leandro Tonietto Processamento Gráfico - Unisinos [email protected] http://professor.unisinos.br/ltonietto 19-Mar-2014 Leandro

Leia mais

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

Computação Gráfica. Licenciatura em Engenharia Informática e de Computadores Alameda/Taguspark. 1º Exame 29 Junho de 2010 Computação Gráfica Licenciatura em Engenharia Informática e de Computadores Alameda/Taguspark º Exame 29 Junho de 2 O exame tem a duração de 2h3, tolerância incluída. Responda às questões unicamente nestas

Leia mais

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

Computação Gráfica. Licenciatura em Engenharia Informática e de Computadores Alameda / Taguspark. Terceiro Teste 19 de Maio de 2012 CG / Terceiro Teste LEIC Alameda/Taguspark Computação Gráfica Licenciatura em Engenharia Informática e de Computadores Alameda / Taguspark Terceiro Teste 9 de Maio de O teste tem a duração de h, tolerância

Leia mais

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

Computação Gráfica. Licenciatura em Engenharia Informática e de Computadores Taguspark / Alameda. Primeiro Teste 17 de Março de 2012 Computação Gráfica Licenciatura em Engenharia Informática e de Computadores Taguspark / Alameda Primeiro Teste 7 de Março de O teste tem a duração de h, tolerância incluída. Responda às questões unicamente

Leia mais

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

7. Projeções Geométricas e Visualização 3D 7. Projeções Geométricas e Visualização 3D Aprendemos a criar e transformar geometricamente objetos 3D, no entanto, nossa janela de visualização é apenas bi-dimensional. Assim, necessitamos desenvolver

Leia mais

Pipeline de Visualização Câmara Virtual

Pipeline de Visualização Câmara Virtual Licenciatura em Engenharia Informática e de Computadores Computação Gráfica Pipeline de Visualização Câmara Virtual 215 Corpo docente de Computação Gráfica / CG&M / DEI / IST / UTL Edward Angel, Cap. 5

Leia mais

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

Introdução a OpenGL. Renato Rodrigues Oliveira da Silva Danilo Medeiros Eler Introdução a OpenGL Renato Rodrigues Oliveira da Silva Danilo Medeiros Eler Adaptado do material de Marcela X. Ribeiro Maria Cristina F. de Oliveira Rosane Minghim Sumário Introdução Núcleo OpenGL, GLU,

Leia mais

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

Projeções e Transformações em 3D Projeções e Transformações em 3D Computação Gráfica DCC065 Prof. Rodrigo Luis de Souza da Silva, D.Sc. Sumário O que são projeções Conversão 3D-2D Tipos de Projeção Projeções Paralelas Projeções Isométricas

Leia mais

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

Transformações (Cap 4.3, 4.4 e 4.6 a 4.10) 4.6 a 4.) Transformações (Cap 4.3, 4.4 e 4.6 a 4.) Instituto Superior Técnico, 26/27 Sumário Revisões Transformações Elementares Coordenadas Homogéneas Composição de Transformações Transformações em OpenGL

Leia mais

Visualização e Projeções

Visualização e Projeções Visualização e Projeções 35M34 Sala 3E1 Bruno Motta de Carvalho DIMAp Sala 15 Ramal 227 1 Introdução Arestas de mesmo tamanho tem tamanhos aparentes diferentes Linhas paralelas convergindo História Vasos

Leia mais

2º Exame. Computação Gráfica

2º Exame. Computação Gráfica 2º Exame Computação Gráfica LEIC-A/T Prof. Mário Rui Gomes Prof. João Pereira Prof. Daniel Gonçalves 19 de Julho 2008 Nº Nome: A O exame tem a duração de 2 horas, tolerância incluída. Responda às questões

Leia mais

FCG2006 Prova sobre OpenGL e Rastreamento de Raios

FCG2006 Prova sobre OpenGL e Rastreamento de Raios 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

Leia mais

1º Exame. Computação Gráfica

1º Exame. Computação Gráfica 1º Exame Computação Gráfica LEIC-A/T Prof. Mário Rui Gomes Prof. João Pereira Prof. Daniel Gonçalves 5 de Julho 28 Nº Nome: A O exame tem a duração de 2 horas, tolerância incluída. Responda às questões

Leia mais

1º Exame. Computação Gráfica

1º Exame. Computação Gráfica 1º Exame Computação Gráfica LEIC-A/T Prof. Mário Rui Gomes Prof. João Pereira Prof. Daniel Gonçalves 5 de Julho 28 Nº Nome: B O exame tem a duração de 2 horas, tolerância incluída. Responda às questões

Leia mais

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

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 Repescagem 12 de Janeiro de 2016 A repescagem de um dos testes tem a duração de 1h00. Na repescagem de ambos

Leia mais

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

Introdução a OpenGL. Profª. Alessandra Martins Coelho Introdução a OpenGL Profª. Alessandra Martins Coelho março/ 2013 OpenGL OpenGL é uma API gráfica que permite a criação de imagens gráficas 2D e 3D, através da definição de objetos (2D/3D) por um conjunto

Leia mais

- INF Remoção de faces ocultas Aula 21

- INF Remoção de faces ocultas Aula 21 Geração da imagem - INF007- Remoção de faces ocultas Aula Dada a representação vetorial de um objeto, como apresentá-lo na tela por pontos? Imagem aramada Exibição de faces Dada a representação vetorial

Leia mais

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?

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? Programação Gráfica Computação Gráfica OpenGL Renato Ferreira À primeira vista: basta desenhar Uma subrotina para desenhar cada tipo de objeto Mas... Como fazer interação? Como estruturar a cena? Como

Leia mais

Pipeline de Visualização 3D

Pipeline de Visualização 3D Pipeline de Visualização 3D André Tavares da Silva [email protected] Capítulo 5 de Foley Capítulo 2 de Azevedo e Conci Processo de Visualização https://www.youtube.com/watch?v=ogqam2mykng Processo de

Leia mais

Transformações de Visualização 2D: Clipping. Antonio L. Bajuelos Departamento de Matemática Universidade de Aveiro

Transformações de Visualização 2D: Clipping. Antonio L. Bajuelos Departamento de Matemática Universidade de Aveiro Transformações de Visualização 2D: Clipping Antonio L. Bajuelos Departamento de Matemática Universidade de Aveiro 1 Clipping (recorte) Qualquer procedimento que identifica porções de uma figura que estão

Leia mais

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

Computação Gráfica. Engenharia de Computação. CEFET/RJ campus Petrópolis. Prof. Luis Retondaro. Aula 2. Introdução a OpenGL Computação Gráfica Engenharia de Computação CEFET/RJ campus Petrópolis Prof. Luis Retondaro Aula 2 Introdução a OpenGL OpenGL básico OpenGL (Open Graphical Library) Uma API para geração de gráficos 3D

Leia mais

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

OpenGL. Conceitos Básicos. Waldemar Celes. Tecgraf/PUC-Rio OpenGL Conceitos Básicos Waldemar Celes Tecgraf/PUC-Rio 1 API OpenGL: o que é? Interface para programador de aplicação Aplicação Aplicação API abstrata OpenGL API Software & Hardware Dispositivo de saída

Leia mais

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

1º Teste de Computação Gráfica 3º Ano 1º Teste de omputação Gráfica 3º no Licenciatura em Eng. Informática e de omputadores Prof. responsável risson Lopes 5 de Maio de 2000 Nº «Número» Nome: «Nome» Sala: «Sala» Responda às questões seguintes

Leia mais

Computação Gráfica OpenGL 05 3D

Computação Gráfica OpenGL 05 3D Universidade Federal do Vale do São Francisco Curso de Engenharia da Computação Computação Gráfica OpenGL 05 3D Prof. Jorge Cavalcanti [email protected] www.univasf.edu.br/~jorge.cavalcanti

Leia mais

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

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

Leia mais

Algoritmos de Recorte em 2D

Algoritmos de Recorte em 2D Algoritmos de Recorte em 2D Computação Gráfica DCC065 Prof. Rodrigo Luis de Souza da Silva, D.Sc. Sumário Conceito de Recorte (Clipping) Introdução Algoritmo simples (Força Bruta) Algoritmo de Cohen-Sutherland

Leia mais

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

Visibilidade. Licenciatura em Engenharia Informática e de Computadores Computação Gráfica. Edward Angel, Cap. 7 Apontamentos CG Licenciatura em Engenharia Informática e de Computadores Computação Gráfica Visibilidade Edward Angel, Cap. 7 Apontamentos CG Pipeline de Visualização 3D Pipeline de Visualização 3D LEIC CG Sombreamento

Leia mais

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

Exame de Época Especial Computação Gráfica Exame de Época Especial Computação Gráfica LEIC/MEIC Ano Lectivo de 2008/2009 Prof. João Brisson Lopes 9 de Setembro 2009 Nº Nome: Responda o mais completamente às seguintes questões justificando adequadamente

Leia mais

Visualização 2D: - Transformação window to viewport - Clipping

Visualização 2D: - Transformação window to viewport - Clipping Visualização 2D: - Transformação window to viewport - Clipping Sistemas Gráficos/ Computação Gráfica e Interfaces 1 Transformação de Visualização (window to viewport) Objectivo: obter uma matriz de transformação

Leia mais

Visualização em 3-D - Projeções Planares

Visualização em 3-D - Projeções Planares Visualização em 3-D - Projeções Planares Projetores PRP - Centro de Projeção A n (u,v,n) - sistema de coordenadas do plano de projeção (x,y,z) - sistema de coordenadas do objeto (regra da mão direita -

Leia mais

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

OpenGL. Computação Gráfica ISEL/DEETC/SP Computação Gráfica OpenGL Computação Gráfica CG @ 2007 ISEL/DEETC/SP Computação Gráfica 1 Jellys Tetris Gorillas PacMan Sokoban 3 Sumário Introdução ao OpenGL (capítulos 1 e 2 do red book) O que é? Sintaxe Máquina de estados

Leia mais

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

CG 2015/2016 Segundo Teste LEIC Alameda/Taguspark. Segundo Teste. 18 de Novembro de 2015 CG 015/016 Segundo Teste LEIC Alameda/Taguspark Computação Gráfica Licenciatura em Engenharia Informática e de Computadores Alameda / Taguspark Segundo Teste 18 de Novembro de 015 O teste tem a duração

Leia mais

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

Computação Gráfica. Licenciatura em Engenharia Informática e de Computadores Alameda / Taguspark. Exame de Recurso 29 de Junho de 2011 Computação Gráfica Licenciatura em Engenharia Informática e de Computadores Alameda / Taguspark Exame de Recurso 29 de Junho de 211 O exame tem a duração de 2h3, tolerância incluída. Responda às questões

Leia mais

1º Teste de Computação Gráfica

1º Teste de Computação Gráfica 1º Teste de Computação Gráfica LEIC/LESIM/LCI Prof. João Brisson Lopes Prof. Mário Rui Gomes 15 de Abril de 23 Nº Nome: Responda às questões seguintes justificando adequadamente todas as respostas. O teste

Leia mais

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

Exame de 1ª Época Computação Gráfica Exame de 1ª Época Computação Gráfica LEIC/MEIC Ano Lectivo de 2008/2009 Prof. João Brisson Lopes Prof. Mário Rui Gomes 2 de Julho 2009 Nº Nome: Responda o mais completamente às seguintes questões justificando

Leia mais

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

Revisões. Módulos Sistemas Gráficos e Interação. Filipe Pacheco SGRAI 2017/18 DEI-ISEP 228. Instituto Superior de Engenharia do Porto Módulos 1-10 Sistemas Gráficos e Interação Instituto Superior de Engenharia do Porto Filipe Pacheco [email protected] Revisões SGRAI 2017/18 DEI-ISEP 228 Desenho de objectos simples glbegin(mode) / glend()

Leia mais

Computação Gráfica OpenGl 01

Computação Gráfica OpenGl 01 Universidade Federal do Vale do São Francisco Curso de Engenharia da Computação Computação Gráfica OpenGl 01 Prof. Jorge Cavalcanti [email protected] www.univasf.edu.br/~jorge.cavalcanti

Leia mais

Objetos definidos no seu próprio sistema de coordenadas

Objetos definidos no seu próprio sistema de coordenadas Transformações Modelagem Iluminação (Shading) Transformação Câmera A história até aqui Recorte Projeção Rasterização Visibilidade Transformações Modelagem Iluminação (Shading) Transformação Câmera Recorte

Leia mais

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

OpenGL. Parte I: Geometria. Waldemar Celes Departamento de Informática Tecgraf/PUC-Rio OpenGL Parte I: Geometria Waldemar Celes Departamento de Informática Tecgraf/PUC-Rio API OpenGL: : o que é? Interface para programador de aplicação Aplicação API Hardware & Software API abstrata Dispositivo

Leia mais

FUNDAMENTOS E APLICAÇÕES. Luis Valente

FUNDAMENTOS E APLICAÇÕES. Luis Valente FUNDAMENTOS E APLICAÇÕES Luis Valente 1 DIÁRIO DE BORDO OpenGL Aplicações Usando OpenGL Sistema de Janelas Primitivas Cores e Sombreamento Transformações e Projeções Composição de Objetos Mapeamento de

Leia mais

Computação Gráfica - 13

Computação Gráfica - 13 Universidade Federal do Vale do São Francisco Curso de Engenharia da Computação Computação Gráfica - 13 Prof. Jorge Cavalcanti [email protected] www.univasf.edu.br/~jorge.cavalcanti www.twitter.com/jorgecav

Leia mais