Upload
ivan-barreto
View
238
Download
3
Embed Size (px)
DESCRIPTION
algoritmos de visualização
Citation preview
Computação Computação GráficaGráfica
VisualizaVisualização 3Dção 3DProf. Luiz MarcosProf. Luiz Marcos
www.dca.ufrn.br/~lmarcos/courses/www.dca.ufrn.br/~lmarcos/courses/compgrafcompgraf
Visualização 3DVisualização 3D
De onde veio a geometria?De onde veio a geometria? Modelo de Câmera Pin-holeModelo de Câmera Pin-hole Transformações de Projeção Transformações de Projeção
(perspectiva e ortogonal)(perspectiva e ortogonal) Transformação de VisualizaçãoTransformação de Visualização Cortes de partes não visíveisCortes de partes não visíveis
De onde veio a De onde veio a geometria?geometria?
Construída usando modeladores 3D Construída usando modeladores 3D (Maya, 3DS, etc)(Maya, 3DS, etc)
Digitalizada ou escaneada (escaner 3D)Digitalizada ou escaneada (escaner 3D) Simulação/modelagem fisicaSimulação/modelagem fisica CombinaçãoCombinação
Editar um modelo digitalizadoEditar um modelo digitalizado Simplificar um modelo escaneadoSimplificar um modelo escaneado Evoluir um modelo simples (esfera, cubo)Evoluir um modelo simples (esfera, cubo)
Geralmente precisa-se modelos múltiplos Geralmente precisa-se modelos múltiplos a complexidades diferentesa complexidades diferentes
Modelagem GeométricaModelagem Geométrica Resultado é uma representação no Resultado é uma representação no
computador: computador: esfera = origem (esfera = origem (xx00,y,y00,z,z00), raio (), raio (rr), orient. (), orient. (ooxx,o,oyy,o,ozz););
Há outras maneiras mais eficientes e Há outras maneiras mais eficientes e inteligentes de representar objetos inteligentes de representar objetos (Modelagem Geométrica)(Modelagem Geométrica)
Para superfícies mais complexas:Para superfícies mais complexas: Combinação de primitivas simples (cubo + esfera)Combinação de primitivas simples (cubo + esfera) Uso de retalhos poligonais (colcha de retalhos)Uso de retalhos poligonais (colcha de retalhos)
Retalhos de BèzierRetalhos de Bèzier Retalhos triangularesRetalhos triangulares
Geometria Geometria Como mostrar a geometria na tela?Como mostrar a geometria na tela?Dados: - modelo matemático da cena Dados: - modelo matemático da cena referenciadoreferenciado ao sistema de coordenadas ao sistema de coordenadas de mundode mundo - câmera também referenciada - câmera também referenciada ao sistemaao sistema de mundo (R,T)de mundo (R,T)
xo
zo
yo
yc
xc
zc
xwzw
yw
yimxim
(R,T)
Colocando geometria na Colocando geometria na telatela
Dada a geometria (ponto) num sistema Dada a geometria (ponto) num sistema de coordenada de mundo, como de coordenada de mundo, como visualizar (pixel)?visualizar (pixel)? Transformar para sistema de câmeraTransformar para sistema de câmera Transformar (warp) para o volume de Transformar (warp) para o volume de
visualização canônicovisualização canônico Clip (cortar partes não visíveis)Clip (cortar partes não visíveis) Projetar em coordenadas de display Projetar em coordenadas de display
(janela)(janela) RasterizarRasterizar xo
zo
yo
yc
xc
zc
xwzw
ywyim
xim
(R,T)
Visualização e projeçãoVisualização e projeção
Nossos olhos colapsam o mundo 3D Nossos olhos colapsam o mundo 3D para uma imagem 2D na retinapara uma imagem 2D na retina
Este processo ocorre por Este processo ocorre por ProjeçãoProjeção Projeção tem duas partes:Projeção tem duas partes:
Transformação de visualização: posição Transformação de visualização: posição da câmera e sua direçãoda câmera e sua direção
Transformação de projeção (perspectiva Transformação de projeção (perspectiva ou ortogonal): reduz 3D para 2Dou ortogonal): reduz 3D para 2D
Visualização e projeçãoVisualização e projeção
Usar Transformações HomogêneasUsar Transformações Homogêneas Formam a raiz da hierarquia de Formam a raiz da hierarquia de
transformaçõestransformações Transformar coordenadas de câmera Transformar coordenadas de câmera
em mundo, objeto e imagem e vice-em mundo, objeto e imagem e vice-versaversa
xo
zoyo
yc
xc
zc
xwzw
ywyim
xim
R,T
Ótica básicaÓtica básica
Ótica básicaÓtica básica
Formação da imagem começa com o Formação da imagem começa com o raio de luz que entra na câmera raio de luz que entra na câmera através da abertura angular (pupila através da abertura angular (pupila num humano)num humano)
Raio bate na tela ou plano imagem e Raio bate na tela ou plano imagem e o sensor fotoreceptivo registra o sensor fotoreceptivo registra intensidade da luzintensidade da luz
Muitos raios vem de luz refletida e Muitos raios vem de luz refletida e alguns de luz diretaalguns de luz direta
Focando uma imagemFocando uma imagem
Qualquer ponto numa cena pode Qualquer ponto numa cena pode refletir raios vindos de várias refletir raios vindos de várias direçõesdireções
Muitos raios vindos do mesmo ponto Muitos raios vindos do mesmo ponto podem entrar na câmera.podem entrar na câmera.
Para ter imagem nítida, todos os Para ter imagem nítida, todos os raios vindos de um mesmo ponto raios vindos de um mesmo ponto PP da cena devem convergir para um da cena devem convergir para um ponto único ponto único pp na imagem. na imagem.
Projeção perspectiva de Projeção perspectiva de um pontoum ponto
Plano de visualização ou plano Plano de visualização ou plano imagemimagem ponto ponto II “enxerga” tudo ao longo do raio “enxerga” tudo ao longo do raio
que passa através de Fque passa através de F ponto W projeta ao longo do raio que ponto W projeta ao longo do raio que
passa por F em I (interseção da reta WF passa por F em I (interseção da reta WF com plano imagem)com plano imagem)
ÓÓtica da câmera pin-holetica da câmera pin-hole
De P, região visível olhando por F é De P, região visível olhando por F é um coneum cone Problema: imagem borrada (espalhada)Problema: imagem borrada (espalhada)
Reduzindo o furo, o cone reduz-se a Reduzindo o furo, o cone reduz-se a um raioum raio
““Pin-hole” é o ponto focal ou centro Pin-hole” é o ponto focal ou centro de projeçãode projeção
Reduzindo abertura (pin-Reduzindo abertura (pin-hole)hole)
Apenas um raio de cada ponto entra Apenas um raio de cada ponto entra na câmerana câmera
Imagens nítidas, sem distorções, Imagens nítidas, sem distorções, mesmo à distâncias diferentesmesmo à distâncias diferentes
Problemas com o modelo pin-hole:Problemas com o modelo pin-hole: Tempo de exposição longoTempo de exposição longo Quantidade mínima de luzQuantidade mínima de luz DifraçãoDifração
Como resolver isso?Como resolver isso?
Introduzindo um sistema Introduzindo um sistema óticoótico
Solução: introduzir lentes e aberturaSolução: introduzir lentes e abertura Raio vindo do mesmo ponto 3D Raio vindo do mesmo ponto 3D
converge para um único ponto na converge para um único ponto na imagemimagem
Mesma imagem que uma pin-hole Mesma imagem que uma pin-hole mas com tempo de exposição bem mas com tempo de exposição bem menor e abertura maiormenor e abertura maior
Lentes finasLentes finas
Fl Fr
Lente fina
Eixo ótico
f f
Duas restrições básicasDuas restrições básicas
1) Qualquer raio que entra no 1) Qualquer raio que entra no sistema de lentes paralelo ao eixo sistema de lentes paralelo ao eixo ótico, sai na direção do foco no outro ótico, sai na direção do foco no outro ladolado
2) Qualquer raio que entra na lente 2) Qualquer raio que entra na lente vindo da direção do foco, sai vindo da direção do foco, sai paralelo ao eixo ótico do outro ladoparalelo ao eixo ótico do outro lado
Fl Fr
Lente fina
Eixo ótico
f fZ z
P Q
R
OS
p
s
Modelo básicoModelo básico Propriedade 1) a Propriedade 1) a PQPQ e propriedade e propriedade
2) a 2) a PRPR Defletem para se encontrar em Defletem para se encontrar em
algum ponto do outro ladoalgum ponto do outro lado Uma vez que o modelo de lente fina Uma vez que o modelo de lente fina
foca todos os raios vindos de foca todos os raios vindos de PP convergem para o mesmo ponto, convergem para o mesmo ponto, PQ PQ e e PR PR se intersectam em se intersectam em pp
Fl Fr
Lente fina
Eixo ótico
f fZ z
P Q
R
OS
p
s
Equação fundamentalEquação fundamental
Usando similaridade entre os pares de Usando similaridade entre os pares de triângulotriângulo (<PF (<PFllS>, <ROFS>, <ROFll>) e (<psF>) e (<psFrr>, >, <QOF<QOFrr>), >), obtém-se: obtém-se: Z/f = f/zZ/f = f/z => => Zz = Zz = ff22
FazendoFazendo Z´=Z+f e z´= z+f, encontramos Z´=Z+f e z´= z+f, encontramos::
1 /Z´ + 1/z´ = 1/f1 /Z´ + 1/z´ = 1/f
Fl Fr
Lente fina
Eixo ótico
f fZ z
P Q
R
OS
p
s
Formação da imagem Formação da imagem (invertida) (invertida)
Projetando uma formaProjetando uma forma Projetar cada ponto no plano imagemProjetar cada ponto no plano imagem Linhas são projetadas projetando seus Linhas são projetadas projetando seus
pontos finaispontos finais
Modelo perspectivo idealModelo perspectivo ideal
P
p
O
P
O o P1
p
p1
y x
z
yx
z
Plano imagem
Plano imagemf
f
oP1p1
Distorção perspectiva Distorção perspectiva pin-holepin-hole
Modelo idealModelo ideal
Implementação do Implementação do modelo idealmodelo ideal
Câmera na origem (apenas Câmera na origem (apenas transformação de projeção)transformação de projeção) Projeção ortográficaProjeção ortográfica Projeção perspectivaProjeção perspectiva
Câmera fora da origem (visualização Câmera fora da origem (visualização + projeção)+ projeção) Derivar uma matriz geral; ouDerivar uma matriz geral; ou Transformar o mundo, levando a Transformar o mundo, levando a
câmera para a origemcâmera para a origem
Projeção ortográfica Projeção ortográfica (câmera na origem)(câmera na origem)
Ponto focal no infinito, raios são Ponto focal no infinito, raios são paralelos e ortogonais ao plano de paralelos e ortogonais ao plano de projeçãoprojeção
Ótimo modelo para lentes de Ótimo modelo para lentes de telescópiotelescópio
Mapeia (Mapeia (x,y,zx,y,z) -> () -> (x,y,0x,y,0))1 0 00 1 00 0 0
Matriz de projeção ortogonal
Perspectiva simples Perspectiva simples (câmera na origem)(câmera na origem)
Caso canônico (câmera na origem)Caso canônico (câmera na origem) Câmera olha ao longo do eixo Câmera olha ao longo do eixo ZZ Ponto focal está na origemPonto focal está na origem Plano imagem paralelo ao plano Plano imagem paralelo ao plano XYXY a a
uma distância uma distância d d (distância focal)(distância focal)
xo
zo
yo
xc=xw
yimxim
yc=yw
zc=zw
d
Equações perspectivaEquações perspectiva
x = f (X/Z)x = f (X/Z)
y = f (Y/Z)y = f (Y/Z) Ponto Ponto (X,Y,Z) (X,Y,Z) na cena projeta emna cena projeta em
(d(X/Z),d(Y/Z),d)(d(X/Z),d(Y/Z),d) Equações são não lineares devido à divisãoEquações são não lineares devido à divisão
OZ
Yy
f ou d
x
z
Matriz de projeção Matriz de projeção perspectivaperspectiva
Projeção usando coordenadas homogêneasProjeção usando coordenadas homogêneas Transformar (Transformar (x,y,zx,y,z) em ) em [[(d(x/z),d(y/z,d(d(x/z),d(y/z,d]]
Divide pela 4Divide pela 4aa coordenada (a coordenada “w”) coordenada (a coordenada “w”) Obter pontos de imagem 2DObter pontos de imagem 2D
Descarta a terceira coordenada e aplica Descarta a terceira coordenada e aplica transformação de viewport para obter transformação de viewport para obter coordenada de janela (pixelcoordenada de janela (pixel
Transformação de projeção Transformação de projeção (resultado)(resultado)
xo
zoyo
yc
xc
zc
ypxp
Projeção perspectiva Projeção perspectiva (tem mais)(tem mais)
Especificar planos Especificar planos nearnear e e farfar Ao invés de mapear Ao invés de mapear zz em em dd, mapear , mapear zz
entre entre nearnear e e far far (para o (para o Z-BufferZ-Buffer, visto , visto adiante)adiante)
Mapear imagem final projetada no Mapear imagem final projetada no portal de visualizaçãoportal de visualização
Especificar campo de vista (ângulo Especificar campo de vista (ângulo fov)fov)
glViewPort, glFrustum glViewPort, glFrustum e e glPerspectiveglPerspective fazem isso tudo fazem isso tudo
O volume de visualizaçãoO volume de visualização Pirâmide no espaço definida pelo ponto Pirâmide no espaço definida pelo ponto
focal e uma janela no plano imagem focal e uma janela no plano imagem (janela mapeada no portal de (janela mapeada no portal de visualização)visualização)
Define a região visível do espaçoDefine a região visível do espaço Limites da pirâmide são os planos de Limites da pirâmide são os planos de
cortecorte Frustum = pirâmide truncada com planos Frustum = pirâmide truncada com planos
de corte near e farde corte near e far Near: previne pontos atrás da câmera de Near: previne pontos atrás da câmera de
serem visualizadosserem visualizados Far: Permite escalar z num valor fixo (z-buffer)Far: Permite escalar z num valor fixo (z-buffer)
Frustum: pirâmide Frustum: pirâmide truncada visíveltruncada visível
yc
xc
zc
Plano de projeção
zmin
zfar
FrustumFrustum
View-port (portal de View-port (portal de visualização)visualização)
Transformação de escala em ambos Transformação de escala em ambos os eixosos eixos
Mapear dx, dy (dimensões do plano Mapear dx, dy (dimensões do plano de projeção) em di, dj, (dimensões de projeção) em di, dj, (dimensões da janela de visualização)da janela de visualização)
xo
zoyo
yc
xc
zc
ypxp
Imagem final na janela de exibição
Monitor de Vídeodx
dydj
di
Portal de Visualização e Portal de Visualização e FrustumFrustum
Idealmente, o portal de visualização Idealmente, o portal de visualização e o plano de projeção (definido pelos e o plano de projeção (definido pelos limites do frustum) devem guardar limites do frustum) devem guardar a mesma razão entre suas a mesma razão entre suas dimensões, para não gerar dimensões, para não gerar aberraçõesaberrações
Câmera fora da origem Câmera fora da origem (caso geral)(caso geral)
Câmera fora da origem Câmera fora da origem (caso geral)(caso geral)
Duas alternativas:Duas alternativas: Derivar uma matriz geral de projeção para Derivar uma matriz geral de projeção para
transformar os objetos (trabalhoso); outransformar os objetos (trabalhoso); ou Transformando o mundo, a câmera fica na Transformando o mundo, a câmera fica na
posição e orientação canônica posição e orientação canônica (mapeamento)(mapeamento)
São as transformações de visualizaçãoSão as transformações de visualização Podem ser especificadas de várias Podem ser especificadas de várias
formasformas
Modelo mais popular Modelo mais popular para a transformação de para a transformação de
visualizaçãovisualização Distância focal, tamanho/forma da Distância focal, tamanho/forma da
imagem e planos de corte definidos na imagem e planos de corte definidos na transf. de projeção perspectivatransf. de projeção perspectiva
Em adição, especifique:Em adição, especifique: lookfromlookfrom : onde está o ponto focal (câmera) : onde está o ponto focal (câmera) lookatlookat: ponto no mundo centrado na imagem: ponto no mundo centrado na imagem
Especificar também orientação da câmera Especificar também orientação da câmera em torno do eixo em torno do eixo lookfrom-lookatlookfrom-lookat vupvup: vetor no mundo indicando o “acima” da : vetor no mundo indicando o “acima” da
imagem (norte da câmera)imagem (norte da câmera)
Implementação (3 Implementação (3 passos)passos)
1) Translada de 1) Translada de –lookfrom–lookfrom, trazendo o , trazendo o ponto focal para a origemponto focal para a origem
2) Roda 2) Roda lookfrom-lookatlookfrom-lookat p p// eixo eixo zz (mundo):(mundo): v=(lookat-lookfrom) normalizado e z=(0,0,1)v=(lookat-lookfrom) normalizado e z=(0,0,1) Eixo de rotação: a=(v Eixo de rotação: a=(v xx z)/|v z)/|v xx z| z| Ângulo de rotação: cosÂngulo de rotação: cos=v.z e sin=v.z e sin=|v =|v x x z|z|
Ou então, mais fácil, glRotate(Ou então, mais fácil, glRotate(,a,axx,a,ayy,a,azz))
ImplementaçãoImplementação
3) Roda em torno do eixo z para fazer 3) Roda em torno do eixo z para fazer vup ficar paralelo ao eixo yvup ficar paralelo ao eixo y
vup
Translada de -lookfromTranslada de -lookfrom
xo
zo
yo
yc
xc
zc
xwzw
yw
yimxim
Rotate Z axisRotate Z axis
xo
zoyo
yc
xc
zcxw
zw
yw
yimxim
Rotate Z axisRotate Z axis
xo
zoyo
yc
xc
zcxw
zw
yw
yimxim
Rotate Z axisRotate Z axis
xo
zoyo
yc
xc
zc
xw
zw
yw
yimxim
Rotate Y axisRotate Y axis
xo
zoyo
yc
xc
zc
xw
zw
yw
yimxim
That is itThat is it
xo
zoyo
yc
xc
zc xwzw
yw
yimxim
FelizmenteFelizmente
OpenGL faz tudo para voce. OpenGL faz tudo para voce. Especifique:Especifique: Onde voce está (Onde voce está (lookfromlookfrom)) Onde voce olha (Onde voce olha (lookatlookat)) Orientação da câmera (Orientação da câmera (vupvup)) Campo de vista (ângulo Campo de vista (ângulo fovfov)) Distância focal (Distância focal (dd)) Dimensões da janela de visualização Dimensões da janela de visualização
(pixels)(pixels) E é isto! Done!E é isto! Done!
Implementação em Implementação em OpenGLOpenGL