19
1 VRML Virtual Reality Modeling Language INTRODUÇÃO AO VRML Baseado 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çadas 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.

VRML aula01 ed - Instituto de Informáticaeduardo/mm/slides/VRML_aula01_ed.pdf · dá suporta a RV-não imersiva., ou seja, que não suporta dispositivos de imersão, como Capacetes

Embed Size (px)

Citation preview

1

VRMLVirtual Reality Modeling Language

INTRODUÇÃO AO VRML

Baseado em apresentação de Judith Kelner, Alejandro Frery

2

2

Roteiro

1. O que é VRML2. Histórico3. Objetivos da VRML4. VRML, Internet e WWW5. Visão geral do VRML6. Estrutura do Arquivo VRML 7. Conceitos-chave8. Semântica dos Nós 9. Primitivas Básicas10.Primitivas Avançadas

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.

3

3

O Que é VRML

Virtual Reality Modeling LanguageSuporte para RV não-imersivaVRML 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 3DPublicaçã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 Scenario1992: Iris Inventor1994: Open Inventor1994: Labyrinth1995: Criação e ajustes1996: Proposta de VRML 2.01997: 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 (SiliconGraphics)

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)

5

5

Objetivos da VRML

Modelagem de objetos 3DComposição de "mundos" pela hierarquia de objetosAnimação, interação, multimídiaformato intercambiável (várias aplicações podem ler/gravar)

Internet e WWWVRML foi projetado para ser usado com a infraestrutura Internet/WWW existente

SimplicidadeSuporte VRML deve ser facilmente adicionado às aplicações

• Vários browsers (navegadores) podem e devem dar suporte

Facilidade de ComposiçãoFacilidade em se "montar o todo a partir das peças"Produtividade e trabalho em grupo

Auto-explicativa.

6

6

Objetivos da VRML Cont.

EscalabilidadeO navegador VRML deve operar com "mundos" distribuídos na InternetIndependente da potência da máquinaMundos ajustados à performance da rede (14.4K ~ OC12)Especificação permite adições futuras

Otimização da performanceAlgoritmos de manipulação 3D têm efeito nas ramificações agrupadasSe algo não puder ter performance, então não fará parte da especificação

Versões futurasInteração entre vários usuáriosCriaturas autônomas que podem sentir e reagir no ambiente

Auto-explicativa.

7

7

VRML, Internet e WWW

Navegadores suportam VRML através de plug-insArquivos VRML podem referenciar vários outros formatos

JPEG, PNG, GIF, MPEG podem ser usados para compor a textura de objetosWAV, MIDI podem ser usados para sons emitidos pelo ambiente ou por objetosArquivos com código Java ou JavaScript podem ser referenciados para implementar comportamento de objetos

VRML permite hiperlinksOrganizaçõ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 implementadosApplet Java conversando com browser VRMLArquivo 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

Auto-explicativa.

9

9

VRML: O Que Falta

Formato binário para VRMLCódigo VRML não tem proteçãoPadrão ainda não definido

CompressãoJá 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árioProtó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 CenaVRML descreve "mundos" (worlds) usando uma cena gráfica hierárquicaEntidades 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 EventosMecanismo 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

SensoresSensores 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 InterpoladoresScripts permitem ao autor da cena definir comportamentos arbitrários, usando qualquer linguagem suportada.VRML 2.0 define conexões para linguagens Java e JavaScriptNó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

Auto-explicativa.

13

13

Visão Geral do VRML cont.

Cenas DistribuídasVRML 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 BrowserVRML

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áficosContém os nós (nodes) que descrevem objetos e suas propriedadesObjetos podem ter geometria hierarquicamente agrupada para prover representações áudio -visuais complexas.

ProtótiposExtensões de nós VRML definidos externamente pelo usuário

EventosDefinições dos eventos associados aos objetos

Alguns conceitos básicos da estrutura de VRML.

16

16

Estrutura do Arquivo VRML

CabeçalhoPrimeira linha do arquivoIdentifica 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

Aqui temos a definição do cabeçalho do arquivo, essencial a todo arquivo vrml.

17

17

Estrutura do Arquivo VRML

# inicia um comentárioApenas o 1º comentário tem significado (cabeçalho)

Caracteres NÃO permitidos para nomesPrimeira letra: + - 0-9 " ' # , . [ ] \ {} 0x0-0x20Restante: " ' # , . [ ] \ {} 0x0-0x20

Palavras reservadasDEF, 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 / 180Tempo é 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 opcionalTipo 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 20colorIndex [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 CampoSFBool TRUE/FALSESFColor 3 valores float entre 0 e 1 (RGB). Ex.: 0 0.7 0.2MFColor lista de valores SFColor. Ex.: [0 0.5 0, 1 0 0]SFFloat 1 valor float. Ex.: 1.7456MFFloat lista de valores float. Ex.: [1.2, 3.5, 7, 9.5]SFInt32 & MFInt32 inteiro de 32bits & lista SFNode & MFNode nó & lista de nósSFRotation 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 CampoSFString 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.3MFVec2f lista de vetores 2D. Ex.: [2.3 3.4, 4.5 5.6]SFVec3f vetor 3D. Ex.: 1.4 7.3 9.1MFVec3f 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

MFVec3f lista de vetores 3D.Ex.: [2.3 3.4 4.5, 5.6 6.7 7.8]

23

23

Conceitos-chave: Campo cont.

Tipos de CampoSFImage 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 campoTipos

EventOut eventos que geram informaçãoEventIn aceitam e utilizam informação externa (EventOut)

Campos Exposed possuem EventIn e EventOutpró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 EnventOutdesse 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

ligadosDEF SENSOR TouchSensor { } DEF SOUND Sound { }

• Conectar campos através do comando RouteROUTE SENSOR.touchTime TO SOUND.startTime

Se houver objetos com mesmo nome, todos serão afetados!

Sensor

EventOut TouchTime

Sound

EventIn StartTimeRoute

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 EventOute 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 CoordenadasVRML 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 RGBCada cor básica é representada por número decimal de 0 até 1A cor é montada combinando as 3 cores básicasPara 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ásicasPrimitivas 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 }

defaultsx 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 utf8Shape {

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 utf8Shape {

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 utf8Shape {

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 utf8Shape {

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ênciasFloppy’s VRML 97 Tutorial:

• http://web3d.vapourtech.com/tutorials/vrml97/

Web 3D Consortium – VRML Archives• http://www.web3d.org/x3d/vrml/index.html

Atualizar local onde a lista se encontra e data de entrega!