GuiaVRML

50
Guia de Consulta Rápida VRML, Ezequiel R. Zorzal e Luciano F. Silva 1 Guia de Consulta Rápida VRML Ezequiel R. Zorzal (UNIFESP) Luciano F. Silva (UFRR)

description

guia vrml

Transcript of GuiaVRML

Page 1: GuiaVRML

Guia de Consulta Rápida VRML, Ezequiel R. Zorzal e Luciano F. Silva 1

Guia de Consulta Rápida

VRML

Ezequiel R. Zorzal (UNIFESP)

Luciano F. Silva (UFRR)

Page 2: GuiaVRML

Guia de Consulta Rápida VRML, Ezequiel R. Zorzal e Luciano F. Silva 2

Introdução VRML (Virtual Modeling Language) é uma linguagem, independente de plataforma, voltada para modelagem de ambientes tridimensionais de Realidade Virtual. Estes ambientes são interfaces avançadas para aplicações computacionais, onde o usuário pode navegar e interagir, em tempo real, em um ambiente 3D gerado por computador.

A linguagem VRML trabalha com geometrias 3D, transformações geométricas, texturas, iluminação, níveis de detalhe, movimentos, entre outros. Sua sintaxe é descrita por meio de uma série de comandos textuais no formato ASCII que devem ser salvos em arquivos com extensão .wrl. Desse modo, por meio de qualquer processador de textos, um desenvolvedor pode criar ambientes virtuais independente de plataformas, tanto para o desenvolvimento, quanto para a execução.

Este guia evidencia, por meio de definições e exemplos, comandos da linguagem VRML, que permitem a modelagem, animação e interação do usuário nestes ambientes virtuais.

Instalação e visualização Para visualizar, interagir e navegar em ambientes virtuais criados com VRML é necessário utilizar navegadores Web (browsers) que suportem a linguagem, ou, realizar, a instalação de um plug-in compatível para a visualização.

Existem vários plug-ins disponíveis, dentre eles o Cortona, um dos mais utilizados recentemente. Este plug-in, desenvolvido pela Parallel Graphics, pode ser baixando gratuitamente pelo site: http://www.parallelgraphics.com/products/cortona/.

Após a instalação do plug-in o navegador Web, ao ler um arquivo .wrl, irá interpretar a sintaxe a ele imposta gerando o ambiente virtual relacionado.

O fato de ser interpretado por navegadores garante a portabilidade da linguagem. É importante ressaltar que a instalação do plug-in não interfere no funcionamento do sistema, ela apenas atribui a função de interpretar arquivos no formato VRML.

Arquivos VRML Um arquivo VRML se caracteriza por uma série de elementos típicos, como por exemplo, cabeçalho, formas, interpoladores, sensores, scripts, rotas, etc. Sendo que o cabeçalho, composto pela instrução #VRML V2.0 utf8, é obrigatório, e a sua omissão impossibilita o plug-in do navegador de ler o arquivo em questão.

Apesar de iniciar com o símbolo “#”, que determina uma linha comentada, o cabeçalho é de extrema importância, devendo aparecer sempre na primeira linha do arquivo textual.

Os elementos que constituem a linguagem VRML são chamados de nós. A grande diversidade destes nós é uma das principais características e qualidades da linguagem.

São 54 nós predefinidos, incluindo primitivas geométricas, propriedades de aparência, sons e vários tipos de nós para agrupamentos.

Abaixo segue um exemplo do formato de um arquivo .wrl.

Exemplo: #VRML V2.0 utf8 #Comentários - Exemplo de um arquivo VRML Shape {appearance Appearance { material Material { diffuseColor 0 0 1 ambientIntensity 0 shininess 0 emissiveColor 0 0 .14 }

Page 3: GuiaVRML

Guia de Consulta Rápida VRML, Ezequiel R. Zorzal e Luciano F. Silva 3

} geometry Sphere { radius 2 } }

Modelagens geométricas Inicialmente, em qualquer concepção de um ambiente virtual, gera-se suas formas tridimensionais de maneira estática, não atribuindo a elas animações e interações, preocupando-se apenas com a criação e a transformação destas formas.

Shape Permite a criação de formas tridimensionais. No nó Shape são definidos dois atributos essenciais para a geração de uma forma, a sua aparência e a sua geometria. Shape { appearance Appearance { Atributos } geometry Objeto { Atributos } }

Elementos Descrição

Appearance Possibilita a escolha da aparência de uma forma. Geometry Define a geometria da forma.

Appearance

Possibilita a escolha da aparência de uma forma. Sendo que, pode-se optar pelo desenvolvimento do material ou pela utilização de uma textura. Deve ser inserido dentro do nó Shape. appearance Appearance { Elementos }

Elementos Descrição

Material Permite definir cores, escolher a luminosidade, a transparência, etc. Texture Adiciona texturas aos objetos virtuais com figuras de extensão GIF, JPEG, PNG ou vídeos no formato MPEG, AVI e SWF. TextureTransform Permite escalonar, rotacionar e transladar as coordenadas da textura.

Material Permite selecionar a opção de desenvolvimento do material, sendo possível criar cores, escolher a luminosidade, a transparência, etc. Estas funcionalidades são desempenhadas por alguns parâmetros que são usados para determinar a forma como a luz irá refletir sobre os objetos. Deve ser inserido dentro do nó appearance. Se os atributos do nó material não forem definidos, por padrão, os objetos virtuais se apresentarão com a cor branca. appearance Appearance { material Material { ambientIntensity Valor diffuseColor Valor1 Valor2 Valor3 emissiveColor Valor1 Valor2 Valor3 Shininess Valor specularColor Valor1 Valor2 Valor3 transparency Valor } }

Parâmetros Descrição

ambientIntensity Especifica quanto da luz ambiente um objeto deve refletir.

Page 4: GuiaVRML

Guia de Consulta Rápida VRML, Ezequiel R. Zorzal e Luciano F. Silva 4

diffuseColor Define a reflexão da luz que estiver incidindo sobre um objeto. Quanto mais diretamente a luz incidir sobre a superfície do objeto, mais luz será refletida. Este fator é utilizado para dar cores aos objetos, com base no formato RGB (Red, Green, Blue). Ou seja, é preenchido um vetor com três posições, cada uma delas variando de 0 a 1 e representando a quantidade de suas respectivas cores.

emissiveColor Usado para representar objetos incandescentes. Shininess Define o brilho do objeto. specularColor Determina a luminosidade de pontos de reflexão com maior quantidade de luz. transparency Determina o grau de transparência do objeto, que varia de 0.0 (totalmente opaco) a 1.0 (totalmente transparente).

Exemplo: #VRML V2.0 utf8 Shape { appearance Appearance { material Material { diffuseColor 0.32 0.54 0.26 specularColor 0.46 0.46 0.46 ambientIntensity 0.0933 shininess 0.51 transparency 0 emissiveColor 0 0 0 } } geometry Box { size 1 1 1 } }

Esta seqüência de código permite a criação do seguinte objeto.

Figura 1 – Exemplo: material

Texture

Permite cobrir objetos virtuais com figuras de extensão GIF, JPEG, PNG ou vídeos no formato MPEG, AVI e SWF. appearance Appearance { texture Elemento { Parâmetros } }

Elementos Descrição

ImageTexture Permite cobrir objetos virtuais com figuras de extensão GIF, JPEG, PNG. MovieTexture Permite mapear uma textura animada para um objeto. Os formatos suportados são: MPEG, AVI e SWF. PixelTexture Especifica uma imagem, ou atributos de mapeamento da textura.

ImageTexture Permite cobrir objetos virtuais com figuras de extensão GIF, JPEG e PNG. appearance Appearance { texture ImageTexture { repeatS TRUE|FALSE repeatT TRUE|FALSE url "Caminho" } }

Parâmetros Descrição

Page 5: GuiaVRML

Guia de Consulta Rápida VRML, Ezequiel R. Zorzal e Luciano F. Silva 5

repeatS Se o valor for TRUE, a textura é repetida dentro do sistema de coordenadas da textura na vertical, caso contrário se FALSE. repeatT Se o valor for TRUE, a textura é repetida dentro do sistema de coordenadas da textura na horizontal, caso contrário se FALSE. url Especifica o caminho da figura a ser utilizada na textura.

Exemplo #VRML V2.0 utf8 Shape { appearance Appearance { texture ImageTexture { url "Brick.jpg" } } geometry Box { size 1 1 1 } }

Esta seqüência de código permite a criação do seguinte objeto.

Figura 2 – Exemplo: ImageTexture

MovieTexture Permite cobrir objetos virtuais com vídeos de extensão MPEG, AVI e SWF. appearance Appearance { texture MovieTexture { loop TRUE|FALSE repeatS TRUE|FALSE repeatT TRUE|FALSE speed Valor startTime Valor stopTime Valor url "Caminho" } }

Parâmetros Descrição

loop Habilita a repetição do filme se o valor for TRUE. repeatS Se o valor for TRUE, a textura é repetida dentro do sistema de coordenadas da textura na vertical, caso contrário se FALSE. repeatT Se o valor for TRUE, a textura é repetida dentro do sistema de coordenadas da textura na horizontal, caso contrário se FALSE. speed Controla a velocidade de exibição do filme. startTime Determina o tempo de início de reprodução dentro do filme. Valor dado em segundos. stopTime Determina o tempo do final da reprodução dentro do filme. Valor dado em segundos. url Especifica o caminho do vídeo a ser utilizado na textura.

PixelTexture

Especifica uma imagem ou atributos de mapeamento da textura. appearance Appearance { texture PixelTexture { image Valor1 Valor2 Valor3 repeatS TRUE|FALSE repeatT TRUE|FALSE } }

Page 6: GuiaVRML

Guia de Consulta Rápida VRML, Ezequiel R. Zorzal e Luciano F. Silva 6

Parâmetros Descrição

image Determina o tamanho da imagem e valores de pixel para uma textura. repeatS Se o valor for TRUE, a textura é repetida dentro do sistema de coordenadas da textura na vertical, caso contrário se FALSE. repeatT Se o valor for TRUE, a textura é repetida dentro do sistema de coordenadas da textura na horizontal, caso contrário se FALSE.

TextureTransform Permite escalonar, rotacionar e transladar as coordenadas da textura. appearance Appearance { textureTransform TextureTransform { center Valor1 Valor2 rotation Valor scale Valor1 Valor2 translation Valor1 Valor2 } }

Parâmetros Descrição

center Define o centro de translação e rotação. rotation Determina a rotação da textura. scale Determina a escala da textura na imagem. translation Permite a translação da textura.

Geometry Define a geometria da forma, tais como: cones, cilindros, caixas, polígonos, etc. geometry Elemento { Parâmetros }

Elementos Descrição

Box Cria uma caixa. Cone Desenha um cone. Cylinder Cria um cilindro. ElevationGrid Desenha uma elevação com base em uma grade de pontos. Extrusion Cria uma forma por meio de extrusão. IndexedFaceSet Desenha objetos por meio de faces poligonais. IndexedLineSet Cria polígonos por meio de linhas. PointSet Cria pontos no espaço virtual. Sphere Desenha uma esfera. Text Permite escrever um texto.

Box Cria uma caixa. geometry Box { size Valor1 Valor2 Valor3 }

Parâmetro Descrição

Size Vetor de três posições, contendo respectivamente as dimensões da caixa em X, Y e Z.

Exemplo: #VRML V2.0 utf8 Shape { appearance Appearance { material Material { diffuseColor 0 0 0 specularColor 0 .92 1 ambientIntensity 0

Page 7: GuiaVRML

Guia de Consulta Rápida VRML, Ezequiel R. Zorzal e Luciano F. Silva 7

shininess .03 emissiveColor 0 0 1 } } geometry Box { size 1.0 1.0 1.0 } }

Cone Desenha um cone. geometry Cone { bottom TRUE|FALSE bottomRadius Valor height Valor side TRUE|FALSE }

Parâmetros Descrição

bottom Permite desenhar a parte do fundo do cone, caso o valor seja TRUE. bottomRadius Especifica o raio do cone. height Determina a altura do cone. side Desenha a parte lateral do cone.

Exemplo: #VRML V2.0 utf8 Shape { appearance Appearance { material Material { diffuseColor .9 .41 0 ambientIntensity .11 shininess .08 specularColor .1 .1 .1 emissiveColor .1 .04 0 } } geometry Cone { bottom TRUE bottomRadius 2 height 4 side TRUE } }

Esta seqüência de código permite a criação do seguinte objeto.

Figura 3 – Exemplo: Cone

Cylinder

Cria um cilindro. geometry Cylinder { bottom TRUE|FALSE height Valor radius Valor

Page 8: GuiaVRML

Guia de Consulta Rápida VRML, Ezequiel R. Zorzal e Luciano F. Silva 8

side TRUE|FALSE top TRUE|FALSE }

Parâmetros Descrição

bottom Permite desenhar a parte do fundo do cilindro, caso o valor seja TRUE. height Determina a altura do cilindro. radius Especifica o raio do cilindro. side Desenha a parte lateral do cilindro. top Desenha a parte superior do cilindro, caso o valor seja TRUE.

Exemplo: #VRML V2.0 utf8 Shape { appearance Appearance { material Material { diffuseColor 1 .8 0 ambientIntensity 0 shininess 0 emissiveColor .28 .22 0 } } geometry Cylinder { bottom TRUE height 7 radius 2 side TRUE top TRUE } }

Esta seqüência de código permite a criação do seguinte objeto.

Figura 4 – Exemplo: Cylinder

ElevationGrid

Desenha uma elevação com base em uma grade de pontos. geometry ElevationGrid { ccw TRUE|FALSE creaseAngle Valor color Parâmetros colorPerVertex TRUE|FALSE height [Valor1, Valor2, ..., ValorN] normal Parâmetros normalPerVertex TRUE|FALSE solid TRUE|FALSE texCoord Parâmetros xDimension Valor xSpacing Valor zDimension Valor zSpacing Valor }

Parâmetros Descrição

ccw Define se os pontos da malha estão ordenados no sentindo anti-horário, TRUE, ou sentido horário, FALSE. O valor default deste atributo é TRUE.

Page 9: GuiaVRML

Guia de Consulta Rápida VRML, Ezequiel R. Zorzal e Luciano F. Silva 9

creaseAngle Especifica um limiar para o ângulo de encontro entre as faces, caso o ângulo seja maior que o limiar será formada uma quina, caso contrário será forma uma superfície lisa.

color Permite criar uma lista contento a cor de cada face. O seu uso é opcional, por default este nó encontra-se vazio. colorPerVertex Define se as cores criadas para cada face serão aplicadas a cada vértice, causando um o efeito gradiente, TRUE, ou não, FALSE. height Determina uma lista contendo valores que especificam a altura de cada ponto da grade. Estes valores são ordenados de acordo com os

pontos da grade, que são dispostos da direita para esquerda e de cima para baixo. normal Permite especificar por vértice ou por quadrilátero as normais para o nó ElevationGrid. Caso o campo normal seja NULL o browser gera

automaticamente as normais utilizando o campo creaseAngle para determinar a suavização da superfície. normalPerVertex Determina se as normais criadas serão aplicadas a cada vértice, caso o seu valor seja TRUE, ou a cada quadrilátero, no caso de FALSE.

Este campo será ignorado caso o campo normal seja NULL. solid Define um objeto sólido, TRUE, ou um objeto não sólido, FALSE. Esse atributo recebe, por padrão, o valor TRUE. texCoord Permite aplicar texturas por meio de coordenadas, com o uso do nó TextureCoordinate. xDimension Define o número de pontos da grade no eixo X. xSpacing Especifica a distância entre dois pontos adjacentes na direção do eixo X. zDimension Define o número de pontos da grade no eixo Z. zSpacing Especifica a distância entre dois pontos adjacentes na direção do eixo Z.

Exemplo: #VRML V2.0 utf8 Shape { appearance Appearance { material Material { diffuseColor .32 .54 .26 specularColor .46 .46 .46 ambientIntensity .0933 shininess .51 } } geometry ElevationGrid { xDimension 3 zDimension 3 xSpacing 2 zSpacing 2 height [0.5 0.1 0.3 0.2 2.0 0.2 0.3 0.1 0.5] creaseAngle 1 } }

Esta seqüência de código permite a criação do seguinte objeto.

Figura 5 – Exemplo: ElevationGrid

color

Permite criar uma lista contento a cor de cada face. O seu uso é opcional, por default este nó encontra-se vazio. color Color { color [Valor1, Valor2, ..., ValorN] }

Parâmetro Descrição

color Cria uma lista contento a cor de cada face.

Page 10: GuiaVRML

Guia de Consulta Rápida VRML, Ezequiel R. Zorzal e Luciano F. Silva 10

normal Permite especificar por vértice ou por quadrilátero as normais para o nó ElevationGrid. normal Normal { vector [Valor1, Valor2, ..., ValorN] }

Parâmetro Descrição

vector Cria uma lista contento o vetor normal de cada face.

TextureCoordinate Define como uma textura é aplicada ao IndexedFaceSet e ao ElevationGrid por meio de pontos. texCoord TextureCoordinate { point [Valor1, Valor2, ..., ValorN] }

Parâmetro Descrição

point Define as coordenadas (2D) de aplicação de uma textura.

Extrusion Cria formas por meio de extrusão. geometry Extrusion { beginCap TRUE|FALSE ccw TRUE|FALSE convex TRUE|FALSE creaseAngle Valor crossSection [Valor1, Valor2, ..., ValorN] endCap TRUE|FALSE orientation Valor1 Valor2 Valor3 Valor4 scale Valor1 Valor2 solid TRUE|FALSE spine [Valor1, Valor2, ..., ValorN] }

Parâmetros Descrição

beginCap Determina se uma forma é aberta, caso o valor seja TRUE, ou fechada, para o valor FALSE. ccw Define se os pontos da malha estão ordenados no sentindo anti-horário, TRUE, ou sentido horário, FALSE. convex Determina se um objeto será convexo, TRUE, ou côncavo, FALSE. Esse atributo recebe, por padrão, o valor TRUE. creaseAngle Especifica um limiar para o ângulo de encontro entre as faces, caso o ângulo seja maior que o limiar será formada uma quina, caso

contrário será forma uma superfície lisa. crossSection Determina uma secção 2D sobre a qual será aplicada a extrusão. endCap Especifica se uma forma é aberta, TRUE, ou fechada, FALSE.. orientation Define a orientação da extrusão em cada ponto. scale Determina o escalonamento da extrusão em cada ponto. solid Define um objeto sólido, TRUE, ou um objeto não sólido, FALSE. Esse atributo recebe, por padrão, o valor TRUE. spine Especifica um caminho em 3D que será percorrido pela secção.

Exemplo: #VRML V2.0 utf8 Shape { appearance Appearance { material Material { diffuseColor .54 .05 .25 specularColor .81 .77 .75 ambientIntensity .487 shininess .83 } } geometry Extrusion {

Page 11: GuiaVRML

Guia de Consulta Rápida VRML, Ezequiel R. Zorzal e Luciano F. Silva 11

ccw FALSE crossSection [0 0, 1 0, 1 1, 0 1, 0 0] spine [-2 2 0, 0 -1 0, 2 2 0] } }

Esta seqüência de código permite a criação do seguinte objeto.

Figura 6 – Exemplo: Extrusion

IndexedFaceSet

Desenha objetos por meio de faces poligonais. geometry IndexedFaceSet { ccw TRUE|FALSE creaseAngle Valor color Parâmetros colorIndex [Valor1, Valor2, ..., ValorN] colorPerVertex TRUE|FALSE convex TRUE|FALSE coord Parâmetros coordIndex [Valor1, Valor2, ..., ValorN] normal Parâmetros normalIndex [Valor1, Valor2, ..., ValorN] normalPerVertex TRUE|FALSE texCoord Parâmetros solid TRUE|FALSE texCoordIndex [Valor1, Valor2, ..., ValorN] }

Parâmetros Descrição

ccw Define se os pontos da malha estão ordenados no sentindo anti-horário, TRUE, ou sentido horário, FALSE. O valor default deste atributo é TRUE.

creaseAngle Especifica um limiar para o ângulo de encontro entre as faces, caso o ângulo seja maior que o limiar será formada uma quina, caso contrário será forma uma superfície lisa.

color Permite criar uma lista contento a cor de cada face. O seu uso é opcional, por default este nó encontra-se vazio. colorIndex Especifica uma lista contendo os índices das cores que pintam as faces a serem desenhadas. Caso este campo não seja preenchido as

cores serão organizadas de acordo com o coordIndex. colorPerVertex Define se as cores criadas para cada face serão aplicadas a cada vértice, causando um o efeito gradiente, caso o seu valor seja TRUE,

ou a cada face, caso o seu valor seja FALSE. convex Determina se um objeto será convexo, TRUE, ou côncavo, FALSE. Esse atributo recebe, por padrão, o valor TRUE. coord Determina coordenadas 3D por meio de uma malha de pontos, com o uso do nó Coordinate. coordIndex Define uma lista dos índices dos vértices que constituem as faces a serem desenhadas. O valor -1 significa que a face corrente terminou

e a próxima começa. normal Permite especificar por vértice ou por quadrilátero as normais para o nó IndexedFaceSet. Caso o campo normal seja NULL o browser

gera automaticamente as normais utilizando o campo creaseAngle para determinar a suavização da superfície. normalIndex Define uma lista dos índices das normais aplicadas as faces a serem desenhadas. normalPerVertex Determina se as normais criadas serão aplicadas a cada vértice, caso o seu valor seja TRUE, ou a cada quadrilátero, no caso de FALSE.

Este campo será ignorado caso o campo normal seja NULL. solid Define um objeto sólido, TRUE, ou um objeto não sólido, FALSE. Esse atributo recebe, por padrão, o valor TRUE. texCoord Permite aplicar texturas por meio de coordenadas, com o uso do nó TextureCoordinate.

Exemplo: #VRML V2.0 utf8

Page 12: GuiaVRML

Guia de Consulta Rápida VRML, Ezequiel R. Zorzal e Luciano F. Silva 12

Shape { geometry IndexedFaceSet { coord Coordinate { point [ -1 -1 1, 1 -1 1, 1 1 1, -1 1 1, 1 -1 -1, 1 1 -1, -1 1 -1 ] } coordIndex [ 0 1 2 3 -1 2 1 4 5 -1 3 2 5 6 ] convex TRUE ccw TRUE solid FALSE colorPerVertex FALSE color Color { color [ 1 0 0, 0 1 0, 0 0 1 ] } colorIndex [ 0 1 2 ] } }

Esta seqüência de código permite a criação do seguinte objeto.

Figura 7 – Exemplo: IndexedFaceSet

color

Permite criar uma lista contento a cor de cada face. O seu uso é opcional, por default este nó encontra-se vazio. color Color { color [Valor1, Valor2, ..., ValorN] }

Parâmetro Descrição

color Cria uma lista contento a cor de cada face.

Coordinate Define uma malha de pontos 3D. coord Coordinate { point [Valor1, Valor2, ..., ValorN] }

Parâmetro Descrição

point Define as coordenadas (3D) de aplicação de uma textura.

normal Permite especificar por vértice ou por quadrilátero as normais para o nó ElevationGrid.

Page 13: GuiaVRML

Guia de Consulta Rápida VRML, Ezequiel R. Zorzal e Luciano F. Silva 13

normal Normal { vector [Valor1, Valor2, ..., ValorN] }

Parâmetro Descrição

vector Cria uma lista contento o vetor normal de cada face.

TextureCoordinate Define como uma textura é aplicada ao IndexedFaceSet e ao ElevationGrid por meio de pontos. texCoord TextureCoordinate { point [Valor1, Valor2, ..., ValorN] }

Parâmetro Descrição

point Define as coordenada (2D) de aplicação de uma textura.

IndexedLineSet

Cria polígonos por meio de linhas. geometry IndexedLineSet { color Parâmetros colorIndex [Valor1, Valor2, ..., ValorN] colorPerVertex TRUE|FALSE coord Parâmetros coordIndex [Valor1, Valor2, ..., ValorN] }

Parâmetros Descrição

color Permite criar uma lista contento a cor de cada face. O seu uso é opcional, por default este nó encontra-se vazio. colorIndex Especifica uma lista contendo os índices das cores que pintam os lados a serem desenhados. Caso este campo não seja preenchido as

cores serão organizadas de acordo com o coordIndex. colorPerVertex Define se as cores criadas para cada lado serão aplicadas a cada vértice, causando um o efeito gradiente, caso o seu valor seja TRUE,

ou a cada lado, caso o seu valor seja FALSE. coord Permite determina as coordenadas dos pontos, em 3D, pelos quais irá passar a linha, com o uso do nó Coordinate. coordIndex Define uma lista dos índices dos vértices que constituem o polígono a ser desenhado. O valor -1 significa que um lado corrente terminou e

começa o próximo.

Exemplo: #VRML V2.0 utf8 Shape { geometry IndexedLineSet { color Color { color [ 1 0 0, 0 1 0, 0 1 0 ] } colorIndex [ 0 1 2 0 ] colorPerVertex TRUE coord Coordinate { point [ -1 1 0, 1 1 0, -1 -1 0, 1 -1 0 ] } coordIndex [ 0 1 2 3 ] } }

Esta seqüência de código permite a criação do seguinte objeto:

Page 14: GuiaVRML

Guia de Consulta Rápida VRML, Ezequiel R. Zorzal e Luciano F. Silva 14

Figura 8 – Exemplo: IndexedLineSet

color

Permite criar uma lista contento a cor de cada face. O seu uso é opcional, por default este nó encontra-se vazio. color Color { color [Valor1, Valor2, ..., ValorN] }

Parâmetro Descrição

color Cria uma lista contento a cor de cada face.

Coordinate Define uma malha de pontos 3D. coord Coordinate { point [Valor1, Valor2, ..., ValorN] }

Parâmetro Descrição

point Define as coordenadas (3D) de aplicação de uma textura.

PointSet

Cria pontos no espaço virtual. geometry PointSet { color Parâmetros coord Parâmetros }

Parâmetros Descrição

coord Determina as coordenadas do ponto em 3D, por meio do nó Coordinate. color Especifica a cor do ponto. O seu uso é opcional, por default este nó encontra-se vazio.

Exemplo: #VRML V2.0 utf8 Shape { geometry PointSet { color Color { color [ 0 0 1 ] } coord Coordinate { point [ 0 0 0 ] } } }

color

Permite criar uma lista contento a cor de cada face. O seu uso é opcional, por default este nó encontra-se vazio. color Color { color [Valor1, Valor2, ..., ValorN]

Page 15: GuiaVRML

Guia de Consulta Rápida VRML, Ezequiel R. Zorzal e Luciano F. Silva 15

}

Parâmetro Descrição

color Cria uma lista contento a cor de cada face.

Coordinate Define uma malha de pontos 3D. coord Coordinate { point [Valor1, Valor2, ..., ValorN] }

Parâmetro Descrição

point Define as coordenadas (3D) de aplicação de uma textura.

Sphere Desenha uma esfera. geometry Sphere { radius Valor }

Parâmetro Descrição

radius Especifica o raio da esfera.

Exemplo: #VRML V2.0 utf8 Shape { appearance Appearance { material Material { diffuseColor .32 .54 .26 specularColor .46 .46 .46 ambientIntensity .0933 shininess .51 } } geometry Sphere { radius 0.75 } }

Esta seqüência de código permite a criação do seguinte objeto:

Figura 9 – Exemplo: Sphere

Text

Permite escrever um texto. geometry Text { fontStyle Parâmetros length [Valor1, Valor2, ..., ValorN] maxExtent Valor string [Valor1, Valor2, ..., ValorN] }

Parâmetros Descrição

Page 16: GuiaVRML

Guia de Consulta Rápida VRML, Ezequiel R. Zorzal e Luciano F. Silva 16

fontStyle Determina a fonte do texto, ou seja, como o texto será apresentado. length Cria uma lista de valores que especifica o comprimento de cada string. maxExtent Limita o comprimento do campo string. string Define o texto que será exibido pelo browser. Este texto pode aparecer em uma ou mais linhas, sendo que no caso de múltiplas linhas

cada string é impressa em uma linha.

FontStyle Permite determinar a fonte do texto, ou seja, como o texto será apresentado. FontStyle { family "SERIF|SANS|TYPEWRITER" horizontal TRUE|FALSE justify "BEGIN|FIRST|MIDDLE|END" language "Descrição" leftToRight TRUE|FALSE size Valor spacing Valor style "PLAIN|BOLD|ITALIC|BOLDITALIC" topToBottom TRUE|FALSE }

Parâmetros Descrição

family Especifica a família da fonte do texto. Podendo ser “SERIF”, “SANS” ou “TYPEWRITER”. horizontal Define se o texto aparecerá horizontalmente, caso o seu valor seja TRUE, ou verticalmente, caso o seu valor seja FALSE. justify Determina o alinhamento do texto. Podendo ser “FIRST” ou “BEGIN”, alinhamento à esquerda, “MIDDLE”, centralizado, ou “END”,

alinhamento à direita. Por default o texto é alinhado a esquerda. language Especifica um conjunto de caracteres. Por exemplo, “en” para um conjunto de caracteres do idioma inglês, “zh” para um conjunto chinês,

etc. leftToRight Determina se o texto será apresentado da esquerda para a direita, caso o seu valor seja TRUE, ou da direita para a esquerda, caso o seu

valor seja FALSE. size Define o tamanho do caráter. spacing Determina o tamanho do espaçamento entre linhas. style Determina o estilo da fonte do texto. Podendo ser “PLAIN”, “BOLD”, “ITALIC” ou “BOLDITALIC”. topToBottom Define se o texto será apresentado de cima para baixo, caso o seu valor seja TRUE, ou de baixo para cima, caso o seu valor seja FALSE.

Exemplo: #VRML V2.0 utf8 Shape { appearance Appearance { material Material {} } geometry Text { string [ "VRML","Realidade Virtual" ] fontStyle FontStyle { family "SANS" justify "MIDDLE" style "bold" size 0.75 spacing 1.5 } } }

Agrupamentos e suas funcionalidades Um importante artifício da linguagem VRML é permitir o agrupamento de vários nós. Por meio deste agrupamento pode-se, por exemplo, colocar sensores ou aplicar transformações geométricas em um conjunto de objetos ao mesmo tempo, detectar colisões, etc.

Page 17: GuiaVRML

Guia de Consulta Rápida VRML, Ezequiel R. Zorzal e Luciano F. Silva 17

Anchor Permite agrupar um conjunto de objetos aos quais será conectada uma ligação para uma url. Quando um destes objetos é clicado a url será buscada pelo browser. Anchor { bboxCenter Valor1 Valor2 Valor3 bboxSize Valor1 Valor2 Valor3 children [Elementos do Grupo] description "Descrição" parameter "Descrição" url "Caminho" }

Parâmetros Descrição

bboxCenter Especifica o centro de uma caixa que conterá o conjunto de objetos ancorados. O valor deste campo é preenchido por um ponto 3D que por default recebe os valores de 0 0 0.

bboxSize Determina as dimensões da caixa que conterá o conjunto de objetos ancorados. O seu valor default é -1 -1 -1, que indica a inexistência da caixa.

children Define um campo onde devem ser incluídos os objetos a serem ancorados. description Especifica uma descrição textual para o url. Ela aparecerá apenas quando o mouse estiver sobre os objetos ancorados. parameter Permite fornecer informação adicional para o browser, como por exemplo, se a url será aberta em uma nova janela ou não. url Especifica uma string contendo a url a ser buscada pelo browser.

Exemplo: #VRML V2.0 utf8 Anchor { children [ Shape { appearance Appearance { material Material {} } geometry Sphere {} } ] url "http://www.novateceditora.com.br" description "Novatec" parameter ["target=my_frame"] }

Billboard

Permite agrupar nós e escolher o eixo de rotação para o agrupamento. Billboard { axisOfRotation Valor1 Valor2 Valor3 bboxCenter Valor1 Valor2 Valor3 bboxSize Valor1 Valor2 Valor3 children [Elementos do Grupo] }

Parâmetros Descrição

axisOfRotation Especifica um vetor 3D que será usado para a rotação. bboxCenter Especifica o centro de uma caixa que conterá o conjunto de nós agrupados. O valor deste campo é preenchido por um ponto 3D que por

default recebe os valores de 0 0 0. bboxSize Determina as dimensões da caixa que conterá o conjunto de nós. O seu valor default é -1 -1 -1, que indica a inexistência da caixa. children Define um campo onde devem ser incluídos os nós a serem agrupados.

Exemplo: #VRML V2.0 utf8 Billboard { axisOfRotation 1.0 0.0 0.0 children [

Page 18: GuiaVRML

Guia de Consulta Rápida VRML, Ezequiel R. Zorzal e Luciano F. Silva 18

Shape{ appearance Appearance { material Material {} } geometry Cone {} } ] }

Collision Permite agrupar objetos virtuais e detectar colisões entre o usuário e estes objetos. Collision { bboxCenter Valor1 Valor2 Valor3 bboxSize Valor1 Valor2 Valor3 children [Elementos do Grupo] collide TRUE|FALSE proxy Forma }

Parâmetros Descrição

bboxCenter Especifica o centro de uma caixa que conterá o conjunto de objetos agrupados. O valor deste campo é preenchido por um ponto 3D que por default recebe os valores de 0 0 0.

bboxSize Determina as dimensões da caixa que conterá o conjunto de objetos agrupados colisão. O seu valor default é -1 -1 -1, que indica a inexistência da caixa.

children Define um campo onde devem ser incluídos os objetos aos quais será verificada a colisão. collide Especifica se os objetos agrupados serão utilizados para verificação de colisão, TRUE, ou não, FALSE. proxy Permite especificar uma representação geométrica alternativa para verificar a descoberta de colisões. Caso não seja declarada nenhuma

geometria será utilizada uma caixa com as dimensões do usuário.

Exemplo: #VRML V2.0 utf8 DEF Colisao Collision { children [ Sound { source DEF Som AudioClip { loop FALSE pitch 1.0 url "som.wav" } } Shape { appearance Appearance { material Material {} } geometry Sphere {} } ] } ROUTE Colisao.collideTime TO Som.set_startTime

Group Permite agrupar um conjunto de nós. Group { bboxCenter Valor1 Valor2 Valor3 bboxSize Valor1 Valor2 Valor3 children [Elementos do Grupo] }

Parâmetros Descrição

bboxCenter Especifica o centro de uma caixa que conterá o conjunto de nós agrupados. O valor deste campo é preenchido por um ponto 3D que por default recebe os valores de 0 0 0.

bboxSize Determina as dimensões da caixa que conterá o conjunto de nós. O seu valor default é -1 -1 -1, que indica a inexistência da caixa.

Page 19: GuiaVRML

Guia de Consulta Rápida VRML, Ezequiel R. Zorzal e Luciano F. Silva 19

children Define um campo onde devem ser incluídos os nós a serem agrupados.

Exemplo: #VRML V2.0 utf8 Group { children [ Shape { appearance Appearance {} geometry Sphere {} } Shape { appearance Appearance {} geometry Cone {} } ] }

Switch

Permite agrupar objetos e optar se eles irão aparecer no cenário naquele momento ou não. Switch { choice [Elementos do Grupo] whichChoice Valor }

Parâmetros Descrição

choice Define um campo onde devem ser incluídos os objetos a serem agrupados. whichChoice Determina se os objetos agrupados aparecerão, caso seu valor seja 0, ou não, caso seu valor seja -1.

Exemplo: #VRML V2.0 utf8 Switch { whichChoice -1 choice [ Shape { appearance Appearance { material Material {} } geometry Sphere {} } ] }

Transform

Permite agrupar nós e realizar transformações geométricas, como rotação, escalonamento e translação, em um conjunto de objetos virtuais. Transform { bboxCenter Valor1 Valor2 Valor3 bboxSize Valor1 Valor2 Valor3 center Valor1 Valor2 Valor3 children [Elementos do Grupo] rotation Valor1 Valor2 Valor3 Valor4 scale Valor1 Valor2 Valor3 scaleOrientation Valor1 Valor2 Valor3 Valor4 translation Valor1 Valor2 Valor3 }

Parâmetros Descrição

bboxCenter Especifica o centro de uma caixa que conterá o conjunto de nós agrupados. O valor deste campo é preenchido por um ponto 3D que por default recebe os valores de 0 0 0.

bboxSize Determina as dimensões da caixa que conterá o conjunto de nós. O seu valor default é -1 -1 -1, que indica a inexistência da caixa.

Page 20: GuiaVRML

Guia de Consulta Rápida VRML, Ezequiel R. Zorzal e Luciano F. Silva 20

center Especifica um vetor de três posições contendo o centro de rotação e translação do conjunto de nós agrupados. O seu valor default é 0 0 0.

children Define um campo onde devem ser incluídos os nós a serem agrupados. rotation Define um vetor de quatro posições que permite realizar rotações em um grupo de objetos virtuais. As três primeiras posições especificam

o eixo de rotação e a quarta posição contém o valor do ângulo de rotação em radianos. scale Determina um vetor de três posições contendo, respectivamente, os fatores de escalonamento em X,Y e Z, do conjunto de nós

agrupados. scaleOrientation Define um vetor de quatro posições que permite realizar uma rotação dos eixos para a operação de escalonamento. translation Determina um vetor de três posições contendo, respectivamente, a medida da translação em X,Y e Z, a ser realizada no conjunto de nós

agrupados. O seu valor default é 0 0 0.

Exemplo: #VRML V2.0 utf8 Transform { translation 0 2 0 rotation 0 0 1 1.57 scale 1 2 1 children [ Shape { appearance Appearance { material Material { diffuseColor .23 .39 .19 specularColor .2 .3 .29 ambientIntensity .06 shininess .39 } } geometry Sphere { radius 0.75 } } Shape { appearance Appearance { material Material { diffuseColor .8 .51 .09 specularColor .92 .43 .01 ambientIntensity .117 shininess .4 } } geometry Cylinder { radius 0.25 } } ] }

Esta seqüência de código permite a criação do seguinte objeto:

Figura 10 – Exemplo: Transform

Escolhendo o plano de fundo O ambiente virtual é totalmente circundado por um plano de fundo, que encontra-se inicialmente na cor preta, no entanto sua aparência pode ser escolhida pelo usuário, e o sucesso desta escolha esta diretamente ligado à qualidade de todo o ambiente virtual.

Page 21: GuiaVRML

Guia de Consulta Rápida VRML, Ezequiel R. Zorzal e Luciano F. Silva 21

Background Permite a escolha da aparência do plano de fundo. Background { backUrl "Caminho" bottomUrl "Caminho" frontUrl "Caminho" groundAngle [Valor1, Valor2, ..., ValorN] groundColor [Valor1, Valor2, ..., ValorN] leftUrl "Caminho" rightUrl "Caminho" skyColor [Valor1, Valor2, ..., ValorN] skyAngle [Valor1, Valor2, ..., ValorN] topUrl "Caminho" }

Parâmetros Descrição

backUrl Possibilita utilizar uma imagem como plano de fundo na parte que se encontra atrás do usuário no ambiente virtual. bottomUrl Possibilita utilizar uma imagem como plano de fundo na parte que se encontra abaixo do usuário no ambiente virtual. frontUrl Permite utilizar uma imagem como plano de fundo na parte que se encontra a frente do usuário no ambiente virtual. groundAngle Determina fatores de efeito gradiente para serem aplicados às cores definidas no campo groundColor. groundColor Considera o ambiente virtual circundado por uma esfera, e permite escolher uma ou mais cores para a metade inferior desta esfera. leftUrl Permite utilizar uma imagem como plano de fundo na parte que se encontra a esquerda do usuário no ambiente virtual. rightUrl Possibilita utilizar uma imagem como plano de fundo na parte que se encontra a direita do usuário no ambiente virtual. skyColor Considera o ambiente virtual circundado por uma esfera, e permite escolher uma ou mais cores para a metade superior desta esfera. skyAngle Determina fatores de efeito gradiente para serem aplicados às cores definidas no campo skyColor. topUrl Permite utilizar uma imagem como plano de fundo na parte que se encontra acima do usuário no ambiente virtual.

Exemplo: #VRML V2.0 utf8 Background { skyColor[ 0 .2 .8, .3 .5 .6, .9 .9 .8 ] skyAngle [ 1.309, 1.571 ] }

Esta seqüência de código permite a criação do seguinte plano de fundo:

Figura 11 – Exemplo: Background

Definindo a atmosfera do ambiente virtual A linguagem VRML nos permite definir como será a atmosfera do espaço virtual, por meio da criação de uma nevoa no ambiente. Existem diferentes tipos de nevoas que podem colaborar para o realismo do ambiente.

Fog

Permite criar uma nevoa. Fog { color Valor1 Valor2 Valor3 fogType "LINEAR|EXPONENTIAL" visibilityRange Valor

Page 22: GuiaVRML

Guia de Consulta Rápida VRML, Ezequiel R. Zorzal e Luciano F. Silva 22

}

Parâmetros Descrição

color Especifica a cor da nevoa. fogType Determina como a densidade da névoa aumenta com a distância. Os valores permitidos são "LINEAR" e "EXPONENTIAL". A névoa

"LINEAR" aumenta linearmente com a distância, isto provê algum grau de percepção de profundidade, porém a névoa "EXPONENTIAL" provê resultados mais realísticos.

visibilityRange Define uma distância à qual os objetos são totalmente obscurecidos pela névoa. O valor 0 indica que não haverá névoa.

Exemplo: #VRML V2.0 utf8 Fog { color 0 1 1 fogType "EXPONENTIAL" visibilityRange 50 } Shape { appearance Appearance { material Material {} } geometry Sphere {} }

Definição e Reutilização de Objetos e Atributos Uma importante característica da linguagem VRML é permitir a definição de objetos e atributos internos, ou seja, é possível nomeá-los. Após feita esta definição abre-se a possibilidade de reutilizar estes objetos, ou atributos, sem a necessidade de recriá-los. Pode-se também reutilizar objetos .wrl externos a um determinado arquivo VRML, por meio de url. Esta definição e reutilização de objetos e atributos, além de tornar a programação mais prática, ainda contribui para a criação de arquivos pequenos, e consequentemente facilita o compartilhamento destes arquivos via Web.

DEF Permite definir e nomear objetos ou atributos. DEF nome objeto

Exemplo: #VRML V2.0 utf8 DEF cubo Shape { geometry Box {} }

USE Permite reutilizar os objetos ou atributos predefinidos. USE nome

Exemplo: #VRML V2.0 utf8 DEF cubo Shape { geometry Box {} } Transform { translation 2 0 0 children [ USE cubo ] }

Inline

Page 23: GuiaVRML

Guia de Consulta Rápida VRML, Ezequiel R. Zorzal e Luciano F. Silva 23

Permite utilizar um arquivo .wrl externo sem a necessidade de recriá-lo internamente, ou seja, em suma o comando Inline possibilita incluir um arquivo VRML dentro de outro arquivo VRML. Inline { bboxCenter Valor1 Valor2 Valor3 bboxSize Valor1 Valor2 Valor3 url "Caminho" }

Parâmetros Descrição

bboxCenter Especifica o centro de uma caixa que conterá o conjunto de nós agrupados. O valor deste campo é preenchido por um ponto 3D que por default recebe os valores de 0 0 0.

bboxSize Determina as dimensões da caixa que conterá o conjunto de nós. O seu valor default é -1 -1 -1, que indica a inexistência da caixa. url Define o endereço do arquivo VRML a ser incluso.

Exemplo: #VRML V2.0 utf8 Inline { url "Arquivo.wrl" }

Iluminação Os navegadores Web, que interpretam a linguagem VRML, predispõem de um determinado tipo de iluminação que acompanha a câmera do usuário, conhecida como Headlight. No entanto, é possível determinar novos tipos de iluminação, que contribuem significativamente para a qualidade e o realismo do ambiente virtual.

DirectionalLight Cria uma luz cujos seus raios são gerados paralelamente à direção de um determinado vetor, conforme a Figura 12. É importante destacar que para os efeitos desta luz aparecerem sobre objetos virtuais, estes devem estar agrupados junto ao nó DirectionalLight. DirectionalLight { ambientIntensity Valor color Valor1 Valor2 Valor3 direction Valor1 Valor2 Valor3 intensity Valor on TRUE|FALSE }

Parâmetros Descrição

ambientIntensity Especifica o quanto a luz influencia na iluminação do ambiente. O seu valor varia entre 0 e 1. color Define a cor da luz, por meio de um vetor de três posições no padrão RGB. direction Determina o vetor 3D ao qual os raios luminosos serão paralelos. intensity Determina a intensidade da luz. Seu valor varia entre 0 e 1, sendo quanto maior o seu valor mais forte será a luz. on Especifica se a luz está ativa, caso o seu valor seja TRUE, ou inativa, caso seu valor seja FALSE.

Exemplo: #VRML V2.0 utf8 Group { children [ Shape { appearance Appearance { material Material {} } geometry Sphere {} } DirectionalLight { color 0 1 1 on TRUE

Page 24: GuiaVRML

Guia de Consulta Rápida VRML, Ezequiel R. Zorzal e Luciano F. Silva 24

direction 1 0 0 } ] }

Figura 12 – Modelo de iluminação DirectionalLight

PointLight

Define uma fonte luminosa em um ponto específico do ambiente virtual. Os raios desta fonte incidem em todas as direções do ambiente. PointLight { ambientIntensity Valor attenuation Valor1 Valor2 Valor3 color Valor1 Valor2 Valor3 intensity Valor location Valor1 Valor2 Valor3 radius Valor on TRUE|FALSE }

Parâmetros Descrição

ambientIntensity Especifica o quanto a luz influencia na iluminação do ambiente. O seu valor varia entre 0 e 1. attenuation Determina um vetor de três posições contendo, respectivamente, a intensidade em X, Y e Z. color Define a cor da luz, por meio de um vetor de três posições no padrão RGB. intensity Determina a intensidade da luz. Seu valor varia entre 0 e 1, sendo quanto maior o seu valor mais forte será a luz. location Especifica a localização da fonte de luz no ambiente, por meio de uma coordenada 3D. radius Define a distância máxima de alcance dos raios luminosos. on Especifica se a luz está ativa, se caso o seu valor for TRUE, ou inativa, caso seu valor seja FALSE.

Exemplo: #VRML V2.0 utf8 PointLight { location 0 0 0 radius 5 color 1 0 0 } Transform { translation 4 0 0 children [ DEF Esfera Shape { appearance Appearance { material Material {} } geometry Sphere { radius 0.5 } } ] } Transform { translation -4 0 0 children [ USE Esfera ]

Page 25: GuiaVRML

Guia de Consulta Rápida VRML, Ezequiel R. Zorzal e Luciano F. Silva 25

} Transform { translation 0 4 0 children [ USE Esfera ] } Transform { translation 0 -4 0 children [ USE Esfera ] } Transform { translation 0 0 -4 children [ USE Esfera ] }

SpotLight

Define uma fonte de luz em um local específico. Seus raios são propagados com direção e sentido predefinido. O conjunto de raios é transmitido no formato de um cone, sendo que a fonte luminosa encontra-se na ponta deste cone, conforme a Figura 13. SpotLight { ambientIntensity Valor attenuation Valor1 Valor2 Valor3 beamWidth Valor color Valor1 Valor2 Valor3 cutOffAngle Valor direction Valor1 Valor2 Valor3 intensity Valor location Valor1 Valor2 Valor3 on TRUE|FALSE radius Valor }

Parâmetros Descrição

ambientIntensity Especifica o quanto a luz influencia na iluminação do ambiente. O seu valor varia entre 0 e 1. attenuation Determina um vetor de três posições contendo, respectivamente, a intensidade em X, Y e Z. beamWidth Especifica o ângulo entre as geratrizes contidas na secção meridiana de um cone a ser formado por raios de luz de maior intensidade.

Seu valor varia entre 0 e180º, sendo que deve ser inserido em radianos. color Define a cor da luz, por meio de um vetor de três posições no padrão RGB. cutOffAngle Especifica o ângulo entre as geratrizes contidas na secção meridiana do cone formado pelos raios de luz, ou seja, ângulo máximo de sua

abertura. Seu valor varia entre 0 e180º, sendo que deve ser inserido em radianos. direction Define a direção e o sentido que será propagada, por meio de um vetor 3D. intensity Determina a intensidade da luz. Seu valor varia entre 0 e 1, sendo quanto maior o seu valor mais forte será a luz. location Especifica a localização da fonte de luz no ambiente, por meio de uma coordenada 3D. radius Define a distância máxima de alcance dos raios luminosos. on Especifica se a luz está ativa, se caso o seu valor for TRUE, ou inativa, caso seu valor seja FALSE.

Exemplo: #VRML V2.0 utf8 SpotLight { location 0 0 0 radius 5.25 color 1 0 0 direction 0 0 -1 cutOffAngle 0.25 }

Page 26: GuiaVRML

Guia de Consulta Rápida VRML, Ezequiel R. Zorzal e Luciano F. Silva 26

DEF T0 Transform { children [ Transform { translation 0 0 -4 children [ DEF Esfera Shape { appearance Appearance { material Material {} } geometry Sphere { radius 0.25 } } ] } Transform { translation -1 0 -4 children [ USE Esfera ] } Transform { translation 1 0 -4 children [ USE Esfera ] } ] }

Transform { translation 0 -1 0 children [ USE T0 ] } Transform { translation 0 1 0 children [ USE T0 ] }

Figura 13 – Modelo de iluminação SpotLight

Gerando efeitos sonoros O VRML não apenas suporta gráficos tridimensionais como também permite a utilização de sons em 3D.

Sound

Especifica a localização e as propriedades espaciais de uma fonte de som. Sound { direction Valor1 Valor2 Valor3 intensity Valor location Valor1 Valor2 Valor3

Page 27: GuiaVRML

Guia de Consulta Rápida VRML, Ezequiel R. Zorzal e Luciano F. Silva 27

maxBack Valor maxFront Valor minBack Valor minFront Valor priority Valor source Parâmetros spatialize TRUE|FALSE }

Parâmetros Descrição

direction Define a direção e o sentido que o som será propagado, por meio de um vetor 3D. intensity Define o volume do som, deve estar entre 0 e 1, se o valor for próximo à 0 o volume abaixa, caso contrário, o volume aumenta. location Especifica a localização da fonte de som na coordenada 3D. maxBack Determina a distância máxima que o som vai se propagar no ambiente. maxFront Define a distância máxima que o som vai se propagar no ambiente. minBack Especifica a distância mínima que o som vai se propagar no ambiente. minFront Determina a distância mínima que o som vai se propagar no ambiente. priority Define a prioridade de execução do som. Esse atributo só será usado caso exista outros sons no ambiente. Deve receber um valor entre

0 e 1, sendo que, quanto maior esse valor, maior é a sua prioridade. source Especifica o uso do nó AudioClip, para sons no formato wave, wma, mp3 e midi, ou o uso do nó MovieTexture, para a execução de um

som no formato mpeg. spatialize Indica se o som deve ser tratado como som 3D (TRUE) ou como som ambiente (FALSE).

AudioClip Especifica a localização e as propriedades espaciais de uma fonte de som. source AudioClip { description "Descrição" loop TRUE|FALSE pitch Valor startTime Valor stopTime Valor url "Caminho" }

Parâmetros Descrição

description Permite a descrição do som por meio de uma cadeia de caracteres. loop Habilita a repetição do som se o valor for TRUE. pitch Especifica a velocidade em que o som irá reproduzir. startTime Determina o tempo de inicio de reprodução do som. Valor dado em segundos. stopTime Determina o tempo final de reprodução do som. Valor dado em segundos. url Especifica o caminho do som a ser utilizado. Pode ser no formato wave, wma, mp3 e midi.

Exemplo: #VRML V2.0 utf8 Group { children [ Sound { source AudioClip { url "Beatle21.wav" loop TRUE startTime 1 } spatialize TRUE intensity 1.0 location 0.0 0.0 0.0 minBack 1 maxBack 10 minFront 1 maxFront 10

Page 28: GuiaVRML

Guia de Consulta Rápida VRML, Ezequiel R. Zorzal e Luciano F. Silva 28

priority 0 } Shape { appearance Appearance { material Material {} } geometry Sphere{ radius 0.5 } } ] }

Animação e interação nos ambientes criados Apenas o desenvolvimento de um ambiente estático com formas modeladas tridimensionalmente não o caracteriza como um ambientes em realidade virtual. O principal diferencial entre as versões 1.0 e 2.0 da linguagem VRML é a possibilidade de inserir animações e interações nos ambientes criados. Sendo assim, a criação da versão 2.0 da linguagem VRML, no ano 1997, colocou um marco no desenvolvimento de ambientes compartilhados via Web. Pois foi aberta a possibilidade de criar não somente modelagens em 3D, mas sim a criação de ambientes em realidade virtual, a forma mais avançada de interação entre homem e máquina.

Colocando sensores

Os sensores são colocados no ambiente virtual para permitir formas diversas de interação, como, por exemplo, movimentar objetos, criar tempos de animação, disparar estes tempos por meio de toques, etc.

CylinderSensor

Este sensor mapeia os movimentos do mouse no formato cilíndrico em torno do eixo Y e permite rotacionar objetos. Para aplicar o sensor em um objeto específico deve-se agrupá-los. Para selecionar quais objetos serão rotacionados deve-se utilizar rotas, que serão descritas posteriormente. CylinderSensor{ autoOffset TRUE|FALSE diskAngle Valor enabled TRUE|FALSE maxAngle Valor minAngle Valor offset Valor }

Parâmetros Descrição

autoOffset Determina se a cada uso do sensor, ou seja, a cada clique do mouse sobre um objeto com sensor, este objeto voltará para a sua posição inicial, FALSE, ou não, TRUE.

diskAngle Define um ângulo entre o eixo Y e um vetor imaginário. O cilindro invisível é tratado como um disco colocado paralelamente a este vetor. Caso vetor esteja na direção do usuário a rotação será realizada por meio de movimentos do mouse de um lado a outro da tela, caso contrário a rotação será realizada por movimentos circulares do mouse.

enabled Especifica se o sensor iniciará habilitado, TRUE, ou não, FALSE. maxAngle Especifica, em radianos, o valor máximo de rotação. minAngle Especifica, em radianos, o valor mínimo de rotação. offset Determina uma rotação inicial para o sensor.

Exemplo: #VRML V2.0 utf8 Group { children [ Shape { appearance Appearance { material Material {}

Page 29: GuiaVRML

Guia de Consulta Rápida VRML, Ezequiel R. Zorzal e Luciano F. Silva 29

} geometry Box {} } DEF Sensor CylinderSensor { autoOffset FALSE diskAngle 1 enabled TRUE minAngle 0.50 maxAngle 5.00 offset 1 } ] }

PlaneSensor

Este sensor mapeia os movimentos do mouse no plano XY e permite transladar objetos. Para aplicar o sensor em um objeto específico deve-se agrupá-los. Para selecionar quais objetos serão transladados deve-se utilizar rotas, que serão descritas posteriormente. PlaneSensor { autoOffset TRUE|FALSE enabled TRUE|FALSE maxPosition Valor1 Valor2 minPosition Valor1 Valor2 offset Valor1 Valor2 Valor3 }

Parâmetros Descrição

autoOffset Determina se a cada uso do sensor, ou seja, a cada clique do mouse sobre um objeto com sensor, este objeto voltará para a sua posição inicial, FALSE, ou não, TRUE.

enabled Especifica se o sensor iniciará habilitado, TRUE, ou não, FALSE. maxPosition Especifica o valor máximo de translação respectivamente em X e Y. minPosition Especifica o valor mínimo de translação respectivamente em X e Y. offset Determina uma posição inicial para o sensor.

Exemplo: #VRML V2.0 utf8 Group { children [ DEF esfera Transform { children [ Shape { appearance Appearance { material Material {} } geometry Sphere {} } ] } DEF Sensor PlaneSensor { enabled TRUE autoOffset TRUE minPosition -5 -3 maxPosition 5 3 } ] }

ProximitySensor

Page 30: GuiaVRML

Guia de Consulta Rápida VRML, Ezequiel R. Zorzal e Luciano F. Silva 30

Este sensor cria uma caixa invisível e gera um evento, ou seja, o sensor é disparado toda vez que o usuário entra nesta caixa. Para utilizar o evento gerado em alguma funcionalidade específica, como, por exemplo, ligar uma luz, deve-se utilizar rotas, que serão descritas posteriormente. ProximitySensor{ center Valor1 Valor2 Valor3 enabled TRUE|FALSE size Valor1 Valor2 Valor3 }

Parâmetros Descrição

center Especifica o centro da caixa invisível. O valor deste campo é preenchido por um ponto 3D que por default recebe os valores de 0 0 0. enabled Especifica se o sensor iniciará habilitado, TRUE, ou não, FALSE. size Determina as dimensões da caixa que conterá o conjunto de nós. O seu valor default é -1 -1 -1, que indica a inexistência da caixa.

Exemplo: #VRML V2.0 utf8 DEF Sensor ProximitySensor{ size 1 1 1 }

SphereSensor

Este sensor mapeia os movimentos do mouse no formato de uma esfera e permite rotacionar objetos em torno de um ponto no espaço tridimensional. Para aplicar o sensor em um objeto específico deve-se agrupá-los. Para selecionar quais objetos serão rotacionados deve-se utilizar rotas, que serão descritas posteriormente. SphereSensor { autoOffset TRUE|FALSE enabled TRUE|FALSE offset Valor1 Valor2 Valor3 Valor4 } Parâmetros Descrição

autoOffset Determina se a cada uso do sensor, ou seja, a cada clique do mouse sobre um objeto com sensor, este objeto voltará para a sua posição inicial, FALSE, ou não, TRUE.

enabled Especifica se o sensor iniciará habilitado, TRUE, ou não, FALSE. offset Determina o eixo e a rotação inicial do sensor.

Exemplo: #VRML V2.0 utf8 Group { children [ DEF esfera Transform { children [ Shape { appearance Appearance { material Material {} } geometry Cylinder {} } ] } DEF Sensor SphereSensor { enabled TRUE autoOffset TRUE } ] }

TimeSensor

Page 31: GuiaVRML

Guia de Consulta Rápida VRML, Ezequiel R. Zorzal e Luciano F. Silva 31

Permite a criação de um relógio que gera eventos com o passar do tempo. Estes eventos podem, por exemplo, ser usados para executar animações. TimeSensor { cycleInterval Valor enabled TRUE|FALSE loop TRUE|FALSE startTime Valor stopTime Valor }

Parâmetros Descrição

cycleInterval Especifica o número de segundos em que serão gerados eventos. enabled Especifica se o tempo será iniciado automaticamente, para o valor TRUE, ou não, para FALSE. Por default este valor é FALSE. loop Habilita a repetição do tempo caso o seu valor seja TRUE. startTime Determina quando o tempo iniciará. Valor dado em segundos. stopTime Determina quando o tempo será finalizado. Valor dado em segundos.

Exemplo: #VRML V2.0 utf8 TimeSensor { cycleInterval 5 enabled FALSE loop TRUE }

TouchSensor

Este sensor mapeia se o cursor do mouse esta sobre algum objeto específico, ou se o usuário clicou neste objeto. Para aplicar o sensor em um objeto específico deve-se agrupá-los. Para utilizar o toque do mouse em alguma funcionalidade específica, como, por exemplo, iniciar um som, ligar uma luz, etc, deve-se utilizar rotas, que serão descritas posteriormente. TouchSensor { enabled TRUE|FALSE }

Parâmetro Descrição

enabled Especifica se o sensor iniciará habilitado, TRUE, ou não, FALSE.

Exemplo: #VRML V2.0 utf8 Group { children [ DEF esfera Transform { children [ Shape { appearance Appearance { material Material {} } geometry Sphere {} } ] } DEF Sensor TouchSensor {} ] }

VisibilitySensor

Page 32: GuiaVRML

Guia de Consulta Rápida VRML, Ezequiel R. Zorzal e Luciano F. Silva 32

Este sensor cria uma caixa invisível e gera um evento, ou seja, o sensor é disparado toda vez que esta caixa torna-se visível para o usuário. Para utilizar o evento gerado em alguma funcionalidade específica, como, por exemplo, iniciar um som, deve-se utilizar rotas, que serão descritas posteriormente. VisibilitySensor { center Valor1 Valor2 Valor3 enabled TRUE|FALSE size Valor1 Valor2 Valor3 }

Parâmetros Descrição

center Especifica o centro da caixa invisível. O valor deste campo é preenchido por um ponto 3D que por default recebe os valores de 0 0 0. enabled Especifica se o sensor iniciará habilitado, TRUE, ou não, FALSE. size Determina as dimensões da caixa que conterá o conjunto de nós. O seu valor default é -1 -1 -1, que indica a inexistência da caixa.

Exemplo: #VRML V2.0 utf8 DEF Sensor VisibilitySensor { size 1 1 1 }

Criando rotas Uma importante característica dos nós VRML é que eles podem enviar e receber eventos. A criação de rotas é um modo simples de definir um caminho entre um evento gerado por um nó e um outro nó que receberá este evento.

ROUTE

Cria uma rota. Este comando obedece a seguinte sintaxe: ROUTE Node.eventOut TO Node.eventIn

Onde eventOut é um evento de saída ou enviado e eventIn é um evento de entrada ou a ser recebido.

Criando interpoladores A linguagem VRML possui um conjunto de nós denominados interpoladores, estes nós permitem definir chaves (key), variando de 0 a 1, que associam-se a valores (keyValue). O tipo destes valores, por exemplo, um número ou um vetor de três posições, depende do tipo de interpolador que se está usando. Apesar dos interpoladores tratarem diferentes tipos de dados, seus campos e eventos são iguais para todo interpolador, só o tipo de valores varia. Por meio de rotas, as chaves são associadas a um tempo, passando a representar proporções deste tempo. Em resumo os interpoladores formam chaves de tempo que mediam a execução de determinados valores. Ao associar os interpoladores a objetos, estes valores podem alterar algumas de suas propriedades como posição, cor, rotação, etc.

ColorInterpolator

Cria um interpolador que permite incrementar uma lista de valores RGB no campo keyValue. Estes valores são utilizados para modificar parâmetros de cor do campo Material como diffuseColor, emissiveColor e specularColor. ColorInterpolator { key [Valor1, Valor2, ..., ValorN] keyValue[Valor1, Valor2, ..., ValorN] }

Exemplo: #VRML V2.0 utf8 Shape { appearance Appearance { material DEF Cor Material {} } geometry Sphere {}

Page 33: GuiaVRML

Guia de Consulta Rápida VRML, Ezequiel R. Zorzal e Luciano F. Silva 33

} DEF Interpolador ColorInterpolator { key [0 0.5 1 ] keyValue[1 0 0, 0 1 0, 0 0 1 ] } DEF Tempo TimeSensor { cycleInterval 2 loop TRUE enabled TRUE } ROUTE Tempo.fraction_changed TO Interpolador.set_fraction ROUTE Interpolador.value_changed TO Cor.diffuseColor

CoordinateInterpolator

Cria um interpolador que permite incrementar uma lista de coordenadas 3D no campo keyValue. Estes valores são utilizados para modificar o parâmetro Coordinate dos nós IndexedFaceSet, IndexedLineSet e PointSet. CoordinateInterpolator { key [Valor1, Valor2, ..., ValorN] keyValue[Valor1, Valor2, ..., ValorN] }

Exemplo: #VRML V2.0 utf8 Shape{ geometry IndexedLineSet { coord DEF Coord Coordinate { point [-1 1 0, 1 1 0, -1 -1 0, 1 -1 0] } coordIndex [0 1 2 3] } } DEF Interpolador CoordinateInterpolator { key [0 0.5 1] keyValue [-1 1 0, 1 1 0, -1 -1 0, 1 -1 0 -1 1 0, 3 3 0, -3 -3 0, 1 -1 0 -1 1 0, 1 1 0, -1 -1 0, 1 -1 0 ] } DEF Tempo TimeSensor { cycleInterval 2 loop TRUE enabled TRUE } ROUTE Tempo.fraction_changed TO Interpolador.set_fraction ROUTE Interpolador.value_changed TO Coord.point

NormalInterpolator Cria um interpolador que permite incrementar uma lista de vetores 3D no campo keyValue. Estes valores são utilizados para modificar o parâmetro Normal dos nós IndexedFaceSet e ElevationGrid. NormalInterpolator { key [Valor1, Valor2, ..., ValorN] keyValue[Valor1, Valor2, ..., ValorN] }

Exemplo: #VRML V2.0 utf8 Shape { appearance Appearance { material Material { diffuseColor .32 .54 .26 specularColor .46 .46 .46 ambientIntensity .0933 shininess .51 } } geometry ElevationGrid {

Page 34: GuiaVRML

Guia de Consulta Rápida VRML, Ezequiel R. Zorzal e Luciano F. Silva 34

xDimension 2 zDimension 2 xSpacing 2 zSpacing 2 height [ 0.5 0.1 0.2 2.0 ] creaseAngle 1 normal DEF VecsNorma Normal { vector [ 1 0 0, 0 1 0, 0 0 1 ] } } } DEF Interpolador NormalInterpolator { key [ 0 0.5 1 ] keyValue [ 1 0 0, 0 1 0, 0 0 1 1 1 0, 0 1 1, 1 0 1 1 0 0, 0 1 0, 0 0 1 ] } DEF Tempo TimeSensor { cycleInterval 2 loop TRUE enabled TRUE } ROUTE Tempo.fraction_changed TO Interpolador.set_fraction ROUTE Interpolador.value_changed TO VecsNorma.vector

OrientationInterpolator

Cria um interpolador que permite incrementar uma lista de rotações no campo keyValue, estas rotações são representadas por quatro posições, onde as três primeiras contém um vetor 3D que indica o eixo de rotação e o quarto campo contém o ângulo de rotação.Estes valores são utilizados para modificar o parâmetro rotation do nó Transform. OrientationInterpolator{ key [Valor1, Valor2, ..., ValorN] keyValue[Valor1, Valor2, ..., ValorN] }

Exemplo: #VRML V2.0 utf8 DEF Esf Transform { center -2 0 0 children [ Shape { appearance Appearance { material Material {} } geometry Sphere {} } ] } DEF Interpolador OrientationInterpolator { key [ 0 0.5 1 ] keyValue [ 0 0 1 0.00 0 0 1 3.14

Page 35: GuiaVRML

Guia de Consulta Rápida VRML, Ezequiel R. Zorzal e Luciano F. Silva 35

0 0 1 6.28 ] } DEF Tempo TimeSensor { cycleInterval 2 loop TRUE enabled TRUE } ROUTE Tempo.fraction_changed TO Interpolador.set_fraction ROUTE Interpolador.value_changed TO Esf.rotation

PositionInterpolator Cria um interpolador que permite incrementar uma lista de coordenadas 3D no campo keyValue. Estes valores são utilizados para modificar os parâmetros center, scale e translation do nó Transform. OrientationInterpolator{ key [Valor1, Valor2, ..., ValorN] keyValue[Valor1, Valor2, ..., ValorN] }

Exemplo: #VRML V2.0 utf8 DEF Esf Transform { translation -2 0 0 children [ Shape { appearance Appearance { material Material {} } geometry Sphere {} } ] } DEF Interpolador PositionInterpolator { key [ 0 0.5 1 ] keyValue [ -2 0 0 2 0 0 -2 0 0 ] } DEF Tempo TimeSensor { cycleInterval 2 loop TRUE enabled TRUE } ROUTE Tempo.fraction_changed TO Interpolador.set_fraction ROUTE Interpolador.value_changed TO Esf.translation

ScalarInterpolator

Cria um interpolador que permite incrementar uma lista de valores floats no campo keyValue. Estes valores são utilizados para modificar os parâmetros floats dos nós, como por exemplo, alterar os parâmetros shininess e transparency do campo Material ou mudar o parâmetro speed em vídeos e sons. ScalarInterpolator { key [Valor1, Valor2, ..., ValorN] keyValue[Valor1, Valor2, ..., ValorN] }

Exemplo: #VRML V2.0 utf8 Shape { appearance Appearance { material DEF cor Material {} } geometry Sphere {} } DEF Interpolador ScalarInterpolator {

Page 36: GuiaVRML

Guia de Consulta Rápida VRML, Ezequiel R. Zorzal e Luciano F. Silva 36

key [ 0 0.5 1 ] keyValue [ 0 0.75 0 ] } DEF Tempo TimeSensor { cycleInterval 2 loop TRUE enabled TRUE } ROUTE Tempo.fraction_changed TO Interpolador.set_fraction ROUTE Interpolador.value_changed TO cor.transparency

Criando animações e interações com scripts Os interpoladores VRML são excelentes ferramentas de animação e interação, no entanto, para animações ou interações de alta complexidade, o uso destas ferramentas torna-se inviável. Por exemplo, suponha a situação onde se deseja criar uma trajetória helicoidal para um determinado objeto, por meio de um interpolador faz-se necessário descrever uma grande quantidade de pontos deste helicóide, e mesmo assim esta trajetória não será cumprida com perfeição. Para solução destes casos a linguagem VRML nos oferece o nó script, que provê a possibilidade de programação na linguagem javascript ou java. Para construção de uma trajetória helicoidal com scripts poderia ser declarada a função matemática que rege este movimento. O nó script possibilita o desenvolvimento de animações e interações impossíveis de serem construídas sem o seu uso. Eles permitem receber eventos, processar a informação recebida, e logo após produzir eventos de saída baseados nos resultados obtidos.

Scripts

Permite a criação de um script. Script { directOutput TRUE|FALSE eventIn Tipo Nome_do_evento eventOut Tipo Nome_do_evento field Tipo Name_do_campo Valor_inicial mustEvaluate TRUE|FALSE url "Caminho" }

Parâmetros Descrição

directOutput Especifica um valor booleano que permite escolher como o script irá influenciar a hierarquia do sistema VRML. Caso o seu valor seja TRUE, o script poderá mudar a hierarquia da cena diretamente, e estabelecer ou remover rotas dinamicamente, caso o seu valor seja FALSE, o script poderá apenas se comunicar com o ambiente virtual por meio de eventos.

eventIn Permite a criação de eventos de entrada que passam parâmetros para o script. Estes eventos utilizarão dados de tipos possíveis de serem escolhidos.

eventOut Permite a criação de eventos de saída que retornam valores computados pelo script. Estes eventos utilizarão dados de tipos possíveis de serem escolhidos e funcionam como variáveis globais.

field Permite a criação de um campo de entrada e saída que funciona como uma variável global do sistema. Deverá ser atribuído um valor inicial a este campo.

mustEvaluate Especifica se o browser deve enviar eventos ao script mesmo quando não estiver esperando que o script retorne uma saída, TRUE, ou não, FALSE.

url Permite definir a URL de um script a ser executado, ou pode conter o texto do script em si.

eventIn

Permite a criação de eventos de entrada que passam parâmetros para o script. Estes eventos utilizarão dados de tipos possíveis de serem escolhidos. eventIn Tipo Nome_do_evento

Tipos Descrição

Page 37: GuiaVRML

Guia de Consulta Rápida VRML, Ezequiel R. Zorzal e Luciano F. Silva 37

MFColor Define uma lista de vetores com três posições, no formato RGB, que representam um conjunto de cores. MFFloat Define uma lista de números reais. MFInt32 Define uma lista de números inteiros de 32 bits, representados no formato decimal ou hexadecimal, quando precedidos por “0x”. MFNode Define uma lista de nós do VRML. MFRotation Especifica uma rotação em torno de um eixo arbitrário, por meio de 4 valores, em que os 3 primeiros definem o eixo de rotação e o último

o ângulo em radianos. MFString Define uma seqüência de caracteres no formato de codificação UTF-8. MFTime Define uma lista de valores de tempo. MFVec2f Define uma lista de vetores 2D representado por dois números reais que equivalem as coordenadas de um ponto no plano cartesiano x e

y. MFVec3f Define uma lista de vetores 3D representado por três números reais que equivalem as coordenadas de um ponto no espaço cartesiano x,

y e z. SFBool Contém um único valor Booleano. Pode ser preenchido com as palavras TRUE ou FALSE. SFColor Define um vetor com três posições, no formato RGB, que representa uma cor. SFFloat Define um número real de precisão simples. SFImage Define uma imagem bidimensional. Seu valor consiste sequencialmente em 3 inteiros, representando a largura, a altura e o número de

componentes da imagem, seguido de sua matriz de pixels em hexadecimal. SFInt32 Define um número inteiro de 32 bits, representado no formato decimal ou hexadecimal, quando precedido por “0x”. SFNode Define um nó do VRML. SFRotation Especifica uma rotação em torno de um eixo arbitrário, por meio de 4 valores reais, em que os 3 primeiros definem o eixo de rotação e o

último o ângulo em radianos. SFString Define uma seqüência de caracteres no formato de codificação UTF-8. SFTime Define valor de tempo. SFVec2f Define um vetor 2D representado por dois números reais que equivalem as coordenadas de um ponto no plano cartesiano x e y. SFVec3f Define um vetor 3D representado por três números reais que equivalem as coordenadas de um ponto no espaço cartesiano x, y e z.

Exemplo: #VRML V2.0 utf8 Script { EventIn SFFloat ex_de_evento_entrada }

eventOut

Permite a criação de eventos de saída que retornam valores computados pelo script. Estes eventos utilizarão dados de tipos possíveis de serem escolhidos e funcionam como variáveis globais. eventOut Tipo Nome_do_evento

Tipos Descrição

MFColor Define uma lista de vetores com três posições, no formato RGB, que representam um conjunto de cores. MFFloat Define uma lista de números reais. MFInt32 Define uma lista de números inteiros de 32 bits, representados no formato decimal ou hexadecimal, quando precedidos por “0x”. MFNode Define uma lista de nós do VRML. MFRotation Especifica uma rotação em torno de um eixo arbitrário, por meio de 4 valores, em que os 3 primeiros definem o eixo de rotação e o último

o ângulo em radianos. MFString Define uma seqüência de caracteres no formato de codificação UTF-8. MFTime Define uma lista de valores de tempo. MFVec2f Define uma lista de vetores 2D representado por dois números reais que equivalem as coordenadas de um ponto no plano cartesiano x e

y. MFVec3f Define uma lista de vetores 3D representado por três números reais que equivalem as coordenadas de um ponto no espaço cartesiano x,

y e z. SFBool Contém um único valor Booleano. Pode ser preenchido com as palavras TRUE ou FALSE. SFColor Define um vetor com três posições, no formato RGB, que representa uma cor. SFFloat Define um número real de precisão simples.

Page 38: GuiaVRML

Guia de Consulta Rápida VRML, Ezequiel R. Zorzal e Luciano F. Silva 38

SFImage Define uma imagem bidimensional. Seu valor consiste sequencialmente em 3 inteiros, representando a largura, a altura e o número de componentes da imagem, seguido de sua matriz de pixels em hexadecimal.

SFInt32 Define um número inteiro de 32 bits, representado no formato decimal ou hexadecimal, quando precedido por “0x”. SFNode Define um nó do VRML. SFRotation Especifica uma rotação em torno de um eixo arbitrário, por meio de 4 valores reais, em que os 3 primeiros definem o eixo de rotação e o

último o ângulo em radianos. SFString Define uma seqüência de caracteres no formato de codificação UTF-8. SFTime Define valor de tempo. SFVec2f Define um vetor 2D representado por dois números reais que equivalem as coordenadas de um ponto no plano cartesiano x e y. SFVec3f Define um vetor 3D representado por três números reais que equivalem as coordenadas de um ponto no espaço cartesiano x, y e z.

Exemplo: #VRML V2.0 utf8 Script { eventOut SFRotation ex_de_evento_saida }

field

Permite a criação de um campo de entrada e saída que funciona como uma variável global do sistema. Deverá ser atribuído um valor inicial a este campo. field Tipo Name_do_campo Valor_inicial

Tipos Descrição

MFColor Define uma lista de vetores com três posições, no formato RGB, que representam um conjunto de cores. MFFloat Define uma lista de números reais. MFInt32 Define uma lista de números inteiros de 32 bits, representados no formato decimal ou hexadecimal, quando precedidos por “0x”. MFNode Define uma lista de nós do VRML. MFRotation Especifica uma rotação em torno de um eixo arbitrário, por meio de 4 valores, em que os 3 primeiros definem o eixo de rotação e o último

o ângulo em radianos. MFString Define uma seqüência de caracteres no formato de codificação UTF-8. MFTime Define uma lista de valores de tempo. MFVec2f Define uma lista de vetores 2D representado por dois números reais que equivalem as coordenadas de um ponto no plano cartesiano x e

y. MFVec3f Define uma lista de vetores 3D representado por três números reais que equivalem as coordenadas de um ponto no espaço cartesiano x,

y e z. SFBool Contém um único valor Booleano. Pode ser preenchido com as palavras TRUE ou FALSE. SFColor Define um vetor com três posições, no formato RGB, que representa uma cor. SFFloat Define um número real de precisão simples. SFImage Define uma imagem bidimensional. Seu valor consiste sequencialmente em 3 inteiros, representando a largura, a altura e o número de

componentes da imagem, seguido de sua matriz de pixels em hexadecimal. SFInt32 Define um número inteiro de 32 bits, representado no formato decimal ou hexadecimal, quando precedido por “0x”. SFNode Define um nó do VRML. SFRotation Especifica uma rotação em torno de um eixo arbitrário, por meio de 4 valores reais, em que os 3 primeiros definem o eixo de rotação e o

último o ângulo em radianos. SFString Define uma seqüência de caracteres no formato de codificação UTF-8. SFTime Define valor de tempo. SFVec2f Define um vetor 2D representado por dois números reais que equivalem as coordenadas de um ponto no plano cartesiano x e y. SFVec3f Define um vetor 3D representado por três números reais que equivalem as coordenadas de um ponto no espaço cartesiano x, y e z.

Exemplo: #VRML V2.0 utf8 Script { field SFVec3f ex_compo 1 2 3 }

Page 39: GuiaVRML

Guia de Consulta Rápida VRML, Ezequiel R. Zorzal e Luciano F. Silva 39

url Permite definir a URL de um script a ser executado ou pode conter o texto do script em si. Ao optar por definir a URL do script deve-se inscrever os parâmetros que serão utilizados neste script internamente, como no exemplo abaixo.

Exemplo: #VRML V2.0 utf8 DEF SC Script { field SFColor currentColor 0 0 0 eventIn SFColor colorIn eventOut SFBool isRed url "exemplo_script_externo.class" }

Para descrever o texto no próprio script deve-se declarar os parâmetros, como field, eventIn, eventOut e url. Sendo que o código de programação, inserido no parâmetro url, deve estar entre aspas duplas e antecedido pela inscrição ‘javascript: ’. As funções do código javascript são declaradas pela inscrição ‘function’ seguida do nome de um evento de entrada (eventIn). Estas funções possuem parâmetros característicos do tipo do evento de entrada. function Nome_evento_entrada(value,time) { Código }

O primeiro parâmetro, ‘value’, é um valor referente ao tipo do evento de entrada, e o segundo parâmetro, ‘time’, é um valor do tipo SFTime, normalmente utilizado para disparar eventos deste tipo. É importante ressaltar que o nó script abrange vários recursos de programação das linguagens javascript e java que não são descritos neste guia.

Exemplo: #VRML V2.0 utf8 Transform { children [ Shape { appearance Appearance { material DEF Cor Material {} } geometry Sphere {} } DEF Sensor TouchSensor {} ] } DEF Ex_script Script { eventIn SFBool toque eventOut SFColor Colore url "javascript: function toque(value, time){ if(value==true){ Colore[0] = Math.random() Colore[1] = Math.random() Colore[2] = Math.random() } }" } ROUTE Sensor. isActive TO Ex_script.toque ROUTE Ex_script.Colore TO Cor.diffuseColor

Gerando protótipos A linguagem VRML possui uma série de objetos predefinidos, chamados de nós, que suprem uma grande parte das necessidades para criar ambientes virtuais. No entanto, o VRML 2.0 permite a criação de novos nós a partir destes nós pré-definidos. Os novos nós podem ser utilizados da mesma maneira que os objetos pré-existentes da linguagem. Este processo é possível na linguagem VRML por meio da construção de protótipos. Os fundamentos da prototipação VRML assemelham-se consideravelmente às definições de classes em programação orientada a objetos.

Page 40: GuiaVRML

Guia de Consulta Rápida VRML, Ezequiel R. Zorzal e Luciano F. Silva 40

PROTO Permite criar um protótipo. Após determinar os parâmetros eventIn, eventOut, exposedField e field deve-se definir os nós e parâmetros que serão prototipados entre chaves, por meio do comando IS. Para utilizar o protótipo criado basta apenas instanciá-lo. PROTO Nome[ eventIn Tipo Nome_do_evento eventOut Tipo Nome_do_evento exposedField Tipo Name_do_campo Valor_inicial field Tipo Name_do_campo Valor_inicial ] {Descrição}

Parâmetros Descrição

eventIn Permite a criação de eventos de entrada que passam parâmetros para o protótipo. Estes eventos utilizarão dados de tipos possíveis de serem escolhidos.

eventOut Permite a criação de eventos de saída que retornam valores computados pelo protótipo. Estes eventos utilizarão dados de tipos possíveis de serem escolhidos e funcionam como variáveis globais.

exposedField Permite a criação de um campo que pode ser modificado por meio de eventos que funciona como uma variável global do sistema. Deverá ser atribuído um valor inicial a este campo.

field Permite a criação de um campo de entrada e saída que funciona como uma variável global do sistema. Deverá ser atribuído um valor inicial a este campo.

IS Permite definir os nós e parâmetros que serão prototipados.

eventIn Permite a criação de eventos de entrada que passam parâmetros para o protótipo. Estes eventos utilizarão dados de tipos possíveis de serem escolhidos. eventIn Tipo Nome_do_evento

Tipos Descrição

MFColor Define uma lista de vetores com três posições, no formato RGB, que representam um conjunto de cores. MFFloat Define uma lista de números reais. MFInt32 Define uma lista de números inteiros de 32 bits, representados no formato decimal ou hexadecimal, quando precedidos por “0x”. MFNode Define uma lista de nós do VRML. MFRotation Especifica uma rotação em torno de um eixo arbitrário, por meio de 4 valores, em que os 3 primeiros definem o eixo de rotação e o último

o ângulo em radianos. MFString Define uma seqüência de caracteres no formato de codificação UTF-8. MFTime Define uma lista de valores de tempo. MFVec2f Define uma lista de vetores 2D representado por dois números reais que equivalem as coordenadas de um ponto no plano cartesiano x e

y. MFVec3f Define uma lista de vetores 3D representado por três números reais que equivalem as coordenadas de um ponto no espaço cartesiano x,

y e z. SFBool Contém um único valor Booleano. Pode ser preenchido com as palavras TRUE ou FALSE. SFColor Define um vetor com três posições, no formato RGB, que representa uma cor. SFFloat Define um número real de precisão simples. SFImage Define uma imagem bidimensional. Seu valor consiste sequencialmente em 3 inteiros, representando a largura, a altura e o número de

componentes da imagem, seguido de sua matriz de pixels em hexadecimal. SFInt32 Define um número inteiro de 32 bits, representado no formato decimal ou hexadecimal, quando precedido por “0x”. SFNode Define um nó do VRML. SFRotation Especifica uma rotação em torno de um eixo arbitrário, por meio de 4 valores reais, em que os 3 primeiros definem o eixo de rotação e o

último o ângulo em radianos. SFString Define uma seqüência de caracteres no formato de codificação UTF-8. SFTime Define valor de tempo. SFVec2f Define um vetor 2D representado por dois números reais que equivalem as coordenadas de um ponto no plano cartesiano x e y. SFVec3f Define um vetor 3D representado por três números reais que equivalem as coordenadas de um ponto no espaço cartesiano x, y e z.

Page 41: GuiaVRML

Guia de Consulta Rápida VRML, Ezequiel R. Zorzal e Luciano F. Silva 41

Exemplo: #VRML V2.0 utf8 PROTO Nome [ eventIn SFFloat ex_de_evento_entrada ]{}

eventOut

Permite a criação de eventos de saída que retornam valores computados pelo protótipo. Estes eventos utilizarão dados de tipos possíveis de serem escolhidos e funcionam como variáveis globais. eventOut Tipo Nome_do_evento

Tipos Descrição

MFColor Define uma lista de vetores com três posições, no formato RGB, que representam um conjunto de cores. MFFloat Define uma lista de números reais. MFInt32 Define uma lista de números inteiros de 32 bits, representados no formato decimal ou hexadecimal, quando precedidos por “0x”. MFNode Define uma lista de nós do VRML. MFRotation Especifica uma rotação em torno de um eixo arbitrário, por meio de 4 valores, em que os 3 primeiros definem o eixo de rotação e o último

o ângulo em radianos. MFString Define uma seqüência de caracteres no formato de codificação UTF-8. MFTime Define uma lista de valores de tempo. MFVec2f Define uma lista de vetores 2D representado por dois números reais que equivalem as coordenadas de um ponto no plano cartesiano x e

y. MFVec3f Define uma lista de vetores 3D representado por três números reais que equivalem as coordenadas de um ponto no espaço cartesiano x,

y e z. SFBool Contém um único valor Booleano. Pode ser preenchido com as palavras TRUE ou FALSE. SFColor Define um vetor com três posições, no formato RGB, que representa uma cor. SFFloat Define um número real de precisão simples. SFImage Define uma imagem bidimensional. Seu valor consiste sequencialmente em 3 inteiros, representando a largura, a altura e o número de

componentes da imagem, seguido de sua matriz de pixels em hexadecimal. SFInt32 Define um número inteiro de 32 bits, representado no formato decimal ou hexadecimal, quando precedido por “0x”. SFNode Define um nó do VRML. SFRotation Especifica uma rotação em torno de um eixo arbitrário, por meio de 4 valores reais, em que os 3 primeiros definem o eixo de rotação e o

último o ângulo em radianos. SFString Define uma seqüência de caracteres no formato de codificação UTF-8. SFTime Define valor de tempo. SFVec2f Define um vetor 2D representado por dois números reais que equivalem as coordenadas de um ponto no plano cartesiano x e y. SFVec3f Define um vetor 3D representado por três números reais que equivalem as coordenadas de um ponto no espaço cartesiano x, y e z.

Exemplo: #VRML V2.0 utf8 PROTO Nome [ eventOut SFRotation ex_de_evento_saida ]{}

exposedField

Permite a criação de um campo que pode ser modificado por meio de eventos que funciona como uma variável global do sistema. Deverá ser atribuído um valor inicial a este campo. exposedField Tipo Nome_do_campo Valor_inicial

Tipos Descrição

MFColor Define uma lista de vetores com três posições, no formato RGB, que representam um conjunto de cores. MFFloat Define uma lista de números reais. MFInt32 Define uma lista de números inteiros de 32 bits, representados no formato decimal ou hexadecimal, quando precedidos por “0x”. MFNode Define uma lista de nós do VRML.

Page 42: GuiaVRML

Guia de Consulta Rápida VRML, Ezequiel R. Zorzal e Luciano F. Silva 42

MFRotation Especifica uma rotação em torno de um eixo arbitrário, por meio de 4 valores, em que os 3 primeiros definem o eixo de rotação e o último o ângulo em radianos.

MFString Define uma seqüência de caracteres no formato de codificação UTF-8. MFTime Define uma lista de valores de tempo. MFVec2f Define uma lista de vetores 2D representado por dois números reais que equivalem as coordenadas de um ponto no plano cartesiano x e

y. MFVec3f Define uma lista de vetores 3D representado por três números reais que equivalem as coordenadas de um ponto no espaço cartesiano x,

y e z. SFBool Contém um único valor Booleano. Pode ser preenchido com as palavras TRUE ou FALSE. SFColor Define um vetor com três posições, no formato RGB, que representa uma cor. SFFloat Define um número real de precisão simples. SFImage Define uma imagem bidimensional. Seu valor consiste sequencialmente em 3 inteiros, representando a largura, a altura e o número de

componentes da imagem, seguido de sua matriz de pixels em hexadecimal. SFInt32 Define um número inteiro de 32 bits, representado no formato decimal ou hexadecimal, quando precedido por “0x”. SFNode Define um nó do VRML. SFRotation Especifica uma rotação em torno de um eixo arbitrário, por meio de 4 valores reais, em que os 3 primeiros definem o eixo de rotação e o

último o ângulo em radianos. SFString Define uma seqüência de caracteres no formato de codificação UTF-8. SFTime Define valor de tempo. SFVec2f Define um vetor 2D representado por dois números reais que equivalem as coordenadas de um ponto no plano cartesiano x e y. SFVec3f Define um vetor 3D representado por três números reais que equivalem as coordenadas de um ponto no espaço cartesiano x, y e z.

Exemplo: #VRML V2.0 utf8 PROTO Nome [ exposedField SFVec3f ex_compo 1 2 3 ]{}

field Permite a criação de eventos de saída, que retornam valores computados pelo script. Estes eventos utilizarão dados de tipos possíveis de serem escolhidos. field Tipo Name_do_campo Valor_inicial

Tipos Descrição

MFColor Define uma lista de vetores com três posições, no formato RGB, que representam um conjunto de cores. MFFloat Define uma lista de números reais. MFInt32 Define uma lista de números inteiros de 32 bits, representados no formato decimal ou hexadecimal, quando precedidos por “0x”. MFNode Define uma lista de nós do VRML. MFRotation Especifica uma rotação em torno de um eixo arbitrário, por meio de 4 valores, em que os 3 primeiros definem o eixo de rotação e o último

o ângulo em radianos. MFString Define uma seqüência de caracteres no formato de codificação UTF-8. MFTime Define uma lista de valores de tempo. MFVec2f Define uma lista de vetores 2D representado por dois números reais que equivalem as coordenadas de um ponto no plano cartesiano x e

y. MFVec3f Define uma lista de vetores 3D representado por três números reais que equivalem as coordenadas de um ponto no espaço cartesiano x,

y e z. SFBool Contém um único valor Booleano. Pode ser preenchido com as palavras TRUE ou FALSE. SFColor Define um vetor com três posições, no formato RGB, que representa uma cor. SFFloat Define um número real de precisão simples. SFImage Define uma imagem bidimensional. Seu valor consiste sequencialmente em 3 inteiros, representando a largura, a altura e o número de

componentes da imagem, seguido de sua matriz de pixels em hexadecimal. SFInt32 Define um número inteiro de 32 bits, representado no formato decimal ou hexadecimal, quando precedido por “0x”. SFNode Define um nó do VRML.

Page 43: GuiaVRML

Guia de Consulta Rápida VRML, Ezequiel R. Zorzal e Luciano F. Silva 43

SFRotation Especifica uma rotação em torno de um eixo arbitrário, por meio de 4 valores reais, em que os 3 primeiros definem o eixo de rotação e o último o ângulo em radianos.

SFString Define uma seqüência de caracteres no formato de codificação UTF-8. SFTime Define valor de tempo. SFVec2f Define um vetor 2D representado por dois números reais que equivalem as coordenadas de um ponto no plano cartesiano x e y. SFVec3f Define um vetor 3D representado por três números reais que equivalem as coordenadas de um ponto no espaço cartesiano x, y e z.

Exemplo: #VRML V2.0 utf8 PROTO Nome [ field SFVec3f ex_compo 1 2 3 ]{}

IS

Permite definir os nós e parâmetros que serão prototipados. PROTO Nome [ eventIn Tipo Nome_do_evento eventOut Tipo Nome_do_evento exposedField Tipo Name_do_campo Valor_inicial field Tipo Name_do_campo Valor_inicial ]{ Parâmetros_prototipado IS Nome_do_evento Parâmetros_prototipado IS Nome_do_campo }

Exemplo: #VRML V2.0 utf8 PROTO DuplaEsfera [ field SFColor Cor1 1 1 1 field SFColor Cor2 1 1 1 ]{ Transform { children[ Transform { translation -0.4 0 0 children [ Shape { appearance Appearance { material Material { diffuseColor IS Cor1 } } geometry Sphere { radius 0.5 } } ] } Transform { translation 0.4 0 0 children [ Shape { appearance Appearance { material Material { diffuseColor IS Cor2 } } geometry Sphere { radius 0.5 } } ] }

Page 44: GuiaVRML

Guia de Consulta Rápida VRML, Ezequiel R. Zorzal e Luciano F. Silva 44

] } } #Realizando a instância do protótipo DuplaEsfera { Cor1 1 1 0 Cor2 0 1 0 }

EXTERNPROTO Permite utilizar um protótipo definido em um arquivo externo. No entanto, ainda é necessário declarar a interface do protótipo e os valores default para cada campo. Em suma, o comando EXTERNPROTO é uma referência a um comando PROTO em um outro arquivo VRML. EXTERNPROTO Nome[ eventIn Tipo Nome_do_evento eventOut Tipo Nome_do_evento exposedField Tipo Name_do_campo Valor_inicial field Tipo Name_do_campo Valor_inicial ] "Caminho"

Parâmetros Descrição

eventIn Permite a criação de eventos de entrada que passam parâmetros para o protótipo. Estes eventos utilizarão dados de tipos possíveis de serem escolhidos.

eventOut Permite a criação de eventos de saída que retornam valores computados pelo protótipo. Estes eventos utilizarão dados de tipos possíveis de serem escolhidos e funcionam como variáveis globais.

exposedField Permite a criação de um campo que pode ser modificado por meio de eventos que funciona como uma variável global do sistema. Deverá ser atribuído um valor inicial a este campo.

field Permite a criação de um campo de entrada e saída que funciona como uma variável global do sistema. Deverá ser atribuído um valor inicial a este campo.

eventIn

Permite a criação de eventos de entrada que passam parâmetros para o protótipo. Estes eventos utilizarão dados de tipos possíveis de serem escolhidos. eventIn Tipo Nome_do_evento

Tipos Descrição

MFColor Define uma lista de vetores com três posições, no formato RGB, que representam um conjunto de cores. MFFloat Define uma lista de números reais. MFInt32 Define uma lista de números inteiros de 32 bits, representados no formato decimal ou hexadecimal, quando precedidos por “0x”. MFNode Define uma lista de nós do VRML. MFRotation Especifica uma rotação em torno de um eixo arbitrário, por meio de 4 valores, em que os 3 primeiros definem o eixo de rotação e o último

o ângulo em radianos. MFString Define uma seqüência de caracteres no formato de codificação UTF-8. MFTime Define uma lista de valores de tempo. MFVec2f Define uma lista de vetores 2D representado por dois números reais que equivalem as coordenadas de um ponto no plano cartesiano x e

y. MFVec3f Define uma lista de vetores 3D representado por três números reais que equivalem as coordenadas de um ponto no espaço cartesiano x,

y e z. SFBool Contém um único valor Booleano. Pode ser preenchido com as palavras TRUE ou FALSE. SFColor Define um vetor com três posições, no formato RGB, que representa uma cor. SFFloat Define um número real de precisão simples. SFImage Define uma imagem bidimensional. Seu valor consiste sequencialmente em 3 inteiros, representando a largura, a altura e o número de

componentes da imagem, seguido de sua matriz de pixels em hexadecimal. SFInt32 Define um número inteiro de 32 bits, representado no formato decimal ou hexadecimal, quando precedido por “0x”. SFNode Define um nó do VRML.

Page 45: GuiaVRML

Guia de Consulta Rápida VRML, Ezequiel R. Zorzal e Luciano F. Silva 45

SFRotation Especifica uma rotação em torno de um eixo arbitrário, por meio de 4 valores reais, em que os 3 primeiros definem o eixo de rotação e o último o ângulo em radianos.

SFString Define uma seqüência de caracteres no formato de codificação UTF-8. SFTime Define valor de tempo. SFVec2f Define um vetor 2D representado por dois números reais que equivalem as coordenadas de um ponto no plano cartesiano x e y. SFVec3f Define um vetor 3D representado por três números reais que equivalem as coordenadas de um ponto no espaço cartesiano x, y e z.

Exemplo: #VRML V2.0 utf8 EXTERNPROTO Nome [ eventIn SFFloat ex_de_evento_entrada ] "Arquivo.wrl"

eventOut

Permite a criação de eventos de saída que retornam valores computados pelo protótipo. Estes eventos utilizarão dados de tipos possíveis de serem escolhidos e funcionam como variáveis globais. eventOut Tipo Nome_do_evento

Tipos Descrição

MFColor Define uma lista de vetores com três posições, no formato RGB, que representam um conjunto de cores. MFFloat Define uma lista de números reais. MFInt32 Define uma lista de números inteiros de 32 bits, representados no formato decimal ou hexadecimal, quando precedidos por “0x”. MFNode Define uma lista de nós do VRML. MFRotation Especifica uma rotação em torno de um eixo arbitrário, por meio de 4 valores, em que os 3 primeiros definem o eixo de rotação e o último

o ângulo em radianos. MFString Define uma seqüência de caracteres no formato de codificação UTF-8. MFTime Define uma lista de valores de tempo. MFVec2f Define uma lista de vetores 2D representado por dois números reais que equivalem as coordenadas de um ponto no plano cartesiano x e

y. MFVec3f Define uma lista de vetores 3D representado por três números reais que equivalem as coordenadas de um ponto no espaço cartesiano x,

y e z. SFBool Contém um único valor Booleano. Pode ser preenchido com as palavras TRUE ou FALSE. SFColor Define um vetor com três posições, no formato RGB, que representa uma cor. SFFloat Define um número real de precisão simples. SFImage Define uma imagem bidimensional. Seu valor consiste sequencialmente em 3 inteiros, representando a largura, a altura e o número de

componentes da imagem, seguido de sua matriz de pixels em hexadecimal. SFInt32 Define um número inteiro de 32 bits, representado no formato decimal ou hexadecimal, quando precedido por “0x”. SFNode Define um nó do VRML. SFRotation Especifica uma rotação em torno de um eixo arbitrário, por meio de 4 valores reais, em que os 3 primeiros definem o eixo de rotação e o

último o ângulo em radianos. SFString Define uma seqüência de caracteres no formato de codificação UTF-8. SFTime Define valor de tempo. SFVec2f Define um vetor 2D representado por dois números reais que equivalem as coordenadas de um ponto no plano cartesiano x e y. SFVec3f Define um vetor 3D representado por três números reais que equivalem as coordenadas de um ponto no espaço cartesiano x, y e z.

Exemplo: #VRML V2.0 utf8 EXTERNPROTO Nome [ eventOut SFRotation ex_de_evento_saida ] "Arquivo.wrl"

exposedField Permite a criação de um campo que pode ser modificado por meio de eventos que funciona como uma variável global do sistema. Deverá ser atribuído um valor inicial a este campo.

Page 46: GuiaVRML

Guia de Consulta Rápida VRML, Ezequiel R. Zorzal e Luciano F. Silva 46

exposedField Tipo Name_do_campo Valor_inicial

Tipos Descrição

MFColor Define uma lista de vetores com três posições, no formato RGB, que representam um conjunto de cores. MFFloat Define uma lista de números reais. MFInt32 Define uma lista de números inteiros de 32 bits, representados no formato decimal ou hexadecimal, quando precedidos por “0x”. MFNode Define uma lista de nós do VRML. MFRotation Especifica uma rotação em torno de um eixo arbitrário, por meio de 4 valores, em que os 3 primeiros definem o eixo de rotação e o último

o ângulo em radianos. MFString Define uma seqüência de caracteres no formato de codificação UTF-8. MFTime Define uma lista de valores de tempo. MFVec2f Define uma lista de vetores 2D representado por dois números reais que equivalem as coordenadas de um ponto no plano cartesiano x e

y. MFVec3f Define uma lista de vetores 3D representado por três números reais que equivalem as coordenadas de um ponto no espaço cartesiano x,

y e z. SFBool Contém um único valor Booleano. Pode ser preenchido com as palavras TRUE ou FALSE. SFColor Define um vetor com três posições, no formato RGB, que representa uma cor. SFFloat Define um número real de precisão simples. SFImage Define uma imagem bidimensional. Seu valor consiste sequencialmente em 3 inteiros, representando a largura, a altura e o número de

componentes da imagem, seguido de sua matriz de pixels em hexadecimal. SFInt32 Define um número inteiro de 32 bits, representado no formato decimal ou hexadecimal, quando precedido por “0x”. SFNode Define um nó do VRML. SFRotation Especifica uma rotação em torno de um eixo arbitrário, por meio de 4 valores reais, em que os 3 primeiros definem o eixo de rotação e o

último o ângulo em radianos. SFString Define uma seqüência de caracteres no formato de codificação UTF-8. SFTime Define valor de tempo. SFVec2f Define um vetor 2D representado por dois números reais que equivalem as coordenadas de um ponto no plano cartesiano x e y. SFVec3f Define um vetor 3D representado por três números reais que equivalem as coordenadas de um ponto no espaço cartesiano x, y e z.

Exemplo: #VRML V2.0 utf8 EXTERNPROTO Nome [ exposedField SFVec3f ex_compo 1 2 3 ] "Arquivo.wrl"

field Permite a criação de eventos de saída, que retornam valores computados pelo protótipo. Estes eventos utilizarão dados de tipos possíveis de serem escolhidos. field Tipo Name_do_campo Valor_inicial

Tipos Descrição

MFColor Define uma lista de vetores com três posições, no formato RGB, que representam um conjunto de cores. MFFloat Define uma lista de números reais. MFInt32 Define uma lista de números inteiros de 32 bits, representados no formato decimal ou hexadecimal, quando precedidos por “0x”. MFNode Define uma lista de nós do VRML. MFRotation Especifica uma rotação em torno de um eixo arbitrário, por meio de 4 valores, em que os 3 primeiros definem o eixo de rotação e o último

o ângulo em radianos. MFString Define uma seqüência de caracteres no formato de codificação UTF-8. MFTime Define uma lista de valores de tempo. MFVec2f Define uma lista de vetores 2D representado por dois números reais que equivalem as coordenadas de um ponto no plano cartesiano x e

y. MFVec3f Define uma lista de vetores 3D representado por três números reais que equivalem as coordenadas de um ponto no espaço cartesiano x,

y e z. SFBool Contém um único valor Booleano. Pode ser preenchido com as palavras TRUE ou FALSE.

Page 47: GuiaVRML

Guia de Consulta Rápida VRML, Ezequiel R. Zorzal e Luciano F. Silva 47

SFColor Define um vetor com três posições, no formato RGB, que representa uma cor. SFFloat Define um número real de precisão simples. SFImage Define uma imagem bidimensional. Seu valor consiste sequencialmente em 3 inteiros, representando a largura, a altura e o número de

componentes da imagem, seguido de sua matriz de pixels em hexadecimal. SFInt32 Define um número inteiro de 32 bits, representado no formato decimal ou hexadecimal, quando precedido por “0x”. SFNode Define um nó do VRML. SFRotation Especifica uma rotação em torno de um eixo arbitrário, por meio de 4 valores reais, em que os 3 primeiros definem o eixo de rotação e o

último o ângulo em radianos. SFString Define uma seqüência de caracteres no formato de codificação UTF-8. SFTime Define valor de tempo. SFVec2f Define um vetor 2D representado por dois números reais que equivalem as coordenadas de um ponto no plano cartesiano x e y. SFVec3f Define um vetor 3D representado por três números reais que equivalem as coordenadas de um ponto no espaço cartesiano x, y e z.

Exemplo: #VRML V2.0 utf8 EXTERNPROTO DuplaEsfera [ field SFColor Cor1 1 1 1 field SFColor Cor2 1 1 1 ] "Arquivo_Esferas_Proto.wrl"

Comandos adicionais A linguagem VRML permite desenvolver algumas funcionalidades específicas de interação com o usuário, como por exemplo, criar um link entre um ambiente virtual e uma página Web, definir formas de navegação no ambiente, etc. Abaixo serão descritos comandos que possibilitam estas funcionalidades.

# Comentários

O símbolo “#” permite comentar uma linha do documento VRML.

Exemplo: #VRML V2.0 utf8 # Desenha uma esfera. Shape { appearance Appearance { material DEF Cor Material {} } geometry Sphere {} }

LOD

Permite definir níveis de detalhes para objetos virtuais de acordo com a distância do usuário a estes objetos. LOD { center Valor1 Valor2 Valor3 level [Objetos] range [Valor1, Valor2, ..., ValorN] }

Parâmetros Descrição

center Define um vetor 3D contendo o centro dos objetos contidos no nó LOD. Este centro é usado para calcular as distâncias de detalhamento. level Permite inserir objetos com diferentes níveis de detalhe, ordenados do mais complexo ao mais simples. range Determina uma lista de distâncias onde serão mostrados cada nível de detalhe. Os seus valores devem estar em ordem crescente.

Exemplo: #VRML V2.0 utf8 LOD { range [ 15,25 ]

Page 48: GuiaVRML

Guia de Consulta Rápida VRML, Ezequiel R. Zorzal e Luciano F. Silva 48

center 0 0 0 level [ #Primeiro nível Shape { appearance Appearance { material Material {} } geometry Sphere { radius 0.75 } } #Segundo nível Shape { appearance Appearance { material Material { diffuseColor .33 .34 .6 specularColor .29 .29 .29 ambientIntensity .103 shininess .79 } } geometry Sphere { radius 0.5 } } ] }

NavigationInfo

Permite especificar como será a navegação do usuário. NavigationInfo { avatarSize [ Valor1, Valor2, Valor3 ] headlight TRUE|FALSE speed Valor type ["WAKE","EXAMINE","FLY","NONE"] visibilityLimit Valor }

Parâmetros Descrição

avatarSize Determina um vetor de três posições contendo as dimensões físicas do usuário respectivamente em X, Y e Z.. Estas dimensões são utilizadas para possíveis detecções de colisão do usuário com objetos virtuais.

headlight Especifica se a luz da câmera do usuário, headlight, estará ligada, TRUE, ou não, FALSE. speed Define a velocidade, em metros por segundo, com que o usuário se move no ambiente virtual. type Determina o tipo de navegação que o usuário exercerá no ambiente virtual. Seus possíveis valores são "WALK", "EXAMINE", "FLY", e

"NONE". Podem ser definidos mais de um tipo de navegação ao mesmo tempo, exceto "NONE", que retira a navegação no ambiente. Caso este parâmetro não seja preenchido o browser habilita os tipos "WALK", "EXAMINE" e "FLY" a mesmo tempo.

visibilityLimit Determina a distância máxima à qual o usuário pode ver. O valor 0.0 ou sua falta indica que esta distância é infinita.

Exemplo: #VRML V2.0 utf8 NavigationInfo { avatarSize [ 1 1 1 ] headlight TRUE speed 1.0 type [ "WALK", "FLY" ] visibilityLimit 30.0

Page 49: GuiaVRML

Guia de Consulta Rápida VRML, Ezequiel R. Zorzal e Luciano F. Silva 49

}

Viewpoint

Permite especificar os parâmetros para a visão do usuário como posição e orientação, ou criar novos pontos de visão no ambientes virtual. Para criar diferentes pontos de visão deve-se declarar diferentes Viewpoints, sendo que a câmera a qual irá iniciar no ambiente virtual é a primeira declarada. Viewpoint { description "Descrição" fieldOfView Valor jump TRUE|FALSE position Valor1 Valor2 Valor3 orientation Valor1 Valor2 Valor3 Valor4 }

Parâmetros Descrição

description Permite atribuir uma descrição textual para o ponto de vista. A maioria dos browsers oferece uma lista dos pontos de vista, o conteúdo desta lista é constituído das descrições criadas por meio do parâmetro description. A ordem com que os pontos de vista são listados é a mesma ordem que eles são declarados no documento VRML.

fieldOfView Especifica um ângulo, em radiano, para a visão perspectiva do usuário. Possibilita a visualização do ambiente como se o usuário estivesse usando uma lente e o ângulo determinado corresponde à abertura desta lente.

jump Determina como será a transição de um ponto de vista ativo para um novo ponto de vista. Caso seu valor seja FALSE o usuário será movido ao longo do caminho entre o ponto de vista atual e o novo ponto de vista, caso contrário, com valor TRUE, o ponto de vista é simplesmente mudado sem movimento.

position Determina uma coordenada 3D correspondente a localização do ponto de vista do usuário no ambiente. orientation Define uma rotação que especifica a direção para onde o usuário esta olhando.

Exemplo: #VRML V2.0 utf8 Viewpoint { description "1" position 0 0 10 jump FALSE } Viewpoint { description "2" position 0 0 50 jump FALSE } Shape { appearance Appearance { material Material {} } geometry Sphere {} }

WorldInfo

Este nó não tem nenhum impacto visual no ambiente virtual, o seu uso restringe-se às finalidades da documentação e a dar um título ao ambiente. WorldInfo { info ["Lista de Palavras"] title "Título" }

Parâmetros Descrição

info Permite definir uma lista de strings, que podem servir para documentar o ambiente virtual. title Permite definir uma string, que pode corresponder ao titulo do ambiente virtual.

Exemplo: #VRML V2.0 utf8

Page 50: GuiaVRML

Guia de Consulta Rápida VRML, Ezequiel R. Zorzal e Luciano F. Silva 50

WorldInfo { info [ "Exemplo do comando WorldInfo","Realidade Virtual com VRML" ] title "O comando WorldInfo" }