INF 1366 – Computação Gráfica Interativa X3D: Grouping Nodes, Viewing & Navigation, Appearance Alberto B. Raposo abraposo@tecgraf.puc-rio.br 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 bboxSize -1 -1 -1 [0, ) ou -1 -1 -1 Sem bounding box Alberto Raposo – PUC-Rio
X3DGroupingNode Implementa X3DChildNode e X3DBoundedObject Type accessType Name Default Range Profile MFNode inputOutput children [ ] [X3DChildNode] Interchange inputOnly addChildren Interactive removeChildren SFVec3f initializeOnly bboxCenter 0 0 0 (-, ) bboxSize -1 -1 -1 [0, ) ou -1 -1 -1 SFNode 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 Alberto Raposo – PUC-Rio Ver exemplo animado
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 url NULL Interactive SFVec3f initializeOnly bboxCenter 0 0 0 (-, ) Interchange bboxSize -1 -1 -1 [0, ) ou -1 -1 -1 SFNode metadata [X3DMetadataObject] Core Alberto Raposo – PUC-Rio
Inline Alberto Raposo – PUC-Rio
LOD Implementa níveis de detalhes Type accessType Name Default Range Profile SFVec3f initializeOnly center 0 0 0 (-, ) Immersive MFFloat range [ ] SFBool forceTransitions False Immersive (v 3.1) MFNode inputOutput children [X3DChildNode] Interchange bboxCenter bboxSize -1 -1 -1 [0, ) ou -1 -1 -1 SFNode 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 children [ ] [X3DChildNode] Interchange SFVec3f initializeOnly bboxCenter 0 0 0 (-, ) bboxSize -1 -1 -1 [0, ) ou -1 -1 -1 SFNode 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 url parameter MFNode children [ ] [X3DChildNode] inputOnly addChildren removeChildren SFVec3f initializeOnly bboxCenter 0 0 0 (-, ) bboxSize -1 -1 -1 [0, ) ou -1 -1 -1 SFNode metadata NULL [X3DMetadataObject] Core Alberto Raposo – PUC-Rio
Anchor - parâmetros url parameter 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 children [ ] [X3DChildNode] inputOnly addChildren Interactive removeChildren initializeOnly bboxCenter 0 0 0 bboxSize -1 -1 -1 [0, ) ou -1 -1 -1 SFNode 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 Alberto Raposo – PUC-Rio Type accessType Name Default Range Profile SFBool inputOutput enabled True Immersive SFTime collideTime outputOnly isActive SFNode initializeOnly proxy NULL Shape ou X3DChildNode MFNode children [ ] [X3DChildNode] inputOnly addChildren removeChildren SFVec3f bboxCenter 0 0 0 (-, ) bboxSize -1 -1 -1 [0, ) ou -1 -1 -1 metadata [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 outputOnly isBound SFTime bindTime 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 description “” (null string) Immersive SFFloat fieldOfView /4 (0, ) SFBool jump true SFRotration orientation 0 0 1 0 [-1 1] (-, ) position inputOnly set_bind outputOnly isBound SFTime bindTime SFNode metadata NULL [X3DMetadataObject] Core centerOfRotation: ponto em torno do qual a câmera girará no EXAMINE Alberto Raposo – PUC-Rio
NavigationInfo Alberto Raposo – PUC-Rio
NavigationInfo type Alberto Raposo – PUC-Rio
NavigationInfo speed headlight transitionType 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 avatarSize 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 diffuseColor 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 specularColor e shininess transparency 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: Exemplos Apenas 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 Cavalcanti www.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 Cavalcanti www.lcg.ufrj.br/Cursos/COS-751/texturas-ppt Alberto Raposo – PUC-Rio
Espaço de Textura t 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 ] 1 1 s Cláudio Esperança e Paulo Roma Cavalcanti www.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 intervalo T (s, t) = Im [ (1 – t) N mod N, s M mod M ] Cláudio Esperança e Paulo Roma Cavalcanti www.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 Cavalcanti www.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 u v i j s t Alberto Raposo – PUC-Rio Cláudio Esperança e Paulo Roma Cavalcanti www.lcg.ufrj.br/Cursos/COS-751/texturas-ppt
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 repeatT SFNode 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 abraposo@tecgraf.puc-rio.br http://www.tecgraf.puc-rio.br/~abraposo/INF1366 Alberto Raposo – PUC-Rio