1
1
O Pipeline deRenderização
Processamento GráficoMarcelo Walter - UFPE
2
The Graphics Pipeline
• Processo de sintetizar imagensbidimensionais a partir de câmeras eobjetos virtuais
• Visão em alto nível inicial paraaprofundarmos nas próximas aulas
• Quais as etapas que constituem esteprocesso??
2
3
The Graphics Pipeline
• Três estágiosconceituais
• O desempenho édeterminado peloestágio mais lento
• Sistemas gráficosmodernos:
software:
hardware:
Application
Geometry
Rasterizer
Image
4
The Graphics Pipeline
3
1 - InstanciamentoTranslação, Rotação, Escala
Coordenadas de OBJETO(3D float)
coordenadas CÂMERA(3D)Após projeção:2D normalizadas
coordenadasTELA (2D integer)
Coordenadas UNIVERSO(3D float)
2 - Recorte
4 - Mapeamento Window/Viewport
3 - Projeção
ResumoTransformações
Modelagem
Iluminação(Shading)
TransformaçãoCâmera
Recorte
Projeção
Rasterização
Visibilidade
Adaptação e melhoramentos de uma aula sobre o mesmoassunto (MIT - EECS 6.837 Durand and Cutler)
4
TransformaçõesModelagem
Iluminação(Shading)
TransformaçãoCâmera
Recorte
Projeção
Rasterização
Visibilidade
Objetos definidos no seupróprio sistema decoordenadas
Transformações demodelagem orientam osmodelos geométricos numsistema comum decoordenadas (UNIVERSO)
Coordenadas UniversoCoordenadas Objeto
Resumo
ResumoTransformações
Modelagem
Iluminação(Shading)
TransformaçãoCâmera
Recorte
Projeção
Rasterização
Visibilidade
Vértices iluminados deacordo com as propriedadesgeométricas e de material
Modelo de Iluminação Local(Flat, Gouraud)
5
ResumoTransformações
Modelagem
Iluminação(Shading)
TransformaçãoCâmera
Recorte
Projeção
Rasterização
Visibilidade
Mapeamentodecoordenadasde Universopara câmera
Escolha daprojeção:perspectiva ouortográfica
ResumoTransformações
Modelagem
Iluminação(Shading)
TransformaçãoCâmera
Recorte
Projeção
Rasterização
Visibilidade
TransformaçãoparaCoordenadasNormalizadas
Eliminação deobjetos inteiros epartes de objetoque estão fora doFrustum
câmera NormalizedDeviceCoordinates
6
ResumoTransformações
Modelagem
Iluminação(Shading)
TransformaçãoCâmera
Recorte
Projeção
Rasterização
Visibilidade
NDC Coordenadasde Tela
Os vértices são projetados paracoordenadas de tela
ResumoTransformações
Modelagem
Iluminação(Shading)
TransformaçãoCâmera
Recorte
Projeção
Rasterização
Visibilidade
Rasterização das linhas em pixels epossível preenchimento
Interpolação dos valores(profundidade, normal, cor) dos vérticesconforme necessidade
7
ResumoTransformações
Modelagem
Iluminação(Shading)
TransformaçãoCâmera
Recorte
Projeção
Rasterização
Visibilidade
Z-buffer: cadapixel armazena acoordenada zmais próxima
Espaço de ObjetoTransformações
Modelagem
Iluminação(Shading)
TransformaçãoCâmera
Recorte
Projeção
Rasterização
Visibilidade
Espaço da câmera
Espaço de Universo
Espaço de recorte
Espaço de tela
8
15
Sistemas de Coordenadas
• Objeto Local a cada objeto
• Universo Comum a todos os objetos
• Câmera Derivado a partir da especificação do Frustum de
visibilidade• Clip space/NDC
[-1,-1,-1] [1,1,1]• Tela
(0,0) [largura, altura]
16
O que são Transformações?
• Mapeiam pontos (x,y,z) em um sistema decoordenadas para pontos (x’,y’,z’) em outrosistema de coordenadas
• São utilizadas em CG para: Posicionar objetos na cena Mudar forma dos objetos Criar múltiplas cópias dos objetos Animações Projeção para câmera virtual
9
17
Classes de Transformações
• Corpos rígidos Preservam distância e ângulos
Translação Rotação
Corpos Rígidos
18
Classes de Transformações
• Similares Preservam ângulos
Translação RotaçãoEscala uniforme
Corpos Rígidos
Similares
10
19
Transformações Lineares
Translação RotaçãoEscala uniforme
Escala
Reflexão
Deslizamento
Corpos Rígidos
Similares Lineares
Escala ReflexãoDeslizamento(shear)
L(p+q) = L(p) + L(q)L(ap) = aL(p)
20
Transformações Afim
Translação RotaçãoEscala uniforme
Escala
Reflexão
Deslizamento
Corpos Rígidos
Similares Lineares
Afim
Preservam linhas paralelas
11
21
Representando Transformações
• Genericamente em 2D
22
Transformações 2D - Translação
!
x'= x + tx
y'= y + ty
!
x '
y '
"
# $ %
& ' =
1 0
0 1
"
# $
%
& ' x
y
"
# $ %
& ' +
tx
ty
"
# $ %
& '
12
23
Transformações 2D - Escala
• Coordenadas são multiplicadospelos fatores de escala
• Tipos de Escala Uniforme:
sx = sy Não-Uniforme
sx <> sy
!
x'= x " sx
y'= y " sy
!
x '
y '
"
# $ %
& ' =
sx 0
0 sy
"
# $
%
& ' x
y
"
# $ %
& ' +
0
0
"
# $ %
& '
24
Transformações 2D - Rotação
• Como chegar à matriz de rotação?
!!
!!
!"!"
!"!"
!"!"
""
cos.sin.'
sin.cos.'
sin.cos.sin.cos.'
sin.sin.cos.cos.'
)sin(.' )cos(.'
sin. cos.
yxy
yxx
rry
rrx
ryrx
ryrx
+=
#=
+=
#=
+=+=
==
!"!"!"
!"!"!"
sin.sincos.cos)cos(
cos.sinsin.cos)sin(
#=+
+=+
!
x '
y '
"
# $ %
& ' =
cos( )sin(
sin( cos(
"
# $
%
& ' x
y
"
# $ %
& ' +
0
0
"
# $ %
& '
13
25
Transformações 2D – Reflexão
• Ao longo do eixo X
• Ao longo do eixo Y
• XY
!
x '
y '
"
# $ %
& ' =
1 0
0 (1
"
# $
%
& ' x
y
"
# $ %
& ' +
0
0
"
# $ %
& ' =
x
(y
"
# $
%
& '
!
x '
y '
"
# $ %
& ' =
(1 0
0 1
"
# $
%
& ' x
y
"
# $ %
& ' +
0
0
"
# $ %
& ' =
(x
y
"
# $
%
& '
!
x '
y '
"
# $ %
& ' =
(1 0
0 (1
"
# $
%
& ' x
y
"
# $ %
& ' +
0
0
"
# $ %
& ' =
(x
(y
"
# $
%
& '
26
Transformações 2D – Deslizamento
• Deslizamento na direção x
• Deslizamento na direção y!
x '
y '
"
# $ %
& ' =
1 Shx
0 1
"
# $
%
& ' x
y
"
# $ %
& ' +
0
0
"
# $ %
& ' =
x + y ( Shxy
"
# $
%
& '
!
x '
y '
"
# $ %
& ' =
1 0
Shy 1
"
# $
%
& ' x
y
"
# $ %
& ' +
0
0
"
# $ %
& ' =
x
Shx ( x + y
"
# $
%
& '
14
27
Resumo Transformações 2D
• Notação matricial simplifica escrita Translação expressa como uma soma de vetores Escala e Rotação expressas como multiplicação
• Porém, é interessante uma notaçãouniforme e consistente Permitir que se expresse as três operações de
maneira idêntica Permitir que se expresse a combinação destas
três operações também de maneira idêntica• Como fazer isso?
28
Coordenadas Homogêneas
• Adiciona uma outra dimensão w• 2D -> 3D
(x,y) -> (x,y,w)• 3D -> 4D
(x,y,z) -> (x,y,z,w)• w = 0, pontos no infinito
Útil em projeções;• Homogeneizar: dividir por w• Em CG SEMPRE se usa w=1!
15
29
Qual a vantagem?
! x
! y
! w
"
#
$ $ $
%
&
' ' '
=
1 0 tx
0 1 ty
0 0 1
"
#
$ $ $
%
&
' ' '
x
y
w
"
#
$ $ $
%
&
' ' '
! x
! y
! w
"
# $
% $
=
=
=
x + wtx
y + wty
w
! x
! w
! y
! w
=
=
xw + t
x
y
w + ty
" # $
Translação agora também pode serrepresentada por multiplicação de matrizes!!
30
Escala – Coord. Homogêneas
! x
! y
! w
"
#
$ $ $
%
&
' ' '
=
sx0 0
0 sy0
0 0 1
"
#
$ $ $
%
&
' ' '
x
y
w
"
#
$ $ $
%
&
' ' '
! x
! y
! w
"
# $
% $
=
=
=
sxx
syy
w
! x
! w
! y
! w
=
=
sx
xw
sy
y
w
" # $
16
31
Rotação – Coord. Homogêneas
! x
! y
! w
"
#
$ $ $
%
&
' ' '
=
cos( ) sin( 0
sin( cos( 0
0 0 1
"
#
$ $ $
%
&
' ' '
x
y
w
"
#
$ $ $
%
&
' ' '
! x
! y
! w
"
# $
% $
=
=
=
cos&x ' sin&y
sin &x + cos&y
w
! x
! w
! y
! w
=
=
cos" xw# sin" y
w
sin" xw
+ cos" y
w
$ % &
32
Composição de Transformações
!
p'= T(Sp) = TSp
Escala seguida de Translação
17
33
Composição de Transformações
!
p'= S(Tp) = STp
Translação seguida de Escala
34
• Multiplicação de Matrizes não écomutativa
• Ordem das operações influenciadiretamente Rotação seguida de translação é diferente
de translação seguida de rotação
• http://www.cs.princeton.edu/~min/cs426/jar/transform.html
Composição de Transformações
18
35
Translação/Escala 3D
• Translação – glTranslatef(tx, ty, tz)
T(tx, ty, tz):
• Escala – glScalef(Sx, Sy, Sz)
S(Sx, Sy, Sz):!
1 0 0 tx
0 1 0 ty
0 0 1 tz
0 0 0 1
"
#
$ $ $ $
%
&
' ' ' '
!
Sx 0 0 0
0 Sy 0 0
0 0 Sz 0
0 0 0 1
"
#
$ $ $ $
%
&
' ' ' '
36
Rotação 3D
• Rotação
!
zR (") :
cos" #sin" 0 0
sin" cos" 0 0
0 0 1 0
0 0 0 1
$
%
& & & &
'
(
) ) ) )
!!!!
"
#
$$$$
%
&
'
1000
0cossin0
0sincos0
0001
:)(x ((
(((R
!!!!
"
#
$$$$
%
&
'
1000
0cos0sin
0010
0sin0cos
:)(y ((
((
(R
19
37
Rotação - Eixo genérico
• glRotatef(angle,x,y,z)
onde c = cos θ s = sin θ
Fórmula de Rodrigues