Alberto Raposo – PUC-Rio INF 1366 – Computação Gráfica Interativa Grafos de Cena Alberto B....
Transcript of Alberto Raposo – PUC-Rio INF 1366 – Computação Gráfica Interativa Grafos de Cena Alberto B....
Alberto Raposo – PUC-Rio
INF 1366 – Computação Gráfica Interativa
Grafos de Cena
Alberto B. Raposo
http://www.tecgraf.puc-rio.br/~abraposo/INF1366
Alberto Raposo – PUC-Rio
Computação Gráfica e Áreas Correlatas
Imagem digitalImagem digital
ModelosModelos
processamento de imagens
visão computacional
computaçãográfica
(síntese deimagens)
modelagem geométrica
Alberto Raposo – PUC-Rio
Conceitos
• Ambiente Virtual– representação de diversos aspectos do mundo real ou
abstrato
• Grafo de Cena– ferramentas conceituais para representação de
ambientes virtuais tridimensionais nas aplicações de computação gráfica
• posição do objeto• forma (descrição geométrica)• textura da superfície• iluminação, etc
Alberto Raposo – PUC-Rio
Descrição geométrica
• É qualquer maneira de se representar a forma da entidade que pode ser processada para se obter uma imagem dessa entidade. – A maneira mais comum é a representação aproximada
por um conjunto (malhas) de polígonos (mais especificamente por triângulos).
– O grau de complexidade da descrição geométrica é, em geral, diretamente proporcional à qualidade visual, porém inversamente proporcional à velocidade com que a imagem é gerada.
Alberto Raposo – PUC-Rio
Descrição geométrica
Modelo 3D
Paramétrica
Poligonal
Partículas
Implícitas
2222 rzyx
2
4
cos
sin
y
x
John Dingliana, 2004
Alberto Raposo – PUC-Rio
Malhas de Polígonos
• Construção de modelos 3D usando grupos de polígonos.– Como cada polígono é planar, necessita-se grande quantidade
de polígonos para dar a impressão de superfícies curvas
48 polígonos 120 polígonos 300 polígonos 1000 polígonos
John Dingliana, 2004
Alberto Raposo – PUC-Rio
Câmera
• A câmera é a visão do mundo virtual.– Geralmente ela é uma câmera de projeção
perspectiva
Alberto Raposo – PUC-Rio
Transformações• O objeto é posicionado no mundo virtual através
de uma transformação geométrica. – Transforma as
coordenadas locaisdo objeto nas coordenadas do mundovirtual.
– As transformações são importantes para definir a hierarquia dos objetos
• Exemplos: translação, rotação e escalamento
Alberto Raposo – PUC-Rio
Aparência
• Material, textura, transparência, sombra e reflexão estão entre os diversos atributos que definem a aparência de um objeto.
• Assim como a descrição geométrica, a aparência interfere diretamente na imagem final sendo gerada e na velocidade de geração.
Alberto Raposo – PUC-Rio
Comportamento
• Um objeto pode ser estático ou dinâmico. O objeto dinâmico é aquele que muda de posição, forma ou aparência entre um quadro e outro
Alberto Raposo – PUC-Rio Gouraud Phong
Iluminação
• Várias fontes de luz podem ser adicionadas à cena (puntual, direcional, spotlight, etc.)
• Vários são os modelos de iluminação que podem ser empregados – Gouraud – Phong, etc
Alberto Raposo – PUC-Rio
Grafo de Cena
• Todos os aspectos anteriores (descrição geométrica, transformações, câmera, etc) devem ser inseridos em um grafo de cena para representar o ambiente virtual.
Alberto Raposo – PUC-Rio
Grafo de Cena
• O grafo de cena é formado por nós conectados por arestas compondo um grafo acíclico direcionado.
• Cada nó possui um conjunto de atributos que podem, ou não, influenciar seus nós conectados.
• Os nós são organizados de uma maneira hierárquica correspondendo semânticae espacialmente ao mundo modelado.
Alberto Raposo – PUC-Rio
Grafo de Cena
• Noção de agrupamento espacial é essencial.– Grafo ao lado representa semanticamente a
mesma casa do exemplo anterior,mas não representa organização espacial.
Alberto Raposo – PUC-Rio
Estrutura Hierárquica da Cena
• Hierarquia de nós definindo o grafo hierárquico da cena
Alberto Raposo – PUC-Rio
Tipos de Nós
• Raiz– Primeiro nó do grafo e todos os outros nós estão
ligados a ele direta ou indiretamente.
• Intermediários (internos ou de agrupamento)– Possuem várias propriedades, sendo o uso mais comum
o de representar transformações 3D (rotação, translação e escala).
• Folha– Contêm, geralmente, a representação geométrica de um
objeto.
Alberto Raposo – PUC-Rio
Herança de estado
• Os grafos de cena implementam um princípio chamado de herança de estado. – Nós internos armazenam o estado do sistema, onde
estado significa a posição e a orientação dos objetos no ambiente virtual e seus atributos de aparência.
– A herança de estado é uma propriedade dos grafos de cena que determina que cada nó deve herdar as propriedades de estado de todos os seus ancestrais no grafo até a raiz.
Alberto Raposo – PUC-Rio
Herança de estado
• Atributos e transformações aplicadas hierarquicamente
Alberto Raposo – PUC-Rio
Grafos de Cena
• Organização hierárquica da cena
• Otimizações essenciais para visualização em tempo real em RV– Descartes (retirar da cena objetos que não
aparecem na visualização)– LOD (Level of Detail)
Melhoria no desempenho da aplicação!
Alberto Raposo – PUC-Rio
Volume envolvente (bounding box)
• Geralmente uma caixa alinhada ou uma esfera, que engloba o conteúdo de todos os nós abaixo do nó em questão.
Alberto Raposo – PUC-Rio
Descarte por volume de visão(frustum culling)
• O grafo de cena testa a interseção do volume envolvente do nó com o volume de visão do observador. – Se o volume envolvente estiver completamente fora do
campo de visão, o nó e toda a sua subárvore são descartados.
– Se o mesmo estiver completamente dentro do campo de visão, o nó e toda a sua subárvore são percorridos.
– Caso a interseção seja parcial, o teste é refeito durante o percurso da subárvore.
Alberto Raposo – PUC-Rio
Descarte por volume de visão(frustum culling)
descartado
totalmente visualizado
desce nível no grafo paraavaliar nós filhos
Alberto Raposo – PUC-Rio
Descarte por oclusão (occlusion culling)
• Objetivo de evitar a renderização de primitivas que estejam ocultas por outras partes da cena.
• A idéia por trás dos algoritmos de oclusão é realizar algum pré-processamento ou alguns testes durante a renderização para evitar que dados sejam enviados desnecessariamente para a placa.
Alberto Raposo – PUC-Rio
Descarte por oclusão (occlusion culling)
Alberto Raposo – PUC-Rio
Organização espacial
• Se um nó for descartado, toda a sua subárvore será descartada. Por esse motivo, uma cena organizada espacialmente será muito mais eficiente do que uma cena que foi montada aleatoriamente.
Alberto Raposo – PUC-Rio
LOD – Level of Detail• À medida que à distância da câmera a um modelo
aumenta, o espaço por este ocupado na janela diminui e, conseqüentemente, o detalhe com que é visualizado também diminui.
• O LOD permite definir representações alternativas para um objeto gráfico, cada uma sendo ativada de acordo com a distância ao observador.
Alberto Raposo – PUC-Rio
LOD• Torna-se desnecessário e
ineficiente definir o objeto com todo detalhe. O objetivo principal é o de utilizar diferentes representações de um modelo, normalmente de resoluções distintas, que serão selecionadas de acordo com um critério de decisão pré-determinado. Um dos critérios de decisão mais utilizado é à distância do modelo à câmera.
Alberto Raposo – PUC-Rio
Grafos de Cena• Produtividade
– Grafo de cena gerencia toda a parte gráfica, reduzindo as várias linhas de código que seriam necessárias para implementar a mesma funcionalidade utilizando uma interface de programação baixo nível, como a OpenGL.
• Portabilidade– Grafos de cena encapsulam as tarefas de baixo nível necessárias
para renderizar a cena e ler e escrever arquivos, reduzindo, ou até mesmo extinguindo, a quantidade de código que é específica de alguma plataforma.
• Escalabilidade– Grafos de cena são feitos para funcionar em configurações simples
baseadas em computadores de mesa e placas gráficas aceleradoras convencionais ou em hardware complexo, como cluster de máquinas gráficas.
Alberto Raposo – PUC-Rio
Exemplos de Grafos de Cena
• SGI OpenGL Performer
• Open Inventor
• OpenSceneGraph
• OpenSG
• OpenRM
• VRML / X3D
Alberto Raposo – PUC-Rio
Exemplo de Grafo de CenaSGI OpenGL Performer
• Interface de programação para desenvolvimento de aplicações gráficas 3D em tempo real.
• Funciona em IRIX, Linux e Windows• Baseado em OpenGL. • Excelente solução para renderização em tempo real.• Solução comercial de alto custo• Desenvolvida especialmente para equipamentos da Silicon
Graphics. – Em outros equipamentos, boa parte das otimizações não estão
presentes.
Alberto Raposo – PUC-Rio
Exemplo de Grafo de CenaSGI OpenGL Performer
Alberto Raposo – PUC-Rio
Exemplo de Grafo de CenaOpenScenGraph
• Interface de programação construída sobre OpenGL
• Responsável pela gerência do grafo de cena e otimizações gráficas
• Multi-plataforma, gratuito e de código aberto• Por ser orientado a objetos, o OpenSceneGraph é
bastante extensível, permitindo ao usuário a criação de novas funcionalidades sem a necessidade de modificação do seu código fonte.
Alberto Raposo – PUC-Rio
VRML
• X3D é evolução da VRML (Virtual Reality Modeling Language)– Surgiu da necessidade de prover um formato gráfico 3D para a
Web• Modelo similar à HTML
– linguagem textual– independente de plataforma
– Linguagem independente de plataforma para a publicação de “páginas” Web tridimensionais
– Objetivo: prover ricos ambientes tridimensionais interativos, permitindo ao usuário definir mundos estáticos e animados, e interagir com eles
– Linguagem escolhida como referência: Open Inventor
Alberto Raposo – PUC-Rio
VRML - Exemplo
ViewpointViewpoint PointLightPointLight TransformTransform TransformTransformTransformTransform
ShapeShape ShapeShape ShapeShape
TextText
FontStyleFontStyle
AppearanceAppearanceSphereSphere
MaterialMaterial
AppearanceAppearance
MaterialMaterial
BoxBox
Grafo do exemplo anterior
Alberto Raposo – PUC-Rio
X3D (Extensible 3D)• Proposta para nova versão de VRML
– Compatibilidade com VRML 97– Integração com XML
• definição de um novo conjunto de tags adequado à classe de documentos que se deseja representar
– Componentização• funcionalidade crucial encapsulada em um núcleo
– Extensibilidade• núcleo expandido para prover novas funcionalidades
(e.g., H-Anim, GeoVRML)
Alberto Raposo – PUC-Rio
X3D - Exemplo de Código
<?xml version=“1.0” encoding=“utf-8”?><!DDOCTYPE X3D PUBLIC“http://www.web3D.org/TaskGroups/x3d/translation/x3d-compromise.dtd”“file://localhost/C:/www.web3D.org/TaskGroups/x3d/translation/x3d-compromise.dtd”[<!ENTITY % VRML97Profile “INCLUDE”><!ENTITY % CoreProfile “IGNORE”><!ENTITY % X3dExtensions “IGNORE”><!ENTITY % GeoVrmlProfile “INCLUDE”><!ENTITY % HAnimProfile “INCLUDE”>]>
Alberto Raposo – PUC-Rio
X3D - Exemplo de Código <X3D> <Scene> <Transform> <children> <NavigationInfo headlight=“false” avatarSize=“0.25 1.6 0.75” type=“"EXAMINE"”/> <DirectionalLight/> <Transform translation=“3.0 0.0 1.0”>
<children> <Shape>
<geometry><Sphere radius=“2.3”/></geometry> <appearance><Appearance>
<material> <Material diffuseColor=“1.0 0.0 0.0”/></material> </Appearance></appearance> </Shape>
</children></Transform>
</children> </Transform> </Scene></X3D>
Alberto Raposo – PUC-Rio
INF 1366 – Computação Gráfica Interativa
Grafos de Cena
Alberto B. Raposo
http://www.tecgraf.puc-rio.br/~abraposo/INF1366