Escolar Documentos
Profissional Documentos
Cultura Documentos
Recorte 3D
Y Z Y Z
xmax
X X
Projeção perspectiva Como obter xmin, xmax, ymin, ymax
Y
SRC
near far
fovy
Y aspect = w/h ymax
Z X tan (fovy/2) = ymax/near
fovy/2
near fovy/2 Z
ymin
h
w far
SRC near ymax = near . tan (fovy/2)
fovy ymin = - (near . tan (fovy/2))
aspect = w/h
• Complexidade: • Possibilidade
– recorte de elementos geométricos contra um volume – Solução híbrida 3D e 2D
qualquer
3D
descrição transformações recorte em
geométrica geométricas e de profundidade
descrição transformação câmera projeção
geométrica recorte
de câmera
2D
projeção recorte contra
a window
imagem exibição mapeamento
imagem exibição mapeamento
Recorte em duas etapas Recorte em duas etapas
z z
far • Recorte contra far • Recorte contra
planos planos
– Near – Near
– Far – Far
– ZNear < Zponto < ZFar – ZNear < Zponto < ZFar
• Recorte de linhas? • Recorte contra
• Trivial window
near near
• Recorte de – após a projeção
polígonos? – Algoritmos já
x x
estudados
SRC SRC • Cohen&Sutherland, ...
• Três casos
– Volume de visualização projeção ortográfica Coordenadas Objeto
– Volume para projeção oblíqua
Matriz Modelagem
– Volume de visualização projeção perspectiva
Coordenadas Mundo
• Tronco de pirâmide | volume canônico
Matriz Projeção
Coordenadas Recorte
(1,1,1) Perspectiva
Recorte é, então, realizado
contra os planos limitantes Coordenadas Normalizadas
do volume canônico.
(-1,-1,-1) Matriz Tela
SRU
Coordenadas Tela
xo xc xr
yo modelview yc projection yr (xmax,ymax,zmax)
zo matrix zc matrix zr
wo wc wr • Translação (T)
– o ponto central do volume de
SRO SRC coordenadas visualização deve ser levado
p/recorte para a origem
(xmin,ymin,zmin)
Dx = - (xmax + xmin) / 2
xr/ wr (1,1,1) Dy = - (ymax + ymin) / 2
xt
divisão yr/ wr transformação Dz = - (zmax + zmin) / 2
yt
perspectiva zr / w r p/viewport – Isto é necessário porque, não
zt obrigatoriamente xmin e xmax,
1 (-1,-1,-1)
ymin e ymax são centrados na
SRNormalizado SRT origem!
Transformação para volume canônico - projeção ortográfica Transformação para volume canônico - projeção ortográfica
far P2
P1
Y Z
P’
near SRC
near far
(xmin,ymin,near) (xmax,ymax,near) z1 = - near, z* = -1
X z1 = - far, z* = 1
eye
x y a . z1 + b
Z=1 P’= (near -z1 , near -z1 ) -z1 a=
- (far+near)
1 1
far-near
X = -1 X=1
- 2 far*near
• Representando essa b=
far-near
Z = -1
transformação na
matriz
Transformação para volume canônico – projeção perspectiva Transformação para volume canônico – projeção perspectiva
near 0 0 0
x’ = near . x near 0 0 0 x
0 near 0 0
y’ = near . y 0 near 0 0 y Escala para lado 2 Translação para a origem
= Sx = 2 / (xmax - xmin) Dx = - (xmax + xmin) / 2 -(far+near) - 2 far*near
0 0
-(far+near) - 2 far*near Sy = 2 / (ymax - ymin) Dy = - (ymax + ymin) / 2 far-near far-near
z’ = a.z + b 0 0 z
far-near far-near
0 0 -1 0
w = -z 0 0 -1 0 1
xo xc xr
plano z=far • Matriz composta, yo modelview projection
yc yr
incluindo o zo matrix zc matrix zr
(xmax,ymax,near)
cisalhamento wo wc wr
(xmin,ymin,near) 2 near
0
xmax+xmin
0 SRO SRC coordenadas
xmax-xmin xmax-xmin
2 near ymax+ymin
p/recorte
0 0
ymax-ymin ymax-ymin
(1,1,1) - 2 far*near
0 0
-(far+near) xr/ wr xt
far-near far-near transformação
divisão yr/ wr yt
0 0 -1 0 perspectiva zr / w r p/viewport
(-1,-1,-1) zt
1
SRNormalizado SRT
Recorte 3D Recorte 3D em coordenadas homogêneas