Billboard
INF1339 – Computa¸ c˜ ao Gr´ afica Tridimensional
Waldemar Celes
celes@inf.puc-rio.br – sala 505 RDC
Tecgraf, DI/PUC-Rio
23 de Setembro de 2015
Billboard
Forma simples de renderiza¸ c˜ ao baseada em imagem (IBR) Ideia b´ asica:
Substituir objeto geom´ etrico por uma imagem
I
Exemplos: flare, ´ arvores, fontes de luz, ...
Billboard
I
Imagem de textura representando o objeto
I
Suporte geom´ etrico para aplica¸ c˜ ao da textura
I
Em geral, usa-se um quadril´ atero simples
Billboard
Forma simples de renderiza¸ c˜ ao baseada em imagem (IBR) Ideia b´ asica:
Substituir objeto geom´ etrico por uma imagem
I
Exemplos: flare, ´ arvores, fontes de luz, ...
Billboard
I
Imagem de textura representando o objeto
I
Suporte geom´ etrico para aplica¸ c˜ ao da textura
I
Em geral, usa-se um quadril´ atero simples
Billboard
Posicionamento
I
Transla¸c˜ ao para a posi¸ c˜ ao do objeto no mundo
I
Rota¸c˜ ao para billboard ficar sempre voltado para o observador
Tipos de billboard
I
Pontual: rota¸ c˜ ao em torno de um ponto
I
Alinhado com tela (screen-aligned)
I
Alinhado com o mundo (world-aligned)
I
Axial: rota¸c˜ ao em torno de um eixo
Billboard
Posicionamento
I
Transla¸c˜ ao para a posi¸ c˜ ao do objeto no mundo
I
Rota¸c˜ ao para billboard ficar sempre voltado para o observador
Tipos de billboard
I
Pontual: rota¸ c˜ ao em torno de um ponto
I
Alinhado com tela (screen-aligned)
I
Alinhado com o mundo (world-aligned)
I
Axial: rota¸ c˜ ao em torno de um eixo
Billboard
Matriz de rota¸ c˜ ao
I
Acha-se uma base ortonormal (r, u, n) que representa o correto posicionamento do billboard no mundo 3D
I
Escolhe-se um sistema de eixo local do suporte geom´ etrico
z x y
M =
r u n
Posicionamento de billboard
Billboard pontual alinhado com a tela
I
Deve-se fornecer posi¸ c˜ ao no mundo
I
Usado para textos, flare, etc.
I
Ou objetos axissim´ etricos (sem dire¸ c˜ ao “para cima” definida)
Base ortonormal
I
r?
I
u?
I
n?
Como deve estar alinhado com a tela:
I
n = −v
dirI
u = v
up Ir = u × n
Posicionamento de billboard
Billboard pontual alinhado com a tela
I
Deve-se fornecer posi¸ c˜ ao no mundo
I
Usado para textos, flare, etc.
I
Ou objetos axissim´ etricos (sem dire¸ c˜ ao “para cima” definida)
Base ortonormal
I
r?
I
u?
I
n?
Como deve estar alinhado com a tela:
I
n = −v
dirI
u = v
up Ir = u × n
Posicionamento de billboard
Billboard pontual alinhado com o mundo
I
Deve-se definir posi¸ c˜ ao e dire¸ c˜ ao “para cima” (u
w) no mundo
I
Usado para fontes de luz, fuma¸ ca, fogo, nuvem, etc.
Base ortonormal
I
r?
I
u?
I
n?
Como deve estar voltado para observador:
I
n = −v
dirI
u = u
w, o qto poss´ıvel
I
r = u × n
Como determinar u:
I
r = u
w× n
I
u = n × r
Posicionamento de billboard
Billboard pontual alinhado com o mundo
I
Deve-se definir posi¸ c˜ ao e dire¸ c˜ ao “para cima” (u
w) no mundo
I
Usado para fontes de luz, fuma¸ ca, fogo, nuvem, etc.
Base ortonormal
I
r?
I
u?
I
n?
Como deve estar voltado para observador:
I
n = −v
dirI
u = u
w, o qto poss´ıvel
I
r = u × n
Como determinar u:
I
r = u
w× n
I
u = n × r
Posicionamento de billboard
Billboard pontual alinhado com o mundo
I
Deve-se definir posi¸ c˜ ao e dire¸ c˜ ao “para cima” (u
w) no mundo
I
Usado para fontes de luz, fuma¸ ca, fogo, nuvem, etc.
Base ortonormal
I
r?
I
u?
I
n?
Como deve estar voltado para observador:
I
n = −v
dirI
u = u
w, o qto poss´ıvel
I
r = u × n
Como determinar u:
I
r = u
w× n
I
u = n × r
Posicionamento de billboard
Billboard axial
I
Deve-se fornecer posi¸ c˜ ao e eixo vertical (e
w) no mundo
I
Usado para ´ arvores, raios de laser, etc.
Base ortonormal
I
r?
I
u?
I
n?
Como deve respeitar o eixo:
I
n = −v
dir, , o qto poss´ıvel
I
u = e
w Ir = u × n
Como determinar n:
I
r = u × −v
dirI
n = r × u
Posicionamento de billboard
Billboard axial
I
Deve-se fornecer posi¸ c˜ ao e eixo vertical (e
w) no mundo
I
Usado para ´ arvores, raios de laser, etc.
Base ortonormal
I
r?
I
u?
I
n?
Como deve respeitar o eixo:
I
n = −v
dir, , o qto poss´ıvel
I
u = e
w Ir = u × n
Como determinar n:
I
r = u × −v
dirI
n = r × u
Posicionamento de billboard
Billboard axial
I
Deve-se fornecer posi¸ c˜ ao e eixo vertical (e
w) no mundo
I
Usado para ´ arvores, raios de laser, etc.
Base ortonormal
I
r?
I
u?
I
n?
Como deve respeitar o eixo:
I
n = −v
dir, , o qto poss´ıvel
I
u = e
w Ir = u × n
Como determinar n:
I
r = u × −v
dirI
n = r × u
Posicionamento de billboard
Como determinar v
dir?
Usar v
dirconstante ou vari´ avel
I
Dire¸ c˜ ao constante: normal do plano near
I
Dire¸ c˜ ao vari´ avel: determinar posi¸ c˜ ao da cˆ amera
Posicionamento de billboard
Como determinar v
dir?
Usar v
dirconstante ou vari´ avel
I
Dire¸ c˜ ao constante: normal do plano near
I
Dire¸ c˜ ao vari´ avel: determinar posi¸ c˜ ao da cˆ amera
Posicionamento de billboard
Como determinar v
dir?
Usar v
dirconstante ou vari´ avel
I
Dire¸ c˜ ao constante: normal do plano near
I
Dire¸ c˜ ao vari´ avel: determinar posi¸ c˜ ao da cˆ amera
Textura do billboard
Imagem com transparˆ encia
I
Textura RGBA
I
Usar MODULATE para combinar
I
Considera ilumina¸ c˜ ao do suporte geom´ etrico
I
Habilita BLEND e desenha billboards em ordem
Mark Harris, UNC-Chapel Hill
Billboard animado
Sequˆ encia de imagens com anima¸c˜ ao
I
Armazenadas num ´ unico objeto de textura para evitar carga da troca
Objeto de textura
I
Textura 2D: imagens colocadas lado a lado
I
N˜ ao permite transi¸ c˜ ao suave entre quadros
I
Textura 3D: imagens arranjadas na dimens˜ ao da profundidade
I
Permite interpola¸c˜ ao entre imagens adjacentes
I
N˜ ao permite uso de mipmapping
Billboard animado
Sequˆ encia de imagens com anima¸c˜ ao
I
Armazenadas num ´ unico objeto de textura para evitar carga da troca
Objeto de textura
I
Textura 2D: imagens colocadas lado a lado
I
N˜ ao permite transi¸c˜ ao suave entre quadros
I
Textura 3D: imagens arranjadas na dimens˜ ao da profundidade
I
Permite interpola¸c˜ ao entre imagens adjacentes
I
N˜ ao permite uso de mipmapping
Billboard animado
Sequˆ encia de imagens com anima¸c˜ ao
I
Armazenadas num ´ unico objeto de textura para evitar carga da troca
Objeto de textura
I
Textura 2D: imagens colocadas lado a lado
I
N˜ ao permite transi¸c˜ ao suave entre quadros
I
Textura 3D: imagens arranjadas na dimens˜ ao da profundidade
I
Permite interpola¸ c˜ ao entre imagens adjacentes
I
N˜ ao permite uso de mipmapping
Impostores
Impostores s˜ ao billboards gerados “on-the-fly”
I
Renderiza objeto complexo numa textura
I
Ao inv´ es de renderiz´ a-lo diretamente na cena
I
Mapeia textura na posi¸ c˜ ao do objeto
I
A mesma textura pode ser usada por alguns quadros
Sprites
Renderiza¸c˜ ao baseada em pontos
I
Uso de ponto como primitiva gr´ afica
I
Sprite: associa¸c˜ ao de textura aos fragmentos do ponto
Aplica¸c˜ oes
I
Fenˆ omenos naturais
I
Renderiza¸ c˜ ao de superf´ıcies
I
Visualiza¸ c˜ ao volum´ etrica
Renderiza¸c˜ ao de ponto
Controle do tamanho e da forma
I
Controle do tamanho em raster
glPointSize (...);
I
Controle da forma
glEnable(GL POINT SMOOTH);
I
Varia¸c˜ ao do tamanho
glPointParameter∗ (...);
size
0= clamp
"
size ×
r 1
a + b × z + c × z
2#
Renderiza¸c˜ ao de pontos
Corre¸ c˜ ao perspectiva
I
Desenhar pontos com diˆ amero δ no espa¸ co do mundo
I
Tamanho do ponto em raster quando z = z
nears = δ h
∆y
I
Tamanho em raster quando z > z
nears
0= s z
nearz
I
Defini¸ c˜ ao dos parˆ ametros de controle: a, b, c
r 1
a + b × z + c × z
2= z
nearz Ent˜ ao:
a = b = 0, c = 1
z
near2Renderiza¸c˜ ao de pontos
Corre¸ c˜ ao perspectiva
I
Desenhar pontos com diˆ amero δ no espa¸ co do mundo
I
Tamanho do ponto em raster quando z = z
nears = δ h
∆y
I
Tamanho em raster quando z > z
nears
0= s z
nearz
I
Defini¸ c˜ ao dos parˆ ametros de controle: a, b, c
r 1
a + b × z + c × z
2= z
nearz Ent˜ ao:
a = b = 0, c = 1
z
near2Renderiza¸c˜ ao de pontos
Corre¸ c˜ ao perspectiva
I
Desenhar pontos com diˆ amero δ no espa¸ co do mundo
I
Tamanho do ponto em raster quando z = z
nears = δ h
∆y
I
Tamanho em raster quando z > z
nears
0= s z
nearz
I
Defini¸ c˜ ao dos parˆ ametros de controle: a, b, c
r 1
a + b × z + c × z
2= z
nearz Ent˜ ao:
a = b = 0, c = 1
z
near2Renderiza¸c˜ ao de pontos
Corre¸ c˜ ao perspectiva
I
Desenhar pontos com diˆ amero δ no espa¸ co do mundo
I
Tamanho do ponto em raster quando z = z
nears = δ h
∆y
I
Tamanho em raster quando z > z
nears
0= s z
nearz
I
Defini¸ c˜ ao dos parˆ ametros de controle: a, b, c
r 1
a + b × z + c × z
2= z
nearz
Ent˜ ao:
a = b = 0, c = 1
z
near2Renderiza¸c˜ ao de pontos
Corre¸ c˜ ao perspectiva
I
Desenhar pontos com diˆ amero δ no espa¸ co do mundo
I
Tamanho do ponto em raster quando z = z
nears = δ h
∆y
I
Tamanho em raster quando z > z
nears
0= s z
nearz
I
Defini¸ c˜ ao dos parˆ ametros de controle: a, b, c
r 1
a + b × z + c × z
2= z
nearz Ent˜ ao:
a = b = 0, c = 1
z
near2Sprite
Especificando mapeamento de textura em pontos
glTexEnvi(GL POINT SPRITE, GL COORD REPLACE, GL TRUE);
glPointParameteri(GL POINT SPRITE COORD ORIGIN, GL LOWER LEFT);
glEnable(GL POINT SPRITE);