alberto raposo – puc-rio inf 1366 – computação gráfica interativa x3d: grouping nodes,...
TRANSCRIPT
Alberto Raposo – PUC-Rio
INF 1366 – Computação Gráfica Interativa
X3D: Grouping Nodes, Viewing & Navigation, Appearance
Alberto B. Raposo
http://www.tecgraf.puc-rio.br/~abraposo/INF1366
Alberto Raposo – PUC-Rio
Abstract Node Types
• X3DChildNode
• X3DBoundedObject
• X3DGroupingNode
• X3DInfoNode
• X3DUrlObject (Interface)
Alberto Raposo – PUC-Rio
X3DChildNode
• Comum a todos os nós X3D.• Indica que o nó pode ser usado como filho de um
nó de agrupamento– Usado nos campos children, addChildren e
removeChildren de um X3DGroupingNode
Type accessType Name Default Range Profile
SFNode inputOutput metadata NULL [X3DMetadataObject] Core
Alberto Raposo – PUC-Rio
X3D Profiles
Alberto Raposo – PUC-Rio
X3DBoundedObject
• Objeto que pode ter uma “bounding box”, útil para determinar visibilidade e tratar colisão de objetos
Type accessType Name Default Range Profile
SFVec3f initializeOnly bboxCenter 0 0 0 (-, ) Interchange
SFVec3f initializeOnly bboxSize -1 -1 -1 [0, ) ou -1 -1 -1 Interchange
Sem bounding box
Alberto Raposo – PUC-Rio
X3DGroupingNode
• Implementa X3DChildNode e X3DBoundedObject
Type accessType Name Default Range Profile
MFNode inputOutput children [ ] [X3DChildNode] Interchange
MFNode inputOnly addChildren [ ] [X3DChildNode] Interactive
MFNode inputOnly removeChildren [ ] [X3DChildNode] Interactive
SFVec3f initializeOnly bboxCenter 0 0 0 (-, ) Interchange
SFVec3f initializeOnly bboxSize -1 -1 -1 [0, ) ou -1 -1 -1 Interchange
SFNode inputOutput metadata NULL [X3DMetadataObject]
Core
Alberto Raposo – PUC-Rio
X3DInfoNode e X3DUrlObject
• X3DInfoNode (permite que qualquer nó tenha metadados)
• X3DUrlObject
Type accessType Name Default Range Profile
SFNode inputOutput metadata NULL [X3DMetadataObject] Core
Type accessType Name Default Range Profile
MFString inputOutput url [ ] [ URN ] Interchange ou Interactive
Alberto Raposo – PUC-Rio
Grouping Nodes
• Nós para agrupar outros nós, criando a estrutura hierárquica da cena.
• Objetivos:– Estruturar a cena, agrupando “pedaços” relacionados
– Criar subgrapfs de nós relacionados, facilitando, por exemplo, a animação
– Manter sistema de coordenadas comum
– Facilitar reuso de partes da cena (DEF e USE)
Alberto Raposo – PUC-Rio
Grouping Nodes
• Exemplos– Group / StaticGroup
– Transform
– Inline
– LOD
– Switch
– Anchor
– Billboard
– Collision
Alberto Raposo – PUC-Rio
Group / StaticGroup
• Apenas agrupa nós da cena
• StaticGroup não permite modificações (inserção, remoção, animação, ou qualquer alteração) nos seus nós filhos– Porém, o browser pode fazer otimizações na
estrutura interna do grafo de cena, aumentando desempenho da visualização
Alberto Raposo – PUC-Rio
Group / StaticGroup
Ver exemplo animado
Alberto Raposo – PUC-Rio
Transform
• Define systema de coordenadas para os filhos– Cada filho pode ter suas transformações, em relação ao
sistema de coordenadas do pai.
Alberto Raposo – PUC-Rio
Inline
• Pega nó de um outro arquivo X3D– (do primeiro endereço válido a partir de uma
lista de urls).• Mais “forte” que um link em HTML, que só
direciona para um url.
• O Inline deve referenciar um arquivo X3D válido e que não ultrapasse as restrições de profile, componentes e nível do arquivo que o chama.
Alberto Raposo – PUC-Rio
Inline
• Não permite inclusão e remoção de filhos (addChildren e removeChildren)
Type accessType Name Default Range Profile
SFBool inputOutput load true Immersive
MFString inputOutput url NULL Interactive
SFVec3f initializeOnly bboxCenter 0 0 0 (-, ) Interchange
SFVec3f initializeOnly bboxSize -1 -1 -1 [0, ) ou -1 -1 -1 Interchange
SFNode inputOutput metadata NULL [X3DMetadataObject]
Core
Alberto Raposo – PUC-Rio
Inline
Alberto Raposo – PUC-Rio
LOD
• Implementa níveis de detalhesType accessType Name Default Range Profile
SFVec3f initializeOnly center 0 0 0 (-, ) Immersive
MFFloat initializeOnly range [ ] (-, ) Immersive
SFBool initializeOnly forceTransitions False Immersive (v 3.1)
MFNode inputOutput children [ ] [X3DChildNode] Interchange
SFVec3f initializeOnly bboxCenter 0 0 0 (-, ) Interchange
SFVec3f initializeOnly bboxSize -1 -1 -1 [0, ) ou -1 -1 -1 Interchange
SFNode inputOutput metadata NULL [X3DMetadataObject]
Core
Alberto Raposo – PUC-Rio
LOD
Exemplo de LOD
Alberto Raposo – PUC-Rio
Switch• “Similar” ao LOD, mas é autor quem define qual dos
filhos será renderizado (apenas 1 pode ser renderizado a cada instante)– Usado, por exemplo, para animação de geometrias
Type accessType Name Default Range Profile
SInt32 inputOutput whichChoice -1 [-1, ) Immersive
MFNode inputOutput children [ ] [X3DChildNode] Interchange
SFVec3f initializeOnly bboxCenter 0 0 0 (-, ) Interchange
SFVec3f initializeOnly bboxSize -1 -1 -1 [0, ) ou -1 -1 -1 Interchange
SFNode inputOutput metadata NULL [X3DMetadataObject]
Core
Alberto Raposo – PUC-Rio
Switch - Exemplo
Alberto Raposo – PUC-Rio
Anchor• É um hiperlink dentro da cena: move para outra câmera ou
outra cena X3D
Type accessType Name Default Range Profile
SFString inputOutput description “” (null string) Interactive
MFString inputOutput url “” (null string) Interactive
MFString inputOutput parameter “” (null string) Interactive
MFNode inputOutput children [ ] [X3DChildNode] Interactive
MFNode inputOnly addChildren [ ] [X3DChildNode] Interactive
MFNode inputOnly removeChildren [ ] [X3DChildNode] Interactive
SFVec3f initializeOnly bboxCenter 0 0 0 (-, ) Interactive
SFVec3f initializeOnly bboxSize -1 -1 -1 [0, ) ou -1 -1 -1 Interactive
SFNode inputOutput metadata NULL [X3DMetadataObject] Core
Alberto Raposo – PUC-Rio
Anchor - parâmetros
• url– Lista de urls de onde se pegará o primeiro
válido, ao se selecionar o(s) objeto(s) do Anchor
• parameter– Informações adicionais
• parameter = “target=blank”
• parameter = “target=frame_name”
Alberto Raposo – PUC-Rio
Billboard
• Objetos do nó Billboard estão sempre “virados” de frente para a câmera.– Bom para texto, por exemplo.Type accessType Name Default Range Profile
SFVec3f inputOutput axisOfRotation 0 1 0 (-, ) Immersive
MFNode inputOutput children [ ] [X3DChildNode] Immersive
MFNode inputOnly addChildren [ ] [X3DChildNode] Interactive
MFNode inputOnly removeChildren [ ] [X3DChildNode] Interactive
SFVec3f initializeOnly bboxCenter 0 0 0 (-, ) Immersive
SFVec3f initializeOnly bboxSize -1 -1 -1 [0, ) ou -1 -1 -1 Immersive
SFNode inputOutput metadata NULL [X3DMetadataObject] Core
Exemplo de Billboard
Alberto Raposo – PUC-Rio
Collision
• Detecta colisão entre câmera e objetos agrupados nesse nó.– Apenas nós geométricos provêem colisão, com
exceção de pontos, linhas e texto
• Pode ter um objeto proxy (não renderizado) que substitui a geometria real para efeito de cálculos de colisão (geralmente usado para otimização do cálculo).
Alberto Raposo – PUC-Rio
Collision
Type accessType Name Default Range Profile
SFBool inputOutput enabled True Immersive
SFTime inputOutput collideTime Immersive
SFBool outputOnly isActive Immersive
SFNode initializeOnly proxy NULL Shape ou X3DChildNode Immersive
MFNode inputOutput children [ ] [X3DChildNode] Immersive
MFNode inputOnly addChildren [ ] [X3DChildNode] Immersive
MFNode inputOnly removeChildren [ ] [X3DChildNode] Immersive
SFVec3f initializeOnly bboxCenter 0 0 0 (-, ) Immersive
SFVec3f initializeOnly bboxSize -1 -1 -1 [0, ) ou -1 -1 -1 Immersive
SFNode inputOutput metadata NULL [X3DMetadataObject] Core
Alberto Raposo – PUC-Rio
Viewing & Navigation Nodes
• X3DBindableNode– Só um nó de cada tipo bindable pode estar ativo
a cada instante– Exemplos
• Viewpoint• NavigationInfo• Background• TextureBackground• Fog
Alberto Raposo – PUC-Rio
X3DBindableNode
Type accessType Name Default Range Profile
SFBool inputOnly set_bind Interactive
SFBool outputOnly isBound Interactive
SFTime outputOnly bindTime Interactive
SFNode inputOutput metadata NULL [X3DMetadataObject] Core
Alberto Raposo – PUC-Rio
Viewpoint (câmera)
Type accessType Name Default Range Profile
SFVec3f inputOutput centerOfRotation 0 0 0 (-, ) Interactive
SFString inputOutput description “” (null string) Immersive
SFFloat inputOutput fieldOfView /4 (0, ) Immersive
SFBool inputOutput jump true Interactive
SFRotration inputOutput orientation 0 0 1 0 [-1 1] (-, ) Interactive
SFVec3f inputOutput position 0 0 0 (-, ) Interactive
SFBool inputOnly set_bind Interactive
SFBool outputOnly isBound Interactive
SFTime outputOnly bindTime Interactive
SFNode inputOutput metadata NULL [X3DMetadataObject] Core
centerOfRotation: ponto em torno do qual a câmera girará noEXAMINE
Alberto Raposo – PUC-Rio
NavigationInfo
Alberto Raposo – PUC-Rio
NavigationInfo
• type
Alberto Raposo – PUC-Rio
NavigationInfo
• speed– Velocidade com que o usuário navega na cena
• headlight– Se há uma luz direcional (não é luz spot – luz de
capacete de mineiro) na direção do look-at
• transitionType– Como se dá a trasição entre câmeras: TELEPORT,
LINEAR (interpolação), ou ANIMATE (browser-specific)
Alberto Raposo – PUC-Rio
NavigationInfo• visibilityLimit
– Distância esperada do objeto mais distante visível
– 0 significa sem distância máxima
• avatarSize
Alberto Raposo – PUC-Rio
Aparência, Material e Textura
• Cada nó Shape tem:– 1 aparência (Appearance node) – 1 X3DGeometryNode
• Cada nó Appearance têm:– 1 Material node
• Transparência e uma série de propriedades de cor
– 1 FillProperties e 1 LineProperties nodes• Padrões para preenchimento e cores de borda
– 1 Texture node• Aplica imagem ou vídeo sobre superfície do objeto geométrico
Alberto Raposo – PUC-Rio
Apperance
Alberto Raposo – PUC-Rio
Material Node
Alberto Raposo – PUC-Rio
Material Node
• ambientIntensity– O quanto de luz ambiente essa superfície reflete
(depende apenas das fontes de luz, e não de suas posiçõesem relação ao objeto)
• diffuseColor– Reflete as fontes de luz em função de seus
ângulos em relação à superfície: quanto mais direto, mais reflexão
Alberto Raposo – PUC-Rio
Material Node
• emissiveColor– O quanto de luz o próprio objeto emite (i.e., ele será
visível sem nenhuma outra fonte de luz no ambiente)• specularColor e shininess
– Definem os highlights especulares em função do ângulo da fonte com o objeto e também do observador em relação ao objeto: se esses 2 ângulos forem próximos, maior a reflexão especular
– Menor shininess significa highlight mais “soft”• transparency
– 0 é opaco, e 1 e completamente transparente
Alberto Raposo – PUC-Rio
Material Nodes: ExemplosApenas diffuseColor="1 0 0" Apenas emissiveColor="0 0 1"
Apenas specularColor="0 1 0" e diffuseColor="1 0 0"
Usando transparência parcial na esfera ao lado
Alberto Raposo – PUC-Rio
Testando materiais
http://tog.acm.org/resources/applets/vrml/pellucid.html
Alberto Raposo – PUC-Rio
Texturas
• Modelos de iluminação não são apropriados para descrever todas as diferenças de cor observáveis em uma superfície– Superfícies pintadas com padrões ou imagens
• A capa ou uma página de um livro
– Superfícies com padrões de rugosidade• Tecidos ou uma parede de tijolos
• Em princípio é possível modelar esses detalhes com geometria e usando materiais de propriedades óticas distintas
• Na prática, esses efeitos são modelados usando uma técnica chamada mapeamento de textura
Cláudio Esperança e Paulo Roma Cavalcantiwww.lcg.ufrj.br/Cursos/COS-751/texturas-ppt
Alberto Raposo – PUC-Rio
Mapeamento de Textura
• A idéia é reproduzir sobre a superfície de algum objeto da cena as propriedades de alguma função – ou mapa - bidimensional (cor, por exemplo)
Cláudio Esperança e Paulo Roma Cavalcantiwww.lcg.ufrj.br/Cursos/COS-751/texturas-ppt
Alberto Raposo – PUC-Rio
Espaço de Textura
• Texturas 2D são funções T (s, t) cujo domínio é um espaço bidimensional e o contradomínio pode ser cor, opacidade, etc
• É comum ajustar a escala da imagem de tal forma que a imagem toda se enquadre no intervalo 0 ≤ s, t ≤ 1
• Normalmente a função em si é derivada de alguma imagem capturada– Se a imagem está armazenada numa
matriz Im [0..N–1 , 0..M–1]
– Então T (s, t) = Im [ (1 – t) N , s M ]
t
s
1
1
0
0
Cláudio Esperança e Paulo Roma Cavalcantiwww.lcg.ufrj.br/Cursos/COS-751/texturas-ppt
Alberto Raposo – PUC-Rio
Espaço de Textura
• Pode ser vantajoso assumir que o padrão da imagem se repete fora desse intervaloT (s, t) =
Im [ (1 – t) N mod N, s M mod M ]
Cláudio Esperança e Paulo Roma Cavalcantiwww.lcg.ufrj.br/Cursos/COS-751/texturas-ppt
Alberto Raposo – PUC-Rio
Função de Mapeamento• Retorna o ponto do objeto correspondente a cada
ponto do espaço de textura(x, y, z) = F (s, t)
• Corresponde à forma com que a textura é usada para “embrulhar” (wrap) o objeto– Na verdade, na maioria dos casos, precisamos de uma
função que nos permita “desembrulhar” (unwrap) a textura do objeto, isto é, a inversa da função de mapeamento
• Se a superfície do objeto pode ser descrita em forma paramétrica esta pode servir como base para a função de mapeamento
Cláudio Esperança e Paulo Roma Cavalcantiwww.lcg.ufrj.br/Cursos/COS-751/texturas-ppt
Alberto Raposo – PUC-Rio
Exemplos de diferentes funções de mapeamento de textura
Alberto Raposo – PUC-Rio
Processo de Mapeamento de Texturas
• Projeção do pixel sobre a superfície– Pontos da superfície
correspondentes aos vértices do pixel
• Parametrização– Coordenadas paramétricas dos
vértices do pixel projetados
• Mapeamento inverso– Coordenadas dos vértices no
espaço de textura• Média
– Cor média dos ‘Texels’ proporcional à àrea coberta pelo quadrilátero
uv
s
t
i
j
Cláudio Esperança e Paulo Roma Cavalcantiwww.lcg.ufrj.br/Cursos/COS-751/texturas-ppt
Alberto Raposo – PUC-Rio
ImageTexture node
• Aplica imagens sobre geometria (.jpg, .png, .gif)
• Exemplo
Objeto com textura aplicada
Objeto sem textura
Imagem aplicada como textura
Alberto Raposo – PUC-Rio
ImageTexture node
Type accessType Name Default Range Profile
MFString inputOutput url [ ] [urn] Interchange
SFBool initializeOnly repeatS true Interchange
SFBool initializeOnly repeatT true Interchange
SFNode inputOutput metadata NULL [X3DMetadataObject] Core
Alberto Raposo – PUC-Rio
MovieTexture Node
• Aplica vídeo sobre geometria
• Formato suportado Mpeg-1– Browsers podem suportar outros formatos,
como .mov e .avi
Alberto Raposo – PUC-Rio
MovieTexture Node
Alberto Raposo – PUC-Rio
TextureTransform node
• Transformações nas coordenadas de textura para melhor alinhar as imagens da textura à geometria
Alberto Raposo – PUC-Rio
TextureTransform Node
Alberto Raposo – PUC-Rio
INF 1366 – Computação Gráfica Interativa
X3D: Grouping Nodes, Viewing & Navigation, Appearance
Alberto B. Raposo
http://www.tecgraf.puc-rio.br/~abraposo/INF1366