AD1_2014_1 Computação Gráfica

12
 Fundação CECIERJ - Vice Presidência de Educação Superior a Distância Curso de Tecnologia em Sistemas de Computação Disciplina: Computação Gráfica AD1 - 1° semestre de 2014. 1) Abra o software Blender (http://www.blender.org/). Construa algum objeto gráfico de seu interesse e classifique-o (1.0 ponto). O objeto abaixo foi c onstruído no Blender seguindo os seguintes passos: a) Criação de um cubo

Transcript of AD1_2014_1 Computação Gráfica

Page 1: AD1_2014_1 Computação Gráfica

7/24/2019 AD1_2014_1 Computação Gráfica

http://slidepdf.com/reader/full/ad120141-computacao-grafica 1/12

 

Fundação CECIERJ - Vice Presidência de Educação Superior a DistânciaCurso de Tecnologia em Sistemas de Computação

Disciplina: Computação Gráfica

AD1 - 1° semestre de 2014.

1)  Abra o software Blender (http://www.blender.org/). Construa algum objeto gráfico de seu

interesse e classifique-o (1.0 ponto).

O objeto abaixo foi construído no Blender seguindo os seguintes passos:

a) Criação de um cubo

Page 2: AD1_2014_1 Computação Gráfica

7/24/2019 AD1_2014_1 Computação Gráfica

http://slidepdf.com/reader/full/ad120141-computacao-grafica 2/12

 

 b) Seleção da face superior do cubo

c) Extrusão da face superior. A extrusão é uma operação de modelagem de sólidos naqual um sólido é construído pela varredura translacional de uma curva ao longo de um

uma direção por uma dada distância (ver http://www2.ic.uff.br/~aconci/sweeping.html).

Page 3: AD1_2014_1 Computação Gráfica

7/24/2019 AD1_2014_1 Computação Gráfica

http://slidepdf.com/reader/full/ad120141-computacao-grafica 3/12

 

d) Colapso dos quatro vértices da face superior em um único vértice.

Observe que o objeto gerado é um sólido, já que é determinado por uma superfície

fechada (contém todos os seus pontos interiores), limitada (é possível definir uma esfera

aberta que contém toda a superfície) e sem bordo (todos os pontos da superfícielocalmente possuem a topologia de um disco aberto e não um semidisco aberto).

2)  Explique alguma técnica de animação usada em Computação Gráfica (1.0 ponto).

Uma das técnicas mais básicas de animação em Computação Gráfica é a técnicade Key-framing . Na técnica de  Key-framing , de modo análogo a animação de cartoons,

o artista de modelagem cria o personagem 2D ou 3D em diferentes poses apenas para os

quadros chave da animação (key), ao invés de modelar o personagem em todas as possíveis configurações alcançáveis na animação. A partir dos quadros chave, o

 programa de animação gera os quadros intermediários denominados in-between frames.

Page 4: AD1_2014_1 Computação Gráfica

7/24/2019 AD1_2014_1 Computação Gráfica

http://slidepdf.com/reader/full/ad120141-computacao-grafica 4/12

 

O programa gera os quadros intermediários através de um esquema de

interpolação. Dados dois quadros chave A e B, correspondentes aos instantes de tempo t  A e t  B, para cada vértice vi  do modelo do personagem, é gerada uma nova posição

 posição(v,t ) no quadro correspondente ao instante de tempo t  A  t   t  B  através da

expressão:

 posição(vi,t ) = (1-t ) posição(vi, t  A)+t × posição(vi, t  B)

Quanto t t  B, o quadro B se torna o quadro A e o próximo quadro na sequência dekey-frames  se torna o quadro  B. Observe que outras formas de interpolação, não

necessariamente lineares podem ser utilizadas para produzir outros efeitos de animação.

Referência: The Cg tutorial. Radima Fernando and Mark J. Kilgard. Addison Wesley.

https://developer.nvidia.com/content/cg-tutorial-chapter-6-animation. As figuras acima foram obtidas do siteanterior.

Page 5: AD1_2014_1 Computação Gráfica

7/24/2019 AD1_2014_1 Computação Gráfica

http://slidepdf.com/reader/full/ad120141-computacao-grafica 5/12

3)  Explique algebricamente porque, no método de Coons, é necessário subtrair a

interpolação bilinear dos quatro vértices, que são os extremos das curvas que definem um

retalho (1.0 ponto).

O método de parametrização de Coons consiste em combinar diversas interpolações

lineares das curvas de bordo segundo o seguinte esquema:

   Lofting vertical –  interpolamos linearmente as curvas pu0 e pu1.

(1-v) pu0(u)+vpu1(u) 

   Lofting horizontal –  interpolamos linearmente as curvas p0v e p1v.

(1-u) p0v(v)+up1v(v) 

  Soma dos dois loftings –  somamos as operações de lofting horizontal e

vertical obtendo a parametrizaçãoC’(u,v)=(1-v)pu0(u)+vpu1(u)+(1-u)p0v(v)+up1v(v)

Como resultado, temos que os bordos do retalho são dados pela soma de cada

uma das curvas originais com a interpolação linear dos respectivos vértices.

I sto pode ser mostrado observando o que ocorre com a função C’(u,v)

quando consideramos a restr ição v=0. Nesse caso temos que C’(u,0)=(1-0)p u0 (u)+0p u1 (u)+ (1-u)p 0v (0)+up 1v (0). Observe que a superfície desejada, quandorestr ingimos o parâmetro v a zero, deveria representar a curva p u0 . En tretanto, é possível verificar que C’(u,0) descreve pu0  somada a interpolação l inear dos

vértices p 0v (0) e p 1v (0). O mesmo efeito ocorre para as demais curvas que definem obordo do retalho a ser reconstruído.

 Para resolver tal problema, preservando as curvas originais, subtraímos o

retalho obtido C’ (u,v) da interpolação bilinear dos 4 vértices que são os pontosextremos das curvas de definição: C (u,v) = C’ (u,v)- B(u,v). 

Page 6: AD1_2014_1 Computação Gráfica

7/24/2019 AD1_2014_1 Computação Gráfica

http://slidepdf.com/reader/full/ad120141-computacao-grafica 6/12

 

4)  Considere uma imagem digital expressa na forma de um matriz de n×m elementos, onde

cada elemento armazena um valor em [0,255]. Sabemos que a imagem é uma

representação discreta onde os valores são conhecidos em pares de coordenadas inteiras(i,j), onde 0<i<n-1 e 0<j<m-1. Mostre uma forma de calcular o valor da imagem em uma

coordenada real (x,y), onde 0<x<n-1 e 0<y<m-1, por exemplo, o valor em (0.45,7.63)

(1.0 ponto).

Para calcular o valor em um ponto com coordenadas reais pode-se utilizar

eficazmente o processo de interpolação bilinear. Primeiramente, dado um ponto ( x, y) em

coordenadas reais, identificamos as coordenadas inteiras dos 4 pixels vizinhos. Considere

as coordenadas inteiras i = x e j = y, onde x é o maior inteiro menor ou igual a x.Logo, os 4 pixels na vizinhança do ponto (x,y) possuem coordenadas inteiras (i,j), (i+1,j),

(i+1,j+1) e (i,j+1).

Usando então interpolação bilinear temos:

)]1,1(),1()1[()]1,(),()1)[(1(),(     ji yI   ji I  y x  ji yI   ji I  y x y x I   

I(i,j) I(i+1,j)

I(i+1,j+1)I(i,j+1)

I(x,y)

Page 7: AD1_2014_1 Computação Gráfica

7/24/2019 AD1_2014_1 Computação Gráfica

http://slidepdf.com/reader/full/ad120141-computacao-grafica 7/12

5)  Apresente a equação paramétrica de um toro. Mostre com gerar uma malha para este

objeto gráfico (1.0 ponto).

http://en.wikipedia.org/wiki/File:Torus_cycles.png (Wikipedia Commons)

A equação paramétrica do toro descreve suas coordenadas x,y,z em função dos

 parâmetros   e , ambos variando entre [0,2] e das constantes R e r que definem,

respectivamente, o raio do tubo e o raio do centro do toro ao centro do tubo. Tal

descrição é dada por:

   

    

    

sin),(

sin)cos(),(

cos)cos(),(

r  z 

r  R y

r  R x

 

A topologia do toro é dada pelo produto tensorial de dois círculos. Para gerarmos

uma malha tomamos o domínio da função no espaço de parâmetros e definimos um

reticulado de resolução desejada. Sobre o pontos do reticulado definimos uma

triangulação que determina a conectividade da malha. Observe que para termos atopologia do toro, é necessário identificar os vértices inferiores aos superiores da malha e

os vértices no lado direito aos vértices do lado esquerdo.

 

 

 

 

Page 8: AD1_2014_1 Computação Gráfica

7/24/2019 AD1_2014_1 Computação Gráfica

http://slidepdf.com/reader/full/ad120141-computacao-grafica 8/12

 

6)  Explique como o grafo dual é codificado na estrutura Winged-edge (1.0 ponto).

 Na estrutura de dados Winged-edge  o grafo dual é codificado nos campos que

guardam, para cada aresta, as referencias para as faces à esquerda e à direita conforme atabela abaixo.

 A  

b  d 

c  e 

Page 9: AD1_2014_1 Computação Gráfica

7/24/2019 AD1_2014_1 Computação Gráfica

http://slidepdf.com/reader/full/ad120141-computacao-grafica 9/12

 

7)  Descreva a representação de um tetraedro através de uma lista de faces, vértices e arestas

(1.0 ponto). Considere as coordenadas dadas pela figura abaixo.

Obs.: atentar para a ordenação das arestas nas faces no sentido contrário aos ponteiros do relógio.

Lista de vértices

Vértices Coord.

v0 (0,0,0)

v1 (0,0,1)

v2 (1,0,0)

v3 (0,1,0)

Lista de arestas

Vértices Coord.

e0 (v0,v1)

e1 (v0,v2)

e2 (v0,v3)

e3 (v3,v1)

e4 (v1,v2)

e5 (v2,v3)

Lista de faces

Vértices Coord.

f0 (e3,e4,e5)

f1 (e0,e3,e2)

f2 (e1,e2,e5)

f3 (e0,e1,e4)

Page 10: AD1_2014_1 Computação Gráfica

7/24/2019 AD1_2014_1 Computação Gráfica

http://slidepdf.com/reader/full/ad120141-computacao-grafica 10/12

8)  Considere o problema de se determinar a forma de uma pista bidimensional usando uma

curva paramétrica, por exemplo, uma B-Spline. Como você construiria os lados

delimitadores da pista, considerando a curva como seu eixo central (eixo medial)? Nafigura abaixo, a curva que indica o trajeto da pista é a curva vermelha tracejada. Observe

que como o desenho foi feito a mão, as bordas não estão perfeitas e esse é o problema

que se deseja resolver (1.0 ponto).

Um forma de resolver o problema consiste em dado um ponto da curva com coordenadas

( x(u), y(u)), determinar o vetor normal a partir do vetor tangente. O vetor tangente a um ponto

C (u) de uma curva B-Spline de grau  p,  com n  pontos de controle, é dada pela expressão

abaixo, onde  B’ i,p é a primeira derivada da base de B-Spline Bi,p  , que por sua vez é dada pela fórmula de Cox-de-Boor.

)()()(

.,0

,1)(

),()()(

},,,,,,,,,,{

,,)()(

1,1

11

1

1,,

1

0,

1,1

11

1,,

11

0

,

u Buu

uuu B

uu

uuu B

cc

uuuu B

u Buu

 pu B

uu

 pu B

bbbuuaaaU 

bua P u BuC 

 pi

i pi

 pi

 pi

i pi

i pi

ii

i

 pi

i pi

 pi

i pi

 pi

 pm p

n

i

i pi

 

 

 

Page 11: AD1_2014_1 Computação Gráfica

7/24/2019 AD1_2014_1 Computação Gráfica

http://slidepdf.com/reader/full/ad120141-computacao-grafica 11/12

 

O vetor normal n  pode ser obtido através da rotação do vetor tangente t   de 90 graus no

sentido anti-horário.

De posse do vetor normal n  construímos um ponto com coordenadas r n  e – 

r n, onde r  éuma constante igual a metade da largura desejada para a pista. Fazemos este processo parauma sequencia de pontos ui e os conectamos formando duas curvas poligonais, uma interna e

outra externa a curva original.

9)  Faça uma pesquisa sobre a curva Catmull-Rom (1.0 ponto).

As curvas Catmull-Rom formam um família de curvas  spline do tipo interpolante. Uma

das características das curvas Catmull-Rom é a de que o vetor tangente a curva em um ponto

de controle pi é definido por a( p

i+1- p

i-1), onde a é uma constante e  p

i-1 e  p

i+1 são adjacentes a

 pi. O vetor tangente nos pontos extremos da curva  p0  e  pn normalmente não são definidos,sendo considerados na maioria dos casos dados por a( p1- p0) e a( pn- pn-1).

r n  

-r n  

t =C’ (u) 

 pi 

 pi-1   pi+1 

Page 12: AD1_2014_1 Computação Gráfica

7/24/2019 AD1_2014_1 Computação Gráfica

http://slidepdf.com/reader/full/ad120141-computacao-grafica 12/12

 

10) Explique como construir a superfície de um terreno usando um mapa de alturas, isto é,uma imagem digital expressa na forma de um matriz de n ×m elementos, onde cada

elemento armazena um valor em [0,255], codificando de forma discreta um intervalo de

alturas [hmin, hmax](1.0 ponto).

Para construir um terreno a partir de uma imagem digital basta associar a cada pixel da

imagem a um vértice da malha que corresponde ao terreno. A estrutura

combinatória(conectividade) da malha é obtida triangulando-se os vértices do reticulado (ver

questão 5). A realização geométrica da malha dá-se através da associação de coordenadas acada um dos vértices do reticulado. As coordenadas  x  e  y  podem ser obtidas através do

mapeamento linear do intervalo dado por [0,n] no intervalo [xmin, xmax] sendo a

coordenada y obtida de modo análogo (xmin, xmax, ymin e ymax definem a área do terreno).

A coordenada z de cada vértice pode ser determinada mapeando-se linearmente o intervalo[0,255] no intervalo [hmin,hmax].

Para lidar eficientemente com a malha triangulada no OpenGL pode-se utilizar triangle strips, uma para cada coluna (ou linha) de triângulos na malha. Uma alternativa é costurar as

triangle strips através de triângulos falsos que não aparecem na visualização final.