1
VRML
Virtual Reality Modeling Language
INTRODUÇÃO AO VRMLBaseado em apresentação de Judith Kelner, Alejandro Frery
2 2
Roteiro
1. O que é VRML 2. Histórico 3. Objetivos da VRML 4. VRML, Internet e WWW 5. Visão geral do VRML 6. Estrutura do Arquivo VRML 7. Conceitos-chave 8. Semântica dos Nós 9. Primitivas Básicas 10.Primitivas AvançadasAí está o roteiro da apresentação. Nós começaremos dizendo o que é VRML. Em seguida, apresentaremos um breve histórico da linguagem. Falaremos sobre seus objetivos, como ela se relaciona com a Internet em geral. Daremos uma visão geral de como funciona ou está organizada a linguagem. Apresentaremos conceitos básicos para implementação. Daí, vou explicar como é que funcionam os nós de VRML e introduzir algumas primitivas básicas.
3
3
O Que é VRML
Virtual Reality Modeling Language ÎSuporte para RV não-imersiva
ÎVRML não suporta imersão • Capacetes 3D, luvas digitais
Não é exatamente "Modeling Language"
ÎVerdadeira linguagem de modelagem 3D deve prover primitivas de modelagem geométricas e mecanismos muito mais ricos
O que é então ?
ÎUm formato de intercâmbio para 3D
ÎPublicação de páginas Web em 3D (~HTML 3D) • Jogos, engenharia, visualização científica, experiências
educacionais, arquitetura
ÎUm modelo coerente para integração de 3D, 2D, texto e multimídia
VRML significa Virtual Reality Modeling Language. Ela é uma linguagem que dá suporta a RV-não imersiva., ou seja, que não suporta dispositivos de imersão, como Capacetes 3D, luvas digitais, etc. Pra quem nunca viu, nenhum desses , aqui no CIn nós temos um óculos tridimensional, apesar de que atualmente ele não está funcionando, pois a máquina na qual ele roda está sendo formatada. Se alguém tiver interesse, podemos marcar uma visita com vocês para mostrá-lo depois.
Voltando a VRML, ela não é exatamente uma linguagem de modelagem pelo fato de ela ser muito simples, não provendo mecanismos para modelagem de forma mais eficiente e complexa.
4
4
Histórico
1989: Silicon Graphics – projeto Scenario 1992: Iris Inventor 1994: Open Inventor 1994: Labyrinth 1995: Criação e ajustes 1996: Proposta de VRML 2.0 1997: Padronização ISO ÎEspecificação "VRML97" (aka VRML2.0)
1989: Silicon Graphics – projeto Scenario
Projeto e construção de infra-estrutura para aplicações gráficas 3D 1992: Iris Inventor
Primeira ferramenta 3D produzida.
Toolkit C++ que definiu boa parte da semântica atual de VRML 1994: Open Inventor
Versão revisada do Iris
Open porque era portável em várias plataformas e baseado no OpenGL (Silicon Graphics)
Base para o primeiro Draft da especificação VRML 1.0 1994: Labyrinth
Um browser 3D para a WWW
Especificação publicada na "Second International Conference on the World Wide Web", em Chicago
1995: Os ajustes
Bug fixes, melhorias
Propostas para VRML 1.1 (animação, interação) 1996: Request for proposals for VRML 2.0
Muitas contribuições de peso (Silicon Graphics, Sony, Mitra...)
Especificação VRML 2.0 publicada em agosto na SIGGRAPH 96, em New Orleans Julho: ISO cria comitê para adotar o VRML 2.0 - Committee Draft (CD) 14772 1997: Padronização ISO
5
5
Objetivos da VRML
Modelagem de objetos 3DÎComposição de "mundos" pela hierarquia de objetos ÎAnimação, interação, multimídia
Îformato intercambiável (várias aplicações podem ler/gravar)
Internet e WWW
ÎVRML foi projetado para ser usado com a infraestrutura Internet/WWW existente
Simplicidade
ÎSuporte VRML deve ser facilmente adicionado às aplicações
• Vários browsers (navegadores) podem e devem dar suporte Facilidade de Composição
ÎFacilidade em se "montar o todo a partir das peças" ÎProdutividade e trabalho em grupo
Auto-explicativa.
6
6
Objetivos da VRML
Cont. Escalabilidade
ÎO navegador VRML deve operar com "mundos" distribuídos na Internet
ÎIndependente da potência da máquina
ÎMundos ajustados à performance da rede (14.4K ~ OC12) ÎEspecificação permite adições futuras
Otimização da performance
ÎAlgoritmos de manipulação 3D têm efeito nas ramificações agrupadas
ÎSe algo não puder ter performance, então não fará parte da especificação
Versões futuras
ÎInteração entre vários usuários
ÎCriaturas autônomas que podem sentir e reagir no ambiente
7
7
VRML, Internet e WWW
Navegadores suportam VRML através de plug-ins Arquivos VRML podem referenciar vários outros formatos
ÎJPEG, PNG, GIF, MPEG podem ser usados para compor a textura de objetos
ÎWAV, MIDI podem ser usados para sons emitidos pelo ambiente ou por objetos
ÎArquivos com código Java ou JavaScript podem ser referenciados para implementar comportamento de objetos
VRML permite hiperlinks
Organizações que definem esses padrões
ÎExemplo: World Wide Web Consortium (W3C) padronizou um "tag" HTML (<OBJECT>)que permite embutir VRML, Java, ou outros tipos de arquivos em documentos HTML.
A definição de como VRML deve ser usada com outros padrões é geralmente feita pelas organizações que definem esses padrões
Exemplo: World Wide Web Consortium (W3C) padronizou um "tag" HTML (<OBJECT>)que permite embutir VRML, Java, ou outros tipos de arquivos em documentos HTML.
8
8
VRML, Internet e WWW
cont.Existem várias maneiras de combinar VRML ,JAVA e HTML: Arquivo VRML dentro de um arquivo HTML:
ÎUsando o tag <OBJECT>
Código Java dentro de arquivo VRML:
ÎFaz parte do padrão VRML (mas é de implementação opcional)
Bibliotecas de Classes Java correspondentes aos nós VRML: ÎPara implementação de ferramentas VRML (ex: VRML browsers)
Mecanismos ainda não padronizados ou implementados ÎApplet Java conversando com browser VRML
ÎArquivo HTML dentro de arquivo VRML
• Ex: arquivo HTML como uma textura de um objeto 3D ÎApplet Java dentro de um arquivo VRML:
• Ex: applet Java como uma textura de um objeto 3D
9
9
VRML: O Que Falta
Formato binário para VRML ÎCódigo VRML não tem proteção
ÎPadrão ainda não definido
Compressão
ÎJá se usa compressão – padrão gzip (taxa média 5:1)
ÎFormato binário poderia aumentar compressão (10:1, 50:1)
Suporte multiusuário ÎProtótipos em andamento
Formato binário para VRML
Código VRML não tem proteção
Padrão ainda não definido, propostas em discussão
10
10
Visão Geral do VRML
Estrutura Gráfica da CenaÎVRML descreve "mundos" (worlds) usando uma cena gráfica hierárquica
ÎEntidades na cena são chamados "nós" (nodes). ÎVRML 2.0 define 54 tipos de nós:
• Primitivas geométricas • Propriedades de aparência, som • Agrupamento de nós
ÎNós armazenam seus dados (atributos) em "campos" (fields). ÎVRML 2.0 define 20 tipos de campos (números, arrays) ÎNós podem conter outros nós.
• Alguns nós podem ter "filhos" (children) • Alguns nós podem ter mais de um "pai“
• Um nó não pode conter a si mesmo (recursividade).
• Criação de "mundos" complexos ou objetos a partir de subpartes
Tal estrutura de nós permite permite criar "mundos" complexos ou objetos a partir de sub-partes
11
11
Visão Geral do VRML
cont. Arquitetura de Eventos
ÎMecanismo de geração de eventos permite que os nós da cena se comuniquem entre si.
ÎCada tipo de nó define os nomes e tipos de eventos que podem ser gerados ou recebidos
Sensores
ÎSensores são as primitivas básicas de animação e interação com o usuário.
• O nó "TimeSensor" gera eventos com o passar do tempo e é a base para todos os comportamentos animados.
• Outros sensores geram eventos quando o usuário se movimenta através da cena ou quando interage através de algum dispositivo de entrada.
ÎSensores geram apenas eventos. Eles devem ser combinados com outros nós para ter qualquer efeito visual na cena.
Auto-explicativa.
12
12
Visão Geral do VRML
cont. Scripts e Interpoladores
ÎScripts permitem ao autor da cena definir comportamentos arbitrários, usando qualquer linguagem suportada.
ÎVRML 2.0 define conexões para linguagens Java e JavaScript ÎNós "Script" podem ser inseridos entre geradores de eventos
(sensores) e recebedores.
ÎInterpoladores são scripts embutidos que executam animações. Eles podem ser combinados com "TimeSensor" e algum nó da cena para fazer objetos se moverem.
Encapsulamento e Reuso
ÎGeometria, propriedades, animações ou comportamento podem ser encapsulados separadamente ou junto da cena.
ÎPermite a definição de um novo tipo de nó a partir da combinação de tipos existentes de nós
• Biblioteca de objetos 3D
• Facilidade de uso, trabalho em equipe • Reduz tamanho de arquivos
13
13
Visão Geral do VRML
cont. Cenas Distribuídas
ÎVRML 2.0 inclui duas primitivas que permitem que a definição de uma cena possa ser distribuída independentemente.
ÎO nó "Inline" permite a inclusão de outra cena
armazenada em outro arquivo – em qualquer lugar da Web.
ÎO comando "EXTERNPROTO" permite que definições de novos nós possam ser acessados de qualquer lugar da Web. É o mecanismo básico que estende o VRML.
Auto-explicativa.
14
14
Visão Geral do VRML
cont. Modelo Conceitual de um Browser VRML
A figura mostra o modelo conceitual de um VRML Browser. O browser é retratado como uma aplicação de apresentação que aceita entradas do usuário na forma de arquivos de manipulação e navegação através de um dispositivo de entrada. Os três componentes principais do browser são: Parser, Scene Graph e Audio/Visual presentation.
O componente Parser lê os arquivos VRML e cria a Scene Graph . O componente Scene Graph consiste em agregar todos os objetos e organizar sua hierarquia. O componente Scene Graph também é responsável por processar os eventos do usuário. Por último o componente Audio/Visual Presentation exibe a saída para o usuário dos objetos renderizados do Scene Graph.
15
15
Estrutura do Arquivo VRML
Arquivos VRML têm extensão .wrl (world) Cabeçalho (obrigatório)
Cena
ÎDefinição dos objetos gráficos
ÎContém os nós (nodes) que descrevem objetos e suas propriedades
ÎObjetos podem ter geometria hierarquicamente agrupada para prover representações áudio -visuais complexas. Protótipos
ÎExtensões de nós VRML definidos externamente pelo usuário
Eventos
ÎDefinições dos eventos associados aos objetos
Alguns conceitos básicos da estrutura de VRML.
16
16
Estrutura do Arquivo VRML
Cabeçalho
ÎPrimeira linha do arquivo
ÎIdentifica o arquivo como VRML e informa o tipo de codificação usada
• #VRML V2.0 <encoding type> [comment] <line terminator> ÎApenas um caractere de espaço entre os componentes do
cabeçalho
Î<encoding type> é "utf8"
• Existem outras codificações autorizadas pelo VRML 2.0 • "utf8" indica texto livre (padrão UTF-8 da ISO 10646-1,
RFC2044)
• Também conhecido como Unicode;-)
#VRML V2.0 utf8 Gerado por Maria da Silva
17
17
Estrutura do Arquivo VRML
# inicia um comentárioÎApenas o 1º comentário tem significado (cabeçalho) Caracteres NÃO permitidos para nomes
ÎPrimeira letra: + - 0-9 " ' # , . [ ] \ {} 0x0-0x20
ÎRestante: " ' # , . [ ] \ {} 0x0-0x20
Palavras reservadas
ÎDEF, EXTERNPROTO, FALSE, IS, NULL, PROTO, ROUTE
ÎTO, TRUE, USE, eventIn, eventOut, exposedField, field VRML é sensível a maiúsculas e minúsculas
Î"Sphere" é diferente de "sphere"
Î"BEGIN" é diferente de "begin"
Vale ressaltar esses tópicos quando vocês estiverem codificando seus mundos virtuais:
•Comentários são feitos linha a linha através do uso do caractere #; •Alguns caracteres são permitidos estarem em nomes de nós. São eles:
Primeira letra: + - 0-9 " ' # , . [ ] \ {} 0x0-0x20
Restante: " ' # , . [ ] \ {} 0x0-0x20
•Algumas palavras são reservadas e não devem ser utilizadas como nomes. São elas:
DEF, EXTERNPROTO, FALSE, IS, NULL, PROTO, ROUTE, TO, TRUE, USE, eventIn,
eventOut, exposedField, field
•VRML é sensível a maiúsculas e minúsculas
18
18
Conceitos-chave: Unidades de Medida
Unidades de medidaÎRadianos foi escolhido por compatibilidade com o padrão da linguagem C (math library routines)
ÎConversão grausÆ radianos: Radianos =
π
.graus / 180 ÎTempo é expresso como um double-precision floating point(precisão nano-segundos)
Categoria Unidade
Distância linear Metros
Ângulos Radianos
Tempo Segundos
Cores RGB ([0., 1.], [0., 1.], [0., 1.])
As unidades padrão para VRML são: •Para distância linear: metros; •Para ângulos: radianos; •Para tempo: segundos;
•Para cores: RGB, que consiste num conjunto de três números variando de 0 a 256 e que representam seqüencialmente valores de vermelho, verde e azul. Isso será melhor explicado mais à frente.
19
19
Conceitos-chave: Nó
Sintaxe da declaração do NóÎ[DEF <name>] <nodeType> { <body> }
ÎNome opcional
ÎTipo do nó
ÎCorpo do nó
Î O [DEF <name>] permite usar o nó depois referenciando
o nome com o comando USE (ex.:USE <name>) ÎNão precisa de espaço separando { } e [ ] ÎExemplo:
Box { size 2 2 2 }
Aqui temos a declaração de um nó. Um nó não precisa ter um nome definido para si. Entretanto, esses nomes são muito úteis para reutilizar um mesmo nó em diferentes locais do mundo.
**Observação: não é possível modificar uma reutilização de um nó (gerada a partir do comendo USE), pois esse é uma cópia do nó original e não um novo objeto que herda suas características. Além disso, se você modificar o objeto original, todas as suas cópias também serão modificadas.
20
20
Conceitos-chave: Campo
Sintaxe da declaração de um campo: Î<fieldName> <fieldValue> Î<fieldName> [ <fieldValues> ] Exemplos: Îradius 0.1 Îheight 20 ÎcolorIndex [0 1 2 3 4 5 6 7 ] ÎcoordIndex [ 0 1 2 3 -1, 8 9 10 11 -1, 0 1 11 8 5 4 -1 ]
Existem dois tipos de declaração de campo:
•A primeira basicamente é a escrita do nome do campo seguido de seu(s) parâmetro(s) separados por espaço(s)
•O segundo consiste na escrita do nome do campo seguidos de valores entre colchetes e separados ou não pro vírgulas. Observe os exemplos.
21
21
Conceitos-chave: Campo
cont.
Tipos de Campo ÎSFBool TRUE/FALSE
ÎSFColor 3 valores float entre 0 e 1 (RGB). Ex.: 0 0.7 0.2 ÎMFColor lista de valores SFColor. Ex.: [0 0.5 0, 1 0 0] ÎSFFloat 1 valor float. Ex.: 1.7456
ÎMFFloat lista de valores float. Ex.: [1.2, 3.5, 7, 9.5] ÎSFInt32 & MFInt32 inteiro de 32bits & lista SFNode &
MFNode nó & lista de nós ÎSFRotation 4 valores float:
• 3 primeiros: vetor-eixo de rotação • 4º: ângulo de rotação em radianos ÎMFRotation lista de SFRotation
Aqui temos tipos de campo. Coloquei aqui como forma de consulta rápida para vocês, mas não entrarei e muitos detalhes.
Consultem na Internet para saber mais sobre cada um desses tipos: •SFBool valor booleano (TRUE/FALSE)
•SFColor 3 valores float entre 0 e 1 (RGB). Ex.: 0 0.7 0.2 •MFColor lista de valores SFColor. Ex.: [0 0.5 0, 1 0 0] •SFFloat 1 valor float. Ex.: 1.7456
•MFFloat lista de valores float. Ex.: [1.2, 3.5, 7, 9.5]
•SFInt32 & MFInt32 inteiro de 32bits & lista (representação pode ser feita em decimal ou hexadecimal. Números hexadecimais começam com 0x. Ex.: 0xFF é 255 em decimal)
•SFNode & MFNode nó & lista de nós •SFRotation 4 valores float:
•3 primeiros representam vetor que define eixo de rotação •Último representa ângulo de rotação em radianos •MFRotation lista de SFRotation
22
22
Conceitos-chave: Campo
cont.
Tipos de Campo
ÎSFString string de characteres utf-8. Ex.: “Eu” ÎMFString lista de SFStrings. E.x: [“Eu”, “Tu”, “Ele”] ÎSFTime & MFTime: tempo (float) & uma lista de tempos.
Exs.:1947582537.2323, [1000000000.1, 9.8]
ÎSFVec2f vetor 2D. Ex.: 1.4 7.3
ÎMFVec2f lista de vetores 2D. Ex.: [2.3 3.4, 4.5 5.6]
ÎSFVec3f vetor 3D.
Ex.: 1.4 7.3 9.1
ÎMFVec3f lista de vetores 3D. Ex.: [2.3 3.4 4.5, 5.6 6.7 7.8]
Continuando com os tipos de campo, temos:
SFString string de caracteres utf-8. Ex.: “Eu” MFString lista de SFStrings. E.x: [“Eu”, “Tu”, “Ele”]
SFTime & MFTime: tempo (float) & uma lista de tempos. Um tempo é
representado por um valor float que corresponde ao número de minutos passados de meia noite de 1º de Janeiro de 1970.
SFVec2f vetor 2D. Um vetor 2D é basicamente um par de valores float.
Ex.: 1.4 7.3
MFVec2f lista de vetores 2D. Ex.: [2.3 3.4, 4.5 5.6]
SFVec3f vetor 3D. Um vetor 3D é basicamente um trio de valores float.
Ex.: 1.4 7.3 9.1
23
23
Conceitos-chave: Campo
cont.
Tipos de Campo
ÎSFImage imagem bidimensional colorida ou em tons de cinza.
• 2 inteiros: largura e altura da imagem • 1 inteiro: número de componentes de cor:
– 1 para tons de cinza
– 2 para tons de cinza com transparência – 3 para RGB
– 4 para RGB com transparência
• N números hexadecimais (N = largura da imagem x altura da imagem) para a cor dos pixels. Ex.:
– Tons de cinza: 0X00 (cor preta)
– RGB com transparência: 0x00FF007F (verde semi-transparente)
SFImage imagem bidimensional colorida ou em tons de cinza. Consiste
de:
Dois números inteiros representando seqüencialmente a largura e a altura da imagem
Um número inteiro representando o número de componentes de cor da imagem:
Valor igual a 1 para imagem em tons de cinza apenas Valor igual a 2 para imagem em tons de cinza com transparência
Valor igual a 3 para imagem em RGB
Valor igual a 4 para imagem em RGB com transparência N números hexadecimais (N = largura da imagem x altura da imagem), com dois dígitos para cada componente de cor, descrevendo cada um a cor de um pixel da imagem. A ordem de definição dos pixels da imagem se dá da direita para a esquerda e de baixo para cima.
24
24
Conceitos-chave: Eventos
São notificações de mudança no valor de algum campo
Tipos
ÎEventOut eventos que geram informação ÎEventIn aceitam e utilizam informação externa
(EventOut)
Campos Exposed possuem EventIn e EventOut próprios
Outro conceito importante é conceito de eventos Os nos podem se comunicar entre si através da geração e captação de eventos. Eventos são, então, notificações de mudança no valor de algum campo passados e recebidos de um nó para outro. Os tipos de evento são:
EventOut eventos que geram informação
EventIn aceitam e utilizam informação externa (EventOut)
Alguns nós possuem campos que são do tipo exposed. Isso significa que o nó tem dois eventos já definidos para esse campo: set_nomeDoCampo (representando o EnventIn desse campo, servindo para receber novos valores para si) e nomeDoCampo_changed (representando o EnventOut desse campo, servindo para notificar o mundo externo sobre sua mudança de valor). Para facilitar o uso, não é necessáriao se referir a esses eventos com o prefixo set_ e sufixo _changed. Basta usa o nomeDoCampo e o navegador distinguirá qual dos dois eventos está sendo utilizado.
Somente campos Exposed podem ser modificados por exemplo (ver http://web3d.vapourtech.com/tutorials/vrml97/en/nodes.html ).
25
25
Conceitos-chave: Rotas
Efetuam a transmissão de informação entre eventos
ÎEx.: tocar um som quando o mouse for clicado
• Definir nomes únicos para os objetos cujos eventos serão ligados
DEF SENSOR TouchSensor { } DEF SOUND Sound { }
• Conectar campos através do comando Route
ROUTE SENSOR.touchTime TO SOUND.startTime
Se houver objetos com mesmo nome, todos serão afetados! Sensor EventOut TouchTime Sound EventIn StartTime Route
Para que os eventos sejam transmitidos, é necessário criar-se canais de comunicação entre eles. Esse canais são chamado de routes (que em inglês significa rotas). Eles irão ligar eventos de saída a eventos de entrada , assim efetuar a comunicação de mudança de valores entre campos de nós.
Para criar-se um rota precisa se ter bem-definidos o local do campo de EventOut e o de EventIn. Ou seja, cada nó tem que ter um nome único no código para identificá-lo. Observe o exemplo.
Criar nós com mesmo nome e com campos EventIn (fan out) fará com que esses campos desses nós recebam um mesmo EventOut – equivalente a um broadcast. Entretanto, Criar nós com mesmo nome e com campos EventOut (fan in) fará com que todos os EventOut gerados por esse campos desses nós vão para um mesmo EventIn (fan in). Isso pode gerar problemas de colisão entre os eventos gerados. Nesse caso, um controle de tempo de eventos tem que ser feito.
26
26
Conceitos-chave: Sistema de Coordenadas
Sistema de CoordenadasÎVRML usa sistema Cartesiano 3D
Î+X para a direita, -X para a esquerda
Î+Y para cima, -Y para baixo
Î+Z para perto, -Z para longe
Z
X Y
O sistema de coordenada de VRML é baseado na regrada mão direita,como mostrado na figura, onde a palma da mão fica de frente para a pessoa. O y positivo aponta para cima, o x positivo aponta para a direita e o z positivo aponta para fora do monitor.
27
27
Conceitos-chave: Cores
Sistema RGB Cada cor básica é representada por número decimal de 0 até 1 A cor é montada combinando as 3 cores básicas Para montar a cor
desejada, mapeie as cores básicas [0, 255] --> [0,1]
Aqui está como funciona o sistema de cores em VRML. Ele é baseado num sistema RGB aditivo. Ou seja, cada cor é definida por 3 valores de 0 a 256: o primeiro para o vermelho, o segundo para o verde e o terceiro para o azul. Ele é aditivo por que a soma das cores nos fornece o branco ao invés do preto. Em resumo, é similar à adição de luzes de diferentes cores e não como quando se compõe cores diferentes com o lápis de cor. A tabela ao lado mostra algumas cores resultantes de valores atribuídos ao sistema RGB aditivo.
28 28
Primitivas VRML
Primitivas Básicas Primitivas Avançadas Atenção:Nas páginas a seguir, a especificação dos nós VRML não contém, necessariamente, todos os atributos e opções. Por motivos didáticos, apenas as principais características foram selecionadas para discussão. Para uma referência completa dos nós VRML, veja a especificação da ISO em:
http://www.web3d.org/x3d/specifications/vrml/
Vamos passar agora para o estudo das primitivas em VRML. Antes de começar, entretanto gostaria de observar que a especificação dos nós VRML que eu darei aqui não contém todos seus atributos e opções. Por motivos didáticos, apenas as principais características foram selecionadas para discussão. Se vocês quiserem mais informações sobre cada nó, recomendo que procurem na Web ou sigam esse endereço.
29 29
Primitivas Básicas
Shape { ÎGeometry • Box • Cone • Cylinder • ElevationGrid • Extrusion • IndexedFaceSet • IndexedLineSet • PointSet • Sphere • Text ÎAppearance • material • texture • textureTransform }As primitivas básicas que veremos nessa aula são as que estão destacadas em verde. 30 30
Box
Box { size 2 2 2 } defaults x y z Centro = ( 0, 0, 0 )O campo size indica as dimensões das arestas do paralelepípedo seqüencialmente nos eixos x, y e z.
31 31
Box
#VRML V2.0 utf8 Shape { geometry Box {} appearance Appearance { material Material { diffuseColor 1 0 0 } } }Aparência: cor vermelha Valores default: 2 2 2
Aqui temos a definição da aparência do paralelepípedo dentro dele. Para tanto foi definido o nó appearance e, dentro dele, o nó material. O atributo de definição da cor é o DiffuseColor Sempre que se deseja atribuir cor a um objeto, deve-se inserir os nós appearance e material.
32 32
Sphere
Sphere { radius 1 } Raio default Centro = ( 0, 0, 0 ) Auto-explicativa.33 33
Sphere
#VRML V2.0 utf8 Shape { geometry Sphere {} appearance Appearance { material Material { diffuseColor 0 1 0 } } }Aparência: cor verde Raio default: 1
A cor é definida da mesma forma que para o paralelepípedo. Isso acontece para todos os objetos. 34 34
Cone
Cone { bottomRadius 1 height 2 side TRUE bottom TRUE }O nó cone possui quatro campos:
•bottomRadius: define o raio da base do cone e recebe valores inteiros (0, 1, 2) ou reais (0.2, 3.7)
•Height: define a altura do cone e recebe valores inteiros (0, 1, 2) ou reais (0.2, 3.7)
•Side: valor booleano que diz se os polígonos que definem a lateral do cone devem aparecer
•Bottom: valor booleano que diz se os polígonos que definem a base do cone devem aparecer
35 35
Cone
#VRML V2.0 utf8 Shape { geometry Cone {} appearance Appearance { material Material { diffuseColor 0 0 1 } } }Aparência: cor azul Valores default
A cor é definida da mesma forma que para o paralelepípedo. Isso acontece para todos os objetos. 36 36
Cylinder
Cylinder { bottom TRUE height 2 radius 1 side TRUE top TRUE }O nó cone possui quatro campos:
•Radius: define o raio das bases do cilindro e recebe valores inteiros (0, 1, 2) ou reais (0.2, 3.7)
•Height: define a altura do cilindro e recebe valores inteiros (0, 1, 2) ou reais (0.2, 3.7)
•Side: valor booleano que diz se os polígonos que definem a lateral do cilindro devem aparecer
•Bottom: valor booleano que diz se os polígonos que definem a base inferior do cilindro devem aparecer
•Top: valor booleano que diz se os polígonos que definem a base superior do cilindro devem aparecer
37 37
Cylinder
#VRML V2.0 utf8 Shape { geometry Cylinder {} appearance Appearance { material Material { diffuseColor 1 0 1 } } }Aparência: cor magenta Valores default
A cor é definida da mesma forma que para o paralelepípedo. Isso acontece para todos os objetos. 38 38 Referências ÎFloppy’s VRML 97 Tutorial: •http://web3d.vapourtech.com/tutorials/vrml97/ ÎWeb 3D Consortium – VRML Archives
•http://www.web3d.org/x3d/vrml/index.html