Roteiro VRML Virtual Reality Modeling Language INTRODUÇÃO AO VRML Baseado em apresentação de Judith Kelner, Alejandro Frery 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çadas 2 Aí 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. 1 2
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 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) 3 4 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. 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 Especificação "VRML97" (aka VRML2.0) 3 4
Objetivos da VRML Objetivos da VRML Cont. 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 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 5 6 Auto-explicativa. Auto-explicativa. 5 6
VRML, Internet e WWW VRML, Internet e WWW cont. 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. 7 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 8 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. Auto-explicativa. 7 8
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 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 9 10 Formato binário para VRML Código VRML não tem proteção Padrão ainda não definido, propostas em discussão Tal estrutura de nós permite permite criar "mundos" complexos ou objetos a partir de sub-partes 9 10
Visão Geral do VRML cont. 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. 11 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 12 Auto-explicativa. Auto-explicativa. 11 12
Visão Geral do VRML cont. 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. Modelo Conceitual de um Browser VRML 13 14 Auto-explicativa. 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. 13 14
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 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 15 16 Alguns conceitos básicos da estrutura de VRML. Aqui temos a definição do cabeçalho do arquivo, essencial a todo arquivo vrml. 15 16
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" Conceitos-chave: Unidades de Medida Unidades de medida Categoria Unidade Distância linear Metros Ângulos Tempo Radianos Segundos Cores RGB ([0., 1.], [0., 1.], [0., 1.]) 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) 17 18 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 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. 17 18
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 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 ] 19 20 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. 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. 19 20
Conceitos-chave: Campo cont. 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 21 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] 22 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 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 MFVec3f lista de vetores 3D.Ex.: [2.3 3.4 4.5, 5.6 6.7 7.8] 21 22
Conceitos-chave: Campo cont. Conceitos-chave: Eventos 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 semitransparente) 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 23 24 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. 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 ). 23 24
Conceitos-chave: Rotas Conceitos-chave: Sistema de Coordenadas 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 Sensor EventOut TouchTime Route Sound EventIn StartTime 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 Y X Se houver objetos com mesmo nome, todos serão afetados! 25 26 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. 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. 25 26
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] 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/ 27 28 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. 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. 27 28
Primitivas Básicas Shape { Geometry Box Cone Cylinder ElevationGrid Extrusion IndexedFaceSet IndexedLineSet PointSet Sphere Text Appearance material texture texturetransform Box Box { size 2 2 2 x y z defaults Centro = ( 0, 0, 0 ) 29 30 As primitivas básicas que veremos nessa aula são as que estão destacadas em verde. O campo size indica as dimensões das arestas do paralelepípedo seqüencialmente nos eixos x, y e z. 29 30
Box #VRML V2.0 utf8 Shape { geometry Box { appearance Appearance { material Material { diffusecolor 1 0 0 Valores default: 2 2 2 Aparência: cor vermelha Sphere Sphere { radius 1 Raio default Centro = ( 0, 0, 0 ) 31 32 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. Auto-explicativa. 31 32
Sphere #VRML V2.0 utf8 Shape { geometry Sphere { appearance Appearance { material Material { diffusecolor 0 1 0 Raio default: 1 Aparência: cor verde Cone Cone { bottomradius 1 height 2 side TRUE bottom TRUE 33 34 A cor é definida da mesma forma que para o paralelepípedo. Isso acontece para todos os objetos. 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 33 34
Cone #VRML V2.0 utf8 Shape { geometry Cone { appearance Appearance { material Material { diffusecolor 0 0 1 Valores default Aparência: cor azul Cylinder Cylinder { bottom TRUE height 2 radius 1 side TRUE top TRUE 35 36 A cor é definida da mesma forma que para o paralelepípedo. Isso acontece para todos os objetos. 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 35 36
Cylinder #VRML V2.0 utf8 Shape { geometry Cylinder { appearance Appearance { material Material { diffusecolor 1 0 1 Valores default Aparência: cor magenta 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 37 38 A cor é definida da mesma forma que para o paralelepípedo. Isso acontece para todos os objetos. Atualizar local onde a lista se encontra e data de entrega! 37 38