computação gráfica e Áreas correlataswebserver2.tecgraf.puc-rio.br/~abraposo/inf1366/2005/02...4...
TRANSCRIPT
1
Alberto Raposo – PUC-Rio
INF 1366 – Computação Gráfica Interativa
VRML – Virtual Reality Modeling LanguagePOVRAY – Persistence of Vision Raytracer
Alberto B. [email protected]
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ãocomputacional
computaçãográfica
(síntese deimagens)
modelagem geométrica
2
Alberto Raposo – PUC-Rio
POVRAY
http://www.povray.org
Alberto Raposo – PUC-Rio
Arquivo de Entrada - POVRAY
Sistema de coordenadas
3
Alberto Raposo – PUC-Rio
Arquivo de Entrada - POVRAY
• Definição de câmera (posição e direção). Ex.:
camera {location <0, 2, -3>look_at <0, 1, 2>
}
Alberto Raposo – PUC-Rio
Arquivo de Entrada - POVRAY
• Definição de fonte de luz puntual (posição e cor, RGB, variando de 0 a 1). Ex.:
light_source { <2, 4, -3> color rgb <1.0, 0.0, 0.5> }
• Definição de cor de fundo. Ex:background { color rgb <1.0, 1.0, 1.0> }
4
Alberto Raposo – PUC-Rio
Arquivo de Entrada - POVRAY
• Definição de esfera (centro e raio) e características da superfíciesphere {
<0, 1, 2>, 2pigment { color rgb <0.8 0.3 0.9> }finish {
ambient 0.8diffuse 0.5 phong 0.35phong_size 10.0reflection { 0.7 }}
}
Alberto Raposo – PUC-Rio
Arquivo de Entrada – POVRAY -Exemplo
camera {location <0, 5, -5>look_at <0, 1, 0>
}
light_source { <2, 4, -3> color rgb <1.0, 1.0, 0.5> }light_source { <-2, -4, -3> color rgb <0.0, 1.0, 0.0> }background {color rgb<0. 0. 0.2>}
sphere {<-3, 0, 2>, 1.5pigment { color rgb <0.8 0.3 0.9> }finish {
ambient 0.8diffuse 0.5 phong 0.35phong_size 1.0reflection { 0.7 }}
}
sphere {<0, -5, 3>, 3.5pigment { color rgb <1. 0.8 0.4> }finish {
ambient 0.7diffuse 0.8 phong 0.1phong_size 10.0reflection { 0.1 }}
}sphere {
<7, -4, 9>, 2.5pigment { color rgb <0. 1. 0.86> }finish {
ambient 0.6diffuse 0.2 phong 0.6phong_size 20.0reflection { 0.3 }}
}
5
Alberto Raposo – PUC-Rio
Arquivo de Entrada – POVRAY -Exemplo
Alberto Raposo – PUC-Rio
Exemplos de obras com POVRAY:
"Warm Up" © Norbert Kern (2001)
6
Alberto Raposo – PUC-Rio
Exemplos de obras com POVRAY:
"Office" © Jaime Vives Piqueres (2004)
Alberto Raposo – PUC-Rio
Exemplos de obras com POVRAY:
"The Prisoners" © Gilles Tran (2000)
7
Alberto Raposo – PUC-Rio
Exemplos de obras com POVRAY:
"Alchemists Laboratory" © Jaime Vives Piqueres (2001)http://www.povray.org/
Alberto Raposo – PUC-Rio
VRML
8
Alberto Raposo – PUC-Rio
VRML - Introdução (1)
• Surgiu da necessidade de prover um formato gráfico 3D para a Web– Modelo similar à HTML
• linguagem textual• independente de plataforma
• Linguagem escolhida como referência: Open Inventor
Alberto Raposo – PUC-Rio
VRML - Introdução (2)
• VRML 1.0 (1995)– Descrição de cenas estáticas
• VRML 2.0 ou VRML97 (1997)– Cenas animadas– Interação com o usuário– Integração com programas externos
9
Alberto Raposo – PUC-Rio
VRML - Introdução (3)
• Órgão mantenedor: Wed 3D Consortium– Elaboração e manutenção de novos padrões
para a transmissão de conteúdo 3D através daWeb
• Visualização: através de browser VRML, normalmente um plug-in de um browser Web convencional
Alberto Raposo – PUC-Rio
VRML - Introdução (4)
• VRML:
– 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
10
Alberto Raposo – PUC-Rio
Exemplo de VRMLhttp://www.parallelgraphics.com/vrml/montmartre/montmartre.zip
Alberto Raposo – PUC-Rio
Exemplo de VRMLhttp://www.parallelgraphics.com/vrml/railway/cells/railway.zip
11
Alberto Raposo – PUC-Rio
VRML - Estrutura Hierárquica da Cena (1)
• Paradigma de criação de mundos VRML: hierarquia de nós definindo o grafo hierárquico da cena
Alberto Raposo – PUC-Rio
Grafos de Cena (1)
• Ferramentas conceituais para representação de ambientes virtuais tridimensionais nas aplicações de computação gráfica
• Grafos acíclicos direcionados, mantendo relações espaciais e semânticas dos objetos
Relacionamentos espaciais e semânticos
Relacionamento semântico ok, mas viola relacionamentos espaciais:
INADEQUADO para CG
12
Alberto Raposo – PUC-Rio
Grafos de Cena (2)
• Atributos e transformações aplicadas hierarquicamente
Alberto Raposo – PUC-Rio
Grafos de Cena (3)
• Organização hierárquica da cena• Otimizações essenciais para visualização
em tempo real em RV– Descartes– LOD (Level of Detail)
Melhoria no desempenho da aplicação!
13
Alberto Raposo – PUC-Rio
Grafos de Cena (4)
• 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 mesmafuncionalidade 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
Exemplo de Grafo de CenaSGI OpenGL Performer (1)
• 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.
14
Alberto Raposo – PUC-Rio
Exemplo de Grafo de CenaSGI OpenGL Performer (2)
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.
15
Alberto Raposo – PUC-Rio
VRML – Grafo de Cena
• Nós– Conjuntos de abstrações de objetos e de certas
entidades do mundo real: formas geométricas, luz, som, texturas, etc.
– Componentes fundamentais de VRML• cenas são construídas a partir da disposição,
combinação e interação entre os nós
– Hierarquias das cenas são construídas a partirdo agrupamento de nós
Alberto Raposo – PUC-Rio
VRML - Tipos de Nós (1)
• De agrupamento– Criam estrutura hierárquica da cena e pemitem que
operações sejam aplicadas sobre um conjunto de nós simultaneamente
– Exemplos• Anchor: cria links entre mundos VRMLAnchor {
children []url [](...) }
16
Alberto Raposo – PUC-Rio
VRML - Tipos de Nós (2)
• De agrupamento– Exemplos (cont.)
• Transform: define um sistema de coordenadas e realizatransformações sobre os nós filhos
Transform {translation 0 0 0rotation 0 0 1scale 1 1 1children [](...) }
Alberto Raposo – PUC-Rio
VRML - Tipos de Nós (3)
• Geométricos– Definem forma e aparência dos objetos– Exemplos
• Shape: define objeto 3DShape {
geometry <nó geométrico>appearance <nó Appearance>(...)
}
17
Alberto Raposo – PUC-Rio
VRML - Tipos de Nós (4)• Geométricos
– Exemplos (cont.)
• Box: define uma caixa centrada na origemBox { size 2 2 2 }
Alberto Raposo – PUC-Rio
#VRML V2.0 utf8 Transform { children [
Shape { geometry Box { size 1 1 3 } appearance Appearance { material Material {
diffuseColor 0.8 0.8 0.8 } }
}
NavigationInfo { type "EXAMINE" } Background { skyColor 1 1 1 }
]}
18
Alberto Raposo – PUC-Rio
VRML - Tipos de Nós (5)• Geométricos
– Exemplos (cont.)
• Cone: define cone centrado na origemCone {
bottomRadius 1 height 2side TRUEbottom TRUE
}
Alberto Raposo – PUC-Rio
VRML - Tipos de Nós (5)
• Geométricos: Cylinder e Sphere
19
Alberto Raposo – PUC-Rio
VRML - Tipos de Nós (7)
• Geométricos– IndexedLineSet (define linhas a partir de conjunto de pontos)IndexedLineSet { exposedField SFNode color NULLexposedField SFNode coord NULLfield MFInt32 colorIndex [] field SFBool colorPerVertex TRUEfield MFInt32 coordIndex []
}
Alberto Raposo – PUC-Rio
Shape {geometry IndexedLineSet {coord Coordinate {
point [ 0 10 0, 0 0 0, 20 0 0, -1 5 0, 21 5 0 ] }
coordIndex [ 0 1 2 -1 # axes3 4 ] # centerline
color Color { color [ 1 1 1, 0 1 0 ] }colorIndex [ 0 1 ] # white for axes, green for
centerlinecolorPerVertex FALSE # color per polyline
}
0
1 2
y
xz
3 4
The Annotated VRML 97 Reference
Lista de pontos
20
Alberto Raposo – PUC-Rio
Shape {geometry IndexedLineSet {coord Coordinate {
point [ 0 10 0, 0 0 0, 20 0 0, -1 5 0, 21 5 0 ] }
coordIndex [ 0 1 2 -1 # axes3 4 ] # centerline
color Color { color [ 0 0 1, 1 0 0 ] }colorIndex [ 0 1 ] colorPerVertex FALSE # color per polyline
}
0
1 2
3 4
Linhas conectandoos pontos listados
Alberto Raposo – PUC-Rio
Shape {geometry IndexedLineSet {coord Coordinate {
point [ 2 1 0, 5 2 0, 8 1.5 0, 11 9 0, 14 7 0, 17 10 0 ] }coordIndex [ 0 1 2 3 4 5 ] # connect the dotscolor Color { color [ 1 .9 .9, 1 .8 .8, 1 .5 .5,
1 .3 .3 , 1 .6 .6, 1 1 1 ] }} }
2 5 8 11 14 17
12
9
21
Alberto Raposo – PUC-Rio
Imagem final gerada(com as cores definidas no exemplo)
Alberto Raposo – PUC-Rio
VRML - Tipos de Nós (8)
• Geométricos– IndexedFaceSet (define linha a partir de conjunto de pontos)
IndexedFaceSet { exposedField SFNode color NULLexposedField SFNode coord NULLexposedField SFNode normal NULLexposedField SFNode texCoord NULLfield SFBool ccw TRUEfield MFInt32 colorIndex [] field SFBool colorPerVertex TRUEfield SFBool convex TRUEfield MFInt32 coordIndex [] field SFFloat creaseAngle 0 field MFInt32 normalIndex []field SFBool normalPerVertex TRUE field SFBool solid TRUE }
22
Alberto Raposo – PUC-Rio
#VRML V2.0 utf8Transform { children [Shape {geometry IndexedFaceSet {coord Coordinate {point [ 1 0 -1, -1 0 -1, -1 0 1, 1 0 1, 0 2 0 ]
}coordIndex [ 0 4 3 -1 # face A, direita
1 4 0 -1 # face B, atrás2 4 1 -1 # face C, esquerda3 4 2 -1 # face D, frente0 3 2 1 ] # face E, embaixo
} }] } # end of children and Transform
The Annotated VRML 97 Reference
Alberto Raposo – PUC-Rio
#VRML V2.0 utf8Viewpoint { description "Initial view" position 0 0 9 }NavigationInfo { type "EXAMINE" }
# A tetrahedron, with a color at each vertex:Transform {translation 1.5 -1.5 0children Shape {appearance Appearance { material Material { } }geometry IndexedFaceSet {coord Coordinate {point [1 1 1, 1 -1 -1, -1 1 -1, -1 -1 1]
}coordIndex [3 2 1 -1, 2 3 0 -1,
1 0 3 -1, 0 1 2 -1]color Color { # Four colors:color [ 0 1 0, 1 1 1, 0 0 1, 1 0 0 ]
}}
}}
23
Alberto Raposo – PUC-Rio
geometry IndexedFaceSet {coord Coordinate {point [ # Coords/indices derived from "Jim Blinn's Corner"1 1 1, 1 1 -1, 1 -1 1, 1 -1 -1,-1 1 1, -1 1 -1, -1 -1 1, -1 -1 -1,.618 1.618 0, -.618 1.618 0, .618 -1.618 0, -.618 -1.618 0,1.618 0 .618, 1.618 0 -.618, -1.618 0 .618, -1.618 0 -.618,0 .618 1.618, 0 -.618 1.618, 0 .618 -1.618, 0 -.618 -1.618
]}coordIndex [1 8 0 12 13 -1, 4 9 5 15 14 -1, 2 10 3 13 12 -1,7 11 6 14 15 -1, 2 12 0 16 17 -1, 1 13 3 19 18 -1,4 14 6 17 16 -1, 7 15 5 18 19 -1, 4 16 0 8 9 -1,2 17 6 11 10 -1, 1 18 5 9 8 -1,7 19 3 10 11 -1,
]}
Alberto Raposo – PUC-Rio
color Color { # Six colors:color [ 0 0 1, 0 1 0, 0 1 1, 1 0 0, 1 0 1, 1 1 0 ]
}colorPerVertex FALSE # Applied to faces, not vertices# This indexing gives a nice symmetric appearance:colorIndex [ 0, 1, 1, 0, 2, 3, 3, 2, 4, 5, 5, 4 ]
24
Alberto Raposo – PUC-Rio
VRML - Tipos de Nós (9)
• Geométricos– PointSet– Text– Contour2D– Polyline2D– Extrusion– TrimmedSurface– NurbsCurve / NurbsSurface– ElevationGrid / GeoElevationGrid
Alberto Raposo – PUC-Rio
VRML - Tipos de Nós (10)
• Aparência– Define propriedades visuais das figuras geométricas– Exemplo
• Appearance: Appearance {
material NULLtexture NULLtextureTransform NULL
}
25
Alberto Raposo – PUC-Rio
VRML - Tipos de Nós (11)
• Câmera– Define ponto de vista do usuário (posição e
orientação da câmera) – Exemplo
• Viewpoint: Viewpoint {
fieldOfView 0.785398orientation 0 0 1 0position 0 0 10(...) }
Alberto Raposo – PUC-Rio
VRML - Tipos de Nós (12)
• Iluminação– Exemplos
• PointLight: define uma fonte de luz pontual, iluminandoigualmente todas as direções, localizada em um pontofixo do espaço
• DirectionalLight: fonte direcional, com raios paralelos• SpotLight: cone direcional de iluminação
26
Alberto Raposo – PUC-Rio
VRML - Tipos de Nós (13)
• Iluminação– Exemplos (cont.)
• SpotLightSpotLight {color 1 1 1location 0 0 0direction 0 0 -1radius 100cutOffAngle 0.785398beamWidth 1.570796on TRUE (...) }
Alberto Raposo – PUC-Rio
VRML - Tipos de Nós (14)
• Sensores
• Interpoladores
• Script
27
Alberto Raposo – PUC-Rio
VRML - Exemplo 1 (1)#VRML V2.0 utf8
Viewpoint {position 0 1 10orientation 1 0 0 -0.24fieldOfView 0.785398 }
PointLight{location 0 10 0 }
#Caixa vermelhaTransform {
translation 2 0 0children [
Shape {geometry Box { size .5 1 1 }appearance Appearance {
material Material {diffuseColor 1 0 0 }
}}
] }
#Esfera amarelaTransform {
translation -2 0 0children [
Shape {geometry Sphere { radius 0.7 }appearance Appearance {
material Material {diffuseColor 1 1 0 }
}} ] }
# TextoTransform {translation 0 -4 0children [
Shape {geometry Text {
string [" teste "]fontStyle FontStyle {
style "ITALIC"justify "MIDDLE" }
length [6]maxExtent 10 }
} ] }
Alberto Raposo – PUC-Rio
VRML - Exemplo 1 (2)Visualização do exemplo anterior
28
Alberto Raposo – PUC-Rio
VRML - Exemplo 1 (3)
ViewpointViewpoint PointLightPointLight TransformTransform TransformTransformTransformTransform
ShapeShape ShapeShape ShapeShape
TextText
FontStyleFontStyle
AppearanceAppearanceSphereSphere
MaterialMaterial
AppearanceAppearance
MaterialMaterial
BoxBox
Grafo do exemplo anterior
Alberto Raposo – PUC-Rio
VRML - Reuso de Nós• Atribuindo-se um nome a um nó (DEF),
pode-se futuramente referenciá-lo por estenome (USE)
• ExemploDEF Cone_Verde {
geometry Cone {}appearance Appearance {
material Material { diffuseColor 0 1 0 }}
}(...)USE Cone_Verde
29
Alberto Raposo – PUC-Rio
VRML - Exemplo 2 (1)
#VRML V2.0 utf8
Viewpoint {position 0 0 10 }
PointLight{location 0 0 2ambientIntensity 0attenuation 1 0 0 color 1 1 1intensity 0.2on TRUEradius 20 }
#Cone verdeTransform {
children [DEF Cone_Verde Shape {
geometry Cone { }appearance Appearance {
material Material {diffuseColor 0 1 0 }}
}
#Reutilização do ConeTransform {
translation 2 0 3children USE Cone_Verde}
]}
Alberto Raposo – PUC-Rio
VRML - Exemplo 2 (2)Visualização do exemplo anterior
30
Alberto Raposo – PUC-Rio
VRML – Nó Script (1)
EventoProgramaexterno
(processamentodo evento)
Evento(alterando estado do mundo VRML)
NóScript
Alberto Raposo – PUC-Rio
VRML - EAI (External Authoring Interface) (1)
mundoVRML
appletJava
EAI
EAI é uma inteface para pemitir que ambientes externos acessem nós de uma cena VRML
31
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 (1)
<?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”>]>
32
Alberto Raposo – PUC-Rio
X3D - Exemplo de Código (2)
<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
X3D – H-Anim – Exemplohttp://www.web3d.org/x3d/content/examples/HumanoidAnimation/NancyDiving.wrl
33
Alberto Raposo – PUC-Rio
Informações Adicionais• The Annotated VRML 97 Reference:
http://accad.osu.edu/~pgerstma/class/vnv/resources/info/AnnotatedVrmlRef/Book.html
• Web3D Consortium: http://www.web3d.org/• Cortona:
http://www.parallelgraphics.com/products/cortona/• OpenGL Performer:
http://www.sgi.com/software/performer/• OpenSceneGraph:
http://openscenegraph.sourceforge.net/
Alberto Raposo – PUC-Rio
POVRAY vs VRML
• POVRAY:– Imagem– Foto-realismo
• VRML:– Interação / Animação– Tempo-real