33
1 Alberto Raposo – PUC-Rio INF 1366 – Computação Gráfica Interativa VRML – Virtual Reality Modeling Language POVRAY – Persistence of Vision Raytracer Alberto B. Raposo [email protected] http://www.tecgraf.puc-rio.br/~abraposo/INF1366 Alberto Raposo – PUC-Rio Computação Gráfica e Áreas Correlatas Imagem digital Modelos processamento de imagens visão computacional computação gráfica (síntese de imagens) modelagem geométrica

Computação Gráfica e Áreas Correlataswebserver2.tecgraf.puc-rio.br/~abraposo/INF1366/2005/02...4 Alberto Raposo – PUC-Rio Arquivo de Entrada - POVRAY • Definição de esfera

  • Upload
    others

  • View
    3

  • Download
    0

Embed Size (px)

Citation preview

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=“&#34;EXAMINE&#34;”/><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