vrml - a internet em 3d vrml: virtual reality modeling language alexandre cardoso

42
VRML - A INTERNET EM 3D VRML: Virtual Reality Modeling Language Alexandre Cardoso

Upload: internet

Post on 18-Apr-2015

125 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: VRML - A INTERNET EM 3D VRML: Virtual Reality Modeling Language Alexandre Cardoso

VRML - A INTERNET EM 3D

VRML: Virtual Reality Modeling Language

Alexandre Cardoso

Page 2: VRML - A INTERNET EM 3D VRML: Virtual Reality Modeling Language Alexandre Cardoso

VRML - A Internet em 3D

Introdução Geometria Animação Iluminação Elementos Complementares Conclusão Espaço Aberto

Page 3: VRML - A INTERNET EM 3D VRML: Virtual Reality Modeling Language Alexandre Cardoso

Introdução - o nascimento:

1994: Mark Pesce e Brian Behlendorf imaginam a possibilidade de desenvolvimento de interface aberta, gratuita, virtual, tridimensional, com multimídia animada e interativa

VRML 1.0 - Geometria VRML 2.0 - Comportamento -

Agosto/96

Page 4: VRML - A INTERNET EM 3D VRML: Virtual Reality Modeling Language Alexandre Cardoso

Introdução - Por que a emoção?

VMRL tem o potencial de permitir um novo tipo de aplicações - baseadas na WEB com simulação distribuída, multiusuário, grupos de discussão em tempo real e até mesmo reuniões tridimensionais;

Tais aplicações são o resultado de 3 importantes fatores:– conectividade em rede– interação multiusuário– interface com o usuário baseada em modelagem multimídia

tridimensional - 3D

Enfim, a meta final é construir ciberespaços.

Page 5: VRML - A INTERNET EM 3D VRML: Virtual Reality Modeling Language Alexandre Cardoso

Introdução Arquivo VRML = arquivo texto - .wrl cabeçalho: #VRML V2.0 utf8 O arquivo texto será uma seqüência de nós

que conterá a descrição de objetos. Um nó pode:

– conter outro nó - ter um filho - ex: Group– ter um conjunto de campos, que contém

informações sobre o elemento e que podem estar escritos em qualquer ordem.

Page 6: VRML - A INTERNET EM 3D VRML: Virtual Reality Modeling Language Alexandre Cardoso

O arranjo básico:

# VRML V2.0 utf8

Group{

children [

nó e campos ....nó e campos ....

]

}

Page 7: VRML - A INTERNET EM 3D VRML: Virtual Reality Modeling Language Alexandre Cardoso

Geometria: Nós fundamentais: O Nó Shape - forma:

– Este nó contém 2 campos: o campo appearance e o campo geometry que serão arranjados basicamente:

• Shape {

appearance NULL - define material e textura

geometry NULL - define a geometria do objeto

}

O campo geometry:– Este campo contém valores que descrevem uma dada

geometria:

Cone {

bottomRadius 1

height 2

}

Page 8: VRML - A INTERNET EM 3D VRML: Virtual Reality Modeling Language Alexandre Cardoso

Observações importantes: Há geometrias pré-definidas primitivas, tais como box, cylinder,

cone e geometrias avançadas, tais como extrudedShapes, elevationGrids etc...

Uma forma de definir um objeto em VRML consiste em usar a seguinte linha de comando:

DEF meu_cilindro Cylinder { ... } Na primeira definição, o objeto é criado e pode ser usado a

partir daí pela utilização de seu nome - instância. Cada mudança no objeto original afeta todas as instâncias. O reuso de um nó previamente definido é feito pela linha de comando:

USE meu_cilindro O agrupamento de formas pode definir formas mais complexas,

através do uso do nó Group ou do nó Transform - caracterizando a noção de nó parent e nó children

Page 9: VRML - A INTERNET EM 3D VRML: Virtual Reality Modeling Language Alexandre Cardoso

Exemplo 1# VRML V2.0 utf8

Group {

children [

Shape{

geometry Cone {}

}

]

}

Page 10: VRML - A INTERNET EM 3D VRML: Virtual Reality Modeling Language Alexandre Cardoso

Primitivas Geométricas: As formas geométricas básicas:

– Box – Cone– Cylinder– Sphere– Text - formatar textos – ElevationGrid – Extrusion– IndexedFaceSet– IndexedLineSet– PointSet

Page 11: VRML - A INTERNET EM 3D VRML: Virtual Reality Modeling Language Alexandre Cardoso

O nó appearance: Estrutura básica:

appearance Appearance{

material

texture

textureTransform

} materialmaterial: define elementos de cor, reflexão de luz e

transparência do material da qual o objeto é constituído texturetexture: define uma imagem, um filme ou cores particulares

para os pixel do material que constitui o objeto textureTransformtextureTransform: define mudanças da textura do material.

Page 12: VRML - A INTERNET EM 3D VRML: Virtual Reality Modeling Language Alexandre Cardoso

Textos Em VRML, textos são definidos pelo nó

TextText{

fontStyle - estilo da fonte

length[ ] - comprimento do texto

maxExtent - máxima extensão do texto

string [ ] - o texto em si - “meu texto” - entre aspas

}Obs: há grande variedade de estilos de fontes definidos em

FontStyle, onde também se faz a definição da linguagem que será usada - Português é dado no campo language por pt

Page 13: VRML - A INTERNET EM 3D VRML: Virtual Reality Modeling Language Alexandre Cardoso

Exemplo2 - forma e aparência: uma estação espacial (?)

#VRML V2.0 utf8

Group{

children [

Shape {

appearance DEF Cor Appearance {

material Material {

diffuseColor 0.0 1.0 1.0 }

}

geometry Box {

size 10.0 10.0 10.0

}

},

Shape {

appearance USE Cor

geometry Sphere {

radius 7.0

}

},

Page 14: VRML - A INTERNET EM 3D VRML: Virtual Reality Modeling Language Alexandre Cardoso

Shape {appearance USE Corgeometry Cylinder {

radius 12.5height 0.5

}},Shape {

appearance USE Corgeometry Cylinder {

radius 4.0height 20.0

}},Shape {

appearance USE Corgeometry Cylinder {

radius 3.0height 30.0

}},Shape {

appearance USE Corgeometry Cylinder {

radius 1.0height 60.0

}}

]}

Page 15: VRML - A INTERNET EM 3D VRML: Virtual Reality Modeling Language Alexandre Cardoso

Transformações - nó Transform:

O nó Transform possibilita as transformações geométricas necessárias, é um nó similar ao nó Group e também contém uma lista de nós filhos

Com este nó pode-se modificar a posição dos elementos e prover as condições básicas para animações, que dependem da movimentação de elementos num dado cenário

VRML admite sistemas de coordenadas múltiplos Um arquivo VRML pode conter uma série de nós Transform,

com diversos sistemas de coordenadas... É possível também definir eixos específicos de rotação de elementos e é claro, ângulos de rotação para cada movimento desejado.

Page 16: VRML - A INTERNET EM 3D VRML: Virtual Reality Modeling Language Alexandre Cardoso

Exemplo3: usando transformações:#VRML V2.0 utf8

#UMA CHAMINÉ CONSTRUÍDA COM PRIMITIVAS E TRANSLAÇÃO DE FORMAS

Group {

children [

Shape {

appearance DEF Cinza Appearance {

material Material {

diffuseColor 0.8 0.8 0.8}

}

geometry Cylinder {

height 2.0

radius 2.0

}

}, # Aqui o uso do nó Transform para possibilitar a translação de um cone

# e visualizar a parte superior da chaminé.

Transform {

translation 0.0 2.0 0.0

children [

Shape {

appearance USE Cinza

geometry Cone {

height 2.0

bottomRadius 2.5

}}]}]}

Page 17: VRML - A INTERNET EM 3D VRML: Virtual Reality Modeling Language Alexandre Cardoso

Animações - o dinamismo da forma!!!

VRML permite um grande número de animações, que podem ser disparadas por aproximações e toques.

Tais animações fazem as formas se movimentarem baseadas num dado tempo, que, é controlado por um relógio com tempos fracionados em números reais.

As frações de tempo devem ser associadas a quadros que contêm as posições chaves da animação, dando a noção de movimento da forma.

As animações podem ser estendidas também à aparência das formas e não somente à posição da forma.

Page 18: VRML - A INTERNET EM 3D VRML: Virtual Reality Modeling Language Alexandre Cardoso

Animações - aspectos básicos:

VRML provê diversas maneiras de descrição de animações. As mais comuns usam os nós:– PositionInterpolator– OrientationInterpolator

O fundamento é a associação de posições chave com tempos chave - de forma fracional.

Um nó importante no processo é o nó de controle de tempos fracionais: o nó TimeSensor:– TimeSensor{

enabled

startTime

stopTime

cycleInterval

loop ... }

Page 19: VRML - A INTERNET EM 3D VRML: Virtual Reality Modeling Language Alexandre Cardoso

Animações - aspectos básicos: Sintaxe do nó PositionInterpolator:

– PositionInterpolator{

key [ ... ] - lista de tempos fracionais chave

keyValue [ ... ] - lista de posições chave - cada uma composta por X,Y,Z

set_fraction - eventIn

value_Changed - eventOut

}

Sintaxe do nó OrientationInterpolator:– OrientationInterpolator

key [ ... ]

keyValue [ ... ] - lista de rotações chave - cada uma composta p

por X,Y,Z e um ângulo de rotação.

set_fraction

value_Changed }

Page 20: VRML - A INTERNET EM 3D VRML: Virtual Reality Modeling Language Alexandre Cardoso

Exemplo de animação:#VRML V2.0 utf8

Group {

children [

DEF Cube Transform {

children Shape {

appearance Appearance {

material Material {

diffuseColor 0.0 1.0 0.0 }

}

geometry Box { size 1.0 1.0 1.0 }

}

},

# Relógio da animação - gerando tempos fracionais

DEF Clock TimeSensor {

cycleInterval 4.0

loop TRUE

},

Page 21: VRML - A INTERNET EM 3D VRML: Virtual Reality Modeling Language Alexandre Cardoso

# Caminho da animação do cubo - posições chave e valores de # cada posição

DEF CubePath PositionInterpolator {key [0.00, 0.11, 0.17, 0.22,0.33, 0.44, 0.50, 0.55,0.66, 0.77, 0.83, 0.88,0.99]

keyValue [0.0 0.0 0.0, 1.0 1.96 1.0,1.5 2.21 1.5, 2.0 1.96 2.0,3.0 0.0 3.0, 2.0 1.96 3.0,1.5 2.21 3.0, 1.0 1.96 3.0,0.0 0.0 3.0, 0.0 1.96 2.0,0.0 2.21 1.5, 0.0 1.96 1.0,0.0 0.0 0.0

]# Observe a equivalência de quantidade de posições e tempos # chave

}]

}ROUTE Clock.fraction_changed TO CubePath.set_fractionROUTE CubePath.value_changed TO Cube.set_translation

Page 22: VRML - A INTERNET EM 3D VRML: Virtual Reality Modeling Language Alexandre Cardoso

Animações: sentindo ações do usuário Em VRML há a possibilidade de sentir o

toque, a aproximação e os movimentos do usuário, através do mouse, claro.

O conjunto de nós utilizados para este fim é constituído por:– Nó TouchSensor – Nó CylinderSensor– Nó SphereSensor– Nó PlaneSensor

Tais nós podem ser incluídos em qualquer grupo e com rotas, podem disparar animações

Page 23: VRML - A INTERNET EM 3D VRML: Virtual Reality Modeling Language Alexandre Cardoso

As ações do usuário podem promover movimentos diversos:

TouchSensorTouchSensor: sentir ações do tipo “click” e “drag” PlaneSensorPlaneSensor: sensível às ações do tipo “drag”,

serve para computar distâncias de translação, gerando mudanças de posição das formas - usado para arrastar as formas através do cenário

SphereSensorSphereSensor: sensível às ações do tipo “drag” - computa eixos de rotação e ângulos, com saídas que podem gerar rotações de formas

CylinderSensorCylinderSensor: também sensível às ações do tipo “drag”, capaz de produzir também rotações das formas, como, por exemplo, abrir uma porta, já que possibilita definir um máximo e um mínimo

Page 24: VRML - A INTERNET EM 3D VRML: Virtual Reality Modeling Language Alexandre Cardoso

Exemplo de animação Este exemplo mostra um nome em animação,

disparado por um sensor de toque - a delimitação de posições - inicial e final, se dá por meio do nó OrientationInterpolator, associado ao disparo feito pelo nó TouchSensor

O nome pode ser arrastado, usando o nó PlaneSensor, que com o movimento do mouse, leva o mesmo para a posição que desejarmos na tela.

Aqui, um texto é animado, mas, poderíamos fazer isto com qualquer forma do meu cenário.

Observe que as rotas de mudanças devem ser expressamente declaradas.

Page 25: VRML - A INTERNET EM 3D VRML: Virtual Reality Modeling Language Alexandre Cardoso

#VRML V2.0 utf8

# Aqui um nome gira com o toque do mouse... basta pressionar o botão esq.

# do mouse para o movimento acontecer... Reparar na transparência do chão

# nas cores das letras e no toque.

Group {

children [

# Rotating Nome

DEF Nome Transform {

#translation -5.0 0.0 0.0

children [

Shape {

appearance DEF White Appearance {

material Material { }

}

geometry Text {

string ["Alexandre", "Cardoso"]

fontStyle DEF Fonte FontStyle{

size 0.9

style "BOLD"

family "SANS"

justify "MIDDLE" } } },

Shape { appearance Appearance { material Material {

diffuseColor 0.0 1.0 1.0

transparency 0.5 } }

geometry Box {

size 3.7 0.05 2.0 } } ] },

Page 26: VRML - A INTERNET EM 3D VRML: Virtual Reality Modeling Language Alexandre Cardoso

# Sensor

DEF Touch TouchSensor { },

DEF Arrasta PlaneSensor { },

# Animation clock

DEF Clock TimeSensor { cycleInterval 5.0

loop FALSE},

# Animation path

DEF CubePath OrientationInterpolator {

key [ 0.0, 0.50, 1.0 ]

keyValue [

0.0 1.0 0.0 0.0,

0.0 1.0 0.0 -3.14,

0.0 1.0 0.0 -6.28

]

}

]

}

ROUTE Touch.touchTime TO Clock.set_startTime

ROUTE Clock.fraction_changed TO CubePath.set_fraction

ROUTE CubePath.value_changed TO Nome.set_rotation

ROUTE Arrasta.translation_changed TO Nome.set_translation

Page 27: VRML - A INTERNET EM 3D VRML: Virtual Reality Modeling Language Alexandre Cardoso

Animações - animando formas com tempos diferentes e mudando posições:

É possível definir tempos diferentes para formas diferentes, gerando aspectos de movimentos diferenciados dentro do cenário– ex5.wrl

Uma forma de movimento de rotação, a partir de movimentação do mouse é definida por SphereSensor – ex6.wrl

é possível também utilizar múltiplos sensores, situados em diferentes grupos - neste caso, a ação que prevalece é a do sensor que está mais próximo– ex7.wrl

Page 28: VRML - A INTERNET EM 3D VRML: Virtual Reality Modeling Language Alexandre Cardoso

Iluminação - efeitos importantes:

VRML trabalha com diferentes formas de fontes de luz: fontes puntuais, fontes direcionais e fontes do tipo spot

Nós básicos:– PointLight– DirectionalLight– SpotLight

Pode-se alterar as condições de atenuação destas fontes, interação com a luz ambiente, cor, posição, entre outros campos

A boa associação destes nós produz efeitos realísticos na cena.

Page 29: VRML - A INTERNET EM 3D VRML: Virtual Reality Modeling Language Alexandre Cardoso

Exemplo: luz em cena: usando o nó PointLight, pode-se colocar uma fonte

de luz no centro de um dado conjunto de esferas, gerando um efeito interessante– luz1.wrl

usando o nó SpotLight, um spot pode ser colocado - este nó permite a definição do ângulo de abertura da fonte de luz– luz3.wrl

usando o nó DirectionalLight, uma iluminação direcional, vinda de uma posição muito distante, num eixo previamente determinado, gera um efeito de fonte de luz extensa, tal como o sol– luz4.wrl

Page 30: VRML - A INTERNET EM 3D VRML: Virtual Reality Modeling Language Alexandre Cardoso

Código do exemplo de iluminação - discussão:#VRML V2.0 utf8

# este programa tem um conjunto de esferas, que com a aproximação do sensor

# é iluminado por luz azul esverdeada.

Group {

children [

DEF Luz SpotLight {

on FALSE

location 0.0 0.0 0.0

direction 1.0 0.0 0.0

color 0.0 1.0 1.0

ambientIntensity 0.80

radius 12.0

},

Inline {

url "spheres.wrl"

bboxCenter 0.0 0.0 0.0

bboxSize 16.0 16.0 1.0

},

DEF Toque TouchSensor { }

]

}

ROUTE Toque.isOver TO Luz.set_on

Page 31: VRML - A INTERNET EM 3D VRML: Virtual Reality Modeling Language Alexandre Cardoso

Elementos complementares: formas geométricas As formas geométricas podem também serem

definidas por curvas suaves, conjuntos de faces indexadas, grades de elevação, extrusões etc...

Para prover tais formas, VRML dispõe dos seguintes nós básicos:– PointSet - para definir conjuntos de pontos– IndexedFaceSet - para definir conjunto de faces indexadas,

muito útil para definições de superfícies específicas – ElevationGrid - para gerar aspectos de terrenos, usando

grades constituídas por uma série de pontos em X e Z, tal como um tabuleiro de xadrez e que podem ter uma dada elevação

– Extrusion - para definir extrusões

Page 32: VRML - A INTERNET EM 3D VRML: Virtual Reality Modeling Language Alexandre Cardoso

Exemplos - concebendo formas geométricas mais complexas:

– gerando um cubo - linhas - modelo de arame, usando o nó IndexedFaceSet:

– ex8.wrl

– gerando o mesmo cubo, mas, por um conjunto de faces, definindo superfícies específicas para cada uma das faces:

– ex9.wrl

– animando o cubo do exemplo anterior, podemos ter uma forma que se movimenta, baseada em faces que mudam de tamanho

– ex10.wrl

Page 33: VRML - A INTERNET EM 3D VRML: Virtual Reality Modeling Language Alexandre Cardoso

– Podemos elaborar o modelo de uma montanha, usando o nó ElevationGrid - ainda não se comenta aqui a texturização da cena:

– ex11.wrl

– A construção de superfícies mais suaves pode se dar com a combinação de uma grade com elevações positivas e negativas

– ex.12.wrl

– finalmente, para mostrar a concepção de um medalhão, como uma forma pouco comum, podemos usar uma associação de diversas grades elevadas e unidas - aqui um total de 12 grades, como a anterior foram unidas:

– ex.13.wrl

Page 34: VRML - A INTERNET EM 3D VRML: Virtual Reality Modeling Language Alexandre Cardoso

Elementos complementares: Aparência: O nó appearance tem campos importantes na

definição da aparência final da forma e que podem incluir a texturização da mesma:– ex14.wrl

#VRML V2.0 utf8

# aqui, uma caixa recebe a textura de uma parede de tijolos:

Shape {

appearance Appearance {

material Material { }

texture ImageTexture {

url "brick.jpg"

}

textureTransform TextureTransform {

scale 3.0 3.0 }}

geometry Box { }}

Page 35: VRML - A INTERNET EM 3D VRML: Virtual Reality Modeling Language Alexandre Cardoso

As texturas podem sofrer animação e dar efeitos mais realísticos às formas– ventilador.wrl

– ventilador2.wrl

uma forma qualquer pode receber diferentes texturas, criando formas 3D mais próximas das formas naturais dos corpos– latinha.wrl

#VRML V2.0 utf8

Group {

children [

# parte superior da lata - usa uma textura específica:

Shape {

appearance Appearance {

material Material { }

texture ImageTexture {

url "cantop.jpg"}}

Page 36: VRML - A INTERNET EM 3D VRML: Virtual Reality Modeling Language Alexandre Cardoso

geometry Cylinder {

bottom FALSE

side FALSE

height 2.7

}

}

# parte inferior da lata - usa outra textura:

Shape {

appearance Appearance {

material Material { }

texture ImageTexture {

url "canbot.jpg"

}

}

geometry Cylinder {

top FALSE

side FALSE

height 2.7

}

}

Page 37: VRML - A INTERNET EM 3D VRML: Virtual Reality Modeling Language Alexandre Cardoso

# envolvendo o cilindro com uma textura, temos a forma final da lata:

Shape {

appearance Appearance {

material Material { }

texture ImageTexture {

url "canlabel.jpg"

}

}

geometry Cylinder {

top FALSE

bottom FALSE

height 2.7

}

}

]

}

O efeito é uma latinha com aparência bem realística.

Page 38: VRML - A INTERNET EM 3D VRML: Virtual Reality Modeling Language Alexandre Cardoso

Elementos complementares: fundos

A composição de cenas ganha mais realismo com a adição de fundos - backgrounds

Tais adições geram uma esfera infinitamente larga, posta em torno do mundo

o nó básico: Background exemplo

– estrela2.wrl

Page 39: VRML - A INTERNET EM 3D VRML: Virtual Reality Modeling Language Alexandre Cardoso

Elementos complementares: atmosfera

A adição de atmosferas permite – condições de simulação de dias nublados– visibilidades diferenciadas – alteração de cores da cena final

O nó básico: Fog - neblinaFog { color 1.0 1.0 1.0

visibilityRange 0.0 - distância do examinador

fogType “Linear”

set_bind - retirar ou colocar o efeito - eventIn

bind_changed }

atmosfera.wrl

Page 40: VRML - A INTERNET EM 3D VRML: Virtual Reality Modeling Language Alexandre Cardoso

Elementos complementares: sons A adição de sons é permitida de forma a criar

realismo a eventos ou a cenas em VRML. O nó básico é o nó Sound, onde pode ser

inserido um AudioClip, como um campo do mesmo: Sound{

....

source AudioClip {

loop TRUE

url “teste.wav”

}

Page 41: VRML - A INTERNET EM 3D VRML: Virtual Reality Modeling Language Alexandre Cardoso

Complementos: detalhamento É possível controlar o nível de detalhamento

das formas dentro do cenário, agrupando-as no nó LOD

Tal nível de detalhamento estará relacionado com a distância dos objetos ao observador

um carro, por exemplo, pode ser representado por um cubo a 1000 unidades de distância, dois cubos a 500 unidades de distância e dois cubos e mais quatro esferas a 200 unidades de distância

• lod2.wrl

Page 42: VRML - A INTERNET EM 3D VRML: Virtual Reality Modeling Language Alexandre Cardoso

Conclusões

VRML é uma linguagem independente de plataformas e que permite a criação de cenários 3D interativos

A linguagem tem algumas geometrias pré-definidas e suporta transformações diversas

VRML suporta bem elementos de multimídia, tais como sons, filmes etc

VRML é de fácil manuseio e seus arquivos são da forma textual - geralmente pequenos em relação ao efeito que produzem.