A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

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

Apresentações semelhantes


Apresentação em tema: "VRML - A INTERNET EM 3D VRML: Virtual Reality Modeling Language Alexandre Cardoso."— Transcrição da apresentação:

1

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

3 VRML - A Internet em 3D n Introdução n Geometria n Animação n Iluminação n Elementos Complementares n Conclusão n Espaço Aberto

4 Introdução - o nascimento: n 1994: Mark Pesce e Brian Behlendorf imaginam a possibilidade de desenvolvimento de interface aberta, gratuita, virtual, tridimensional, com multimídia animada e interativa n VRML Geometria n VRML Comportamento - Agosto/96

5 Introdução - Por que a emoção? n 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; n 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 n Enfim, a meta final é construir ciberespaços.

6 Introdução n Arquivo VRML = arquivo texto -.wrl n cabeçalho: #VRML V2.0 utf8 n O arquivo texto será uma seqüência de nós que conterá a descrição de objetos. n 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.

7 O arranjo básico: # VRML V2.0 utf8 Group{ children [ nó e campos.... ] }

8 Geometria: Nós fundamentais: n 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 }

9 Observações importantes: n Há geometrias pré-definidas primitivas, tais como box, cylinder, cone e geometrias avançadas, tais como extrudedShapes, elevationGrids etc... n Uma forma de definir um objeto em VRML consiste em usar a seguinte linha de comando: DEF meu_cilindro Cylinder {... } n 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 n 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

10 Exemplo 1 # VRML V2.0 utf8 Group { children [ Shape{ geometry Cone {} } ] }

11 Primitivas Geométricas: n As formas geométricas básicas: –Box –Cone –Cylinder –Sphere –Text - formatar textos –ElevationGrid –Extrusion –IndexedFaceSet –IndexedLineSet –PointSet

12 O nó appearance: n Estrutura básica: appearance Appearance{ material texture textureTransform } n material n material: define elementos de cor, reflexão de luz e transparência do material da qual o objeto é constituído n texture n texture: define uma imagem, um filme ou cores particulares para os pixel do material que constitui o objeto n textureTransform n textureTransform: define mudanças da textura do material.

13 Textos n Em VRML, textos são definidos pelo nó Text Text{ 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

14 Exemplo2 - forma e aparência: uma estação espacial (?) #VRML V2.0 utf8 Group{ children [ Shape { appearance DEF Cor Appearance { material Material { diffuseColor } } geometry Box { size } }, Shape { appearance USE Cor geometry Sphere { radius 7.0 } },

15 Shape { appearance USE Cor geometry Cylinder { radius 12.5 height 0.5 } }, Shape { appearance USE Cor geometry Cylinder { radius 4.0 height 20.0 } }, Shape { appearance USE Cor geometry Cylinder { radius 3.0 height 30.0 } }, Shape { appearance USE Cor geometry Cylinder { radius 1.0 height 60.0 } ] }

16 Transformações - nó Transform: n 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 n 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 n VRML admite sistemas de coordenadas múltiplos n 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.

17 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 } } 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 children [ Shape { appearance USE Cinza geometry Cone { height 2.0 bottomRadius 2.5 }}]}]}

18 Animações - o dinamismo da forma!!! n VRML permite um grande número de animações, que podem ser disparadas por aproximações e toques. n 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. n 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. n As animações podem ser estendidas também à aparência das formas e não somente à posição da forma.

19 Animações - aspectos básicos: n VRML provê diversas maneiras de descrição de animações. As mais comuns usam os nós: –PositionInterpolator –OrientationInterpolator n O fundamento é a associação de posições chave com tempos chave - de forma fracional. n Um nó importante no processo é o nó de controle de tempos fracionais: o nó TimeSensor: –TimeSensor{ enabled startTime stopTime cycleInterval loop... }

20 Animações - aspectos básicos: n 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 } n 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 }

21 Exemplo de animação: #VRML V2.0 utf8 Group { children [ DEF Cube Transform { children Shape { appearance Appearance { material Material { diffuseColor } } geometry Box { size } } }, # Relógio da animação - gerando tempos fracionais DEF Clock TimeSensor { cycleInterval 4.0 loop TRUE },

22 # 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 [ , , , , , , , , , , , , ] # Observe a equivalência de quantidade de posições e tempos # chave } ] } ROUTE Clock.fraction_changed TO CubePath.set_fraction ROUTE CubePath.value_changed TO Cube.set_translation

23 Animações: sentindo ações do usuário n Em VRML há a possibilidade de sentir o toque, a aproximação e os movimentos do usuário, através do mouse, claro. n O conjunto de nós utilizados para este fim é constituído por: –Nó TouchSensor –Nó CylinderSensor –Nó SphereSensor –Nó PlaneSensor n Tais nós podem ser incluídos em qualquer grupo e com rotas, podem disparar animações

24 n As ações do usuário podem promover movimentos diversos: n TouchSensor n TouchSensor: sentir ações do tipo “click” e “drag” n PlaneSensor n PlaneSensor: 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 n SphereSensor n SphereSensor: 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 n CylinderSensor n CylinderSensor: 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

25 Exemplo de animação n 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 n 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. n Aqui, um texto é animado, mas, poderíamos fazer isto com qualquer forma do meu cenário. n Observe que as rotas de mudanças devem ser expressamente declaradas.

26 #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 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 transparency 0.5 } } geometry Box { size } } ]},

27 # 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 [ , , ] } ] } 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

28 Animações - animando formas com tempos diferentes e mudando posições: n É possível definir tempos diferentes para formas diferentes, gerando aspectos de movimentos diferenciados dentro do cenário –ex5.wrl n Uma forma de movimento de rotação, a partir de movimentação do mouse é definida por SphereSensor –ex6.wrl n é 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

29 Iluminação - efeitos importantes: n VRML trabalha com diferentes formas de fontes de luz: fontes puntuais, fontes direcionais e fontes do tipo spot n Nós básicos: –PointLight –DirectionalLight –SpotLight n Pode-se alterar as condições de atenuação destas fontes, interação com a luz ambiente, cor, posição, entre outros campos n A boa associação destes nós produz efeitos realísticos na cena.

30 n Exemplo: luz em cena: n 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 n 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 n 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

31 n 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 direction color ambientIntensity 0.80 radius 12.0 }, Inline { url "spheres.wrl" bboxCenter bboxSize }, DEF Toque TouchSensor { } ] } ROUTE Toque.isOver TO Luz.set_on

32 Elementos complementares: formas geométricas n As formas geométricas podem também serem definidas por curvas suaves, conjuntos de faces indexadas, grades de elevação, extrusões etc... n 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

33 n 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

34 –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

35 Elementos complementares: Aparência: n 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 }} geometry Box { }}

36 n As texturas podem sofrer animação e dar efeitos mais realísticos às formas –ventilador.wrl –ventilador2.wrl n 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"}}

37 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 }

38 # 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 } ] } n O efeito é uma latinha com aparência bem realística.

39 Elementos complementares: fundos n A composição de cenas ganha mais realismo com a adição de fundos - backgrounds n Tais adições geram uma esfera infinitamente larga, posta em torno do mundo n o nó básico: Background n exemplo –estrela2.wrl

40 Elementos complementares: atmosfera n A adição de atmosferas permite –condições de simulação de dias nublados –visibilidades diferenciadas – alteração de cores da cena final n O nó básico: Fog - neblina Fog { color visibilityRange distância do examinador fogType “Linear” set_bind - retirar ou colocar o efeito - eventIn bind_changed } atmosfera.wrl

41 Elementos complementares: sons n A adição de sons é permitida de forma a criar realismo a eventos ou a cenas em VRML. n 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” }

42 Complementos: detalhamento n É possível controlar o nível de detalhamento das formas dentro do cenário, agrupando-as no nó LOD n Tal nível de detalhamento estará relacionado com a distância dos objetos ao observador n 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

43 Conclusões n VRML é uma linguagem independente de plataformas e que permite a criação de cenários 3D interativos n A linguagem tem algumas geometrias pré- definidas e suporta transformações diversas n VRML suporta bem elementos de multimídia, tais como sons, filmes etc n VRML é de fácil manuseio e seus arquivos são da forma textual - geralmente pequenos em relação ao efeito que produzem.


Carregar ppt "VRML - A INTERNET EM 3D VRML: Virtual Reality Modeling Language Alexandre Cardoso."

Apresentações semelhantes


Anúncios Google