Vrml

  • May 2020
  • PDF

This document was uploaded by user and they confirmed that they have the permission to share it. If you are author or own the copyright of this book, please report to us by using this DMCA report form. Report DMCA


Overview

Download & View Vrml as PDF for free.

More details

  • Words: 3,170
  • Pages: 15
Índice 1 – Introdução .......................................................................................................................2 2 – VRML 1.0: Características Básicas ..................................................................................2 2.1 – Unidades de Medida...................................................................................................3 2.2 – Nodes..........................................................................................................................3 2.2.2 – AsciiText: Começando com um texto.................................................................4 2.2.3 – Definindo Cones.................................................................................................6 2.2.4 – Definindo Cubos.................................................................................................6 2.2.5 – Definindo Esferas................................................................................................7 2.2.6 – Rotacionando Objetos.........................................................................................8 2.2.7 – Definindo Cilindros............................................................................................9 2.3 – Dando Cores aos Objetos...........................................................................................9 3 – Trabalhando com polígonos............................................................................................11 4 – Definindo a Hierarquia dos objetos.................................................................................13 5 – Trabalhando com texturas...............................................................................................14 6 – Cirando Links..................................................................................................................14 7 – Projeto de Conclusão do Curso de VRML:.....................................................................15 8 – Recursos on-line..............................................................................................................15

VRML – Apostila Básica

1 – Introdução Há um tempo, surgiu a idéia de se criar aplicações de Realidade Virtual que rodassem sobre a Internet. Dessa idéia surgiu a linguagem VRML (Virtual Reality Modeling Language). A linguagem VRML é independente de plataforma que permita a criação de ambientes virtuais tridimensionais por onde se pode navegar e interagir. Atualmente, graças ao crescente investimentos de grandes empresas, a linguagem a linguagem é o padrão para o desenvolvimento de aplicações de RV na rede. Com o rápido avanço da tecnologia e facilidade de acesso à rede, os computadores pessoais estão cada vez mais rápidos, isto faz com que a realidade virtual deixe de ser um objeto de estudo dos grandes centros de pesquisas e possa ser utilizada por usuários comuns. Desta forma, a linguagem está sendo um dos principais meios de difusão de aplicações de RV, contribuindo para um novo paradigma de disponibilização de informação em ambientes virtuais distribuídos na rede. A linguagem possui toda a estrutura necessária para o desenvolvimento de aplicações de realidade virtual. A primeira versão (VRML 1.0), com exceção de algumas extensões, não possibilitava muita interação do usuário com o mundo virtual, mas versão recentes acrescentam características como animação, som e interação. A última versão é a 2.0, chamada Moving Worlds VRML 2.0. Por ser independente de plataforma, uma aplicação VRML roda em qualquer máquina que tenha um browser VRML, ou seja, uma aplicação que roda no PC, roda numa Silicon Graphics, num IBM, etc. sem nenhuma alteração Como se cria uma aplicação VRML ? Simples, utiliza-se um editor de texto ASCII, O código VRML é um texto que descreve o ambiente e os eventos eu pode estar associados a este ambiente, como por exemplo, o usuário toca um interruptor e uma luz ascende. Não é necessário utilizar nenhum compilador. O browser se encarrega de interpretar o código e gerar o ambiente descrito por ele. Para projetos mais complexos, no entanto, pode-se usar ferramenta de apoio como modeladores 3D (Autocad, 3D studio, WorldUP, etc.) e editores gráficos (Photoshop, Paint Shop Pro, etc.) para facilitar o seu desenvolvimento. A linguagem consegue descrever ambientes virtuais de forma eficiente. Isto é necessário porque arquivos VRML são transferidos tanto por linhas telefônicas de baixa velocidade quanto por linhas ISDN de alta velocidade. Para interpretar o código VRML é necessário utilizar um PLUG-IN, que pode ser encontrado no endereço http://cosmosoftware.com Após esta breve introdução, no decorrer deste texto enfocaremos algumas características básicas da linguagem VRML.

2 – VRML 1.0: Características Básicas Tudo que se precisa para escrever um código VRML é um editor de textos. Uma vez editados, os arquivos são gravados em forma ASCII com extensão .wrl. Na verdade, a linguagem apensa descreve como os ambientes tridimensionais serão representados pelo browser. O arquivo nãp precisa ser compilado e não é executado por ninguém.

2 José Augusto Fabri

VRML – Apostila Básica

Pode-se, por exemplo, criar um cubo e gravá-lo em um arquivo chamado cubo.wrl. O código VRML para este cubo irá descrever as características do ambiente, como coordenadas, luzes, cores, sombreamento etc. Também pode-se colocar em um mundo objetos que estão localizados remotamente em outros lugares na Internet, além de links que levam a outros “homeworlds” ou homepages. Ficou definido, para fins de indentificação, que todo arquivo VRML 1.0 tem que ter o seguinte cabeçalho: # VRML V1.0 ascii Futuramente, em outras versões da linguagem, isto muda. Na versão atual, a 2.0, o cabeçalho fica da seguinte maneira: # VRML V2.0 utf8 O caracter “#” também significa comentário. Toda linha que começa com # será ignorada pelo browser. É bom usar comentários no meio do código, isso facilita a compressão e identificação de parte do comentário, como por exemplo: # Instituto Municipal de Ensino Superior de Assis # Departamento de Computação 2.1 – Unidades de Medida

O VRML utiliza o sistema cartesiano Tridimensional. A seqüência dos eixos é X, Y, Z e a unidade de medida para distância é metros e para ângulos, radianos. Tomando esta página como referência, o eixo X positivo está para a direita, o eixo Y positivo está para cima e o eixo Z está perpendicular aos dois anteriores, saído da página em direção ao leitor. A medida para distância não é definida formalmente, mas adotou-se o metro como unidade padrão para que mundos diferentes feitos por usuários diferentes possam ser eventualmente unidos em um só mundo. Se cada pessoa modelasse o ambiente usasse um unidade diferente, poder ser um problema juntar todos os componentes de um mundo, por exemplo, um prédio poderia ter 30 metros de altura outro 30 Km. 2.2 – Nodes

Basicamente, pode-se dizer que um node é um conjunto de especificações que determinam as característica dos objetos contidos no cenário. Os nodes definem a hierarquia e as características individuais de cada objeto dentro do contexto geral do cenário. O node é um bloco básico de construção da linguagem e descreve o tipo do objeto, que pode ser uma esfera, um cilindro, uma transformação, uma definição de luz ou textura etc. Também define as características de cada um, como tamanho de um cubo, diâmetro de uma esfera, intensidade da luz ambiente, cor etc. Não é necessário dar nome a um node, mas se isso for feito, não se pode Ter dois nodos com nomes iguais. 3 José Augusto Fabri

VRML – Apostila Básica

Sintaxe para definição de um node: DEF Nome_do_Obejto Tipo_do_Objeto { Propriedades_ou_Atributos . . . .

Valores

} Exemplo: #VRML V1.0 ascii #cone.wrl DEF PrimeiroCone Cone{ bottomRadius 5 height 5 } #cone.wrl # bottomRadius = Raio do Cone # height = Altura do Cone O exemplo acima demonstra a criação de um objeto cone chamado PrimeiroCone de raio e altura igual a 5, BottomRadius e Height são proprieades ou parâmetros do objeto PrimeiroCone. VRML possui diferentes classes de nodes. Esta seção mostra em detalhes alguns nodes que são usados mais freqüentemente para construir cenários 3D. São os que definem propriedades, grupos e sólidos (cubo, esfera, etc.) Para começar , AsciiText é um exemplo.

2.2.2 – AsciiText: Começando com um texto

O node AsciiText é usada para colocar texto no cenário. A menos que não haja nenhuma transformação de poscionamento, o texto ou qualquer outro objeto é coloca pela primeira vez na posição (0,0,0) do espação 3D. O parâmetros para AsciiText são os seguintes: justification – define o alinhamento do texto, pode ser: LEFT – alinha o texto à esquerda; CENTER – centraliza o texto; RIGTH – alinha o texto a direita; string: define o texto a ser mostrado. Exemplo: #VRML V1.0 ascii 4 José Augusto Fabri

VRML – Apostila Básica

#texto.wrl DEF PrimeiroTexto AsciiText{ string "IMESA" justification CENTER } #texto.wrl # string = Mensagem # justification = alinhamento O node FontStye é usado para mudar a aparência dos textos que são criados com o node AsciiText. Os atributos que são especificados por este node afetam modo como o texto é mostrado por todos AsciiText subsequentes. FontStyle permite mudar o tamanho do fonte, estilo e família a qual ela pertence. Os parâmetros para FontStyle são os seguintes: size – número real que define o tamanho da fontes a ser usada; family – tipo da fonte: SERIF: estilo serif, geralmente a fonte Times New Roman; SANS: estilo sans serif; TYPEWRITE: estilo teletipo Style – estilo da fonte: BOLD: fonte em negrito ITALIC: itálico NONE: nenhuma mudança de estilo. Exemplo: #VRML V1.0 ascii #txtest.wrl FontStyle { size 3 # numero real } AsciiText{ string "IMESA" justification CENTER } #txtest.wrl # string = Mensagem # justification = alinhamento

5 José Augusto Fabri

VRML – Apostila Básica 2.2.3 – Definindo Cones

O cone é usado para criar cones simples. Os parâmetros para este nó são: bottomRadius, que define o raio da base e heigth, que define a altura. A posição do cone no espaço será definida pela posição do seu centro. Então quando falarmos em posição de um cone, estaremos falando da posição de seu centro. Esta regra vale para muitos outros objetos. Exemplo #VRML V1.0 ascii #conetran.wrl Translation { translation -5 +2 -5 } Cone{ bottomRadius 1 height 3 } #conetran.wrl # bottomRadius = Raio do Cone # height = Altura do Cone O exemplo acima mostra a criação de um cone sendo deslocado para posição (-5, +2, -5) ou seja –5 metros em relação ao eixo X, + 2 metros em relação ao eixo Y e -5 metros em relação ao eixo Z usando o node de transformação Translation Este node é usado para posicionar objetos no espaço no espaço. Se colocássemos no arquivo texto outro objeto abaixo logo abaixo da definição do cone, este teria seu centro na mesma posição, porque o novo objeto estaria no mesmo contexto ou hierarquia que o cone. Quem define a hierarquia do objeto no ambiente é o Separator (veremos este node mais adiante). 2.2.4 – Definindo Cubos

O node Cube é usado para definir paralelepípedos. Para isso entramos com sua largura (width), sua altura (height) e sua profundidade (depth). Exemplo: #VRML V1.0 ascii #cubo.wrl Cube{ width 3 height 3 depth 3 } #cubo.wrl # width = largura do cubo # height = altura do cubo # depth = profundidade do cubo

6 José Augusto Fabri

VRML – Apostila Básica

Vamos agora acrescentar mais um objeto ao exemplo acima. Vamos colocar mais um cone em outra posição no cenário. Para isso temos de usar o node Translation para definir a posição deste nove objeto. O nove exemplo é o seguinte: Exemplo: # VRML V1.0 ascii # doiscubo.wrl Cube{ width 1 height 1 depth 1 } Translation { translation 5 0 0 } Cube{ width 2 height 2 depth 2 } # doiscubo.wrl No exemplo acima são criados dois cones: um de altura, largura e profundidade igual a 1 outro de altura, largura e profundidade igual a 2. Devido ao node Translation o segundo cubo foi deslocado 5 metros em relação ao eixo X. 2.2.5 – Definindo Esferas

O node Sphere é usado para representar uma esfera. Por default, o raio da esfera é 1e seu centro está em (0, 0, 0). O único parâmetro para Sphere é radius (define o comprimento do raio). Exemplo #VRML V1.0 ascii #esfera.wrl Sphere{ } #esfera.wrl

7 José Augusto Fabri

VRML – Apostila Básica

Vamos agora acrescentar outro objeto ao exemplo acima: #VRML V1.0 ascii #default.wrl Cone{ } Translation { translation 5 0 0 } Cube{ } Translation { translation -10 0 0 } Sphere{ } #default.wrl 2.2.6 – Rotacionando Objetos

No exemplo abaixo uma esfera de raio 1 é criada. Em seguida, um cone é criado . O cone de altura 2 e raio 1 sofre duas transformações: uma rotação e uma translação. Primeiro a translação desloca o cone para a posição –2 do eixo Y. Logo em seguida o cone o rotacionado no eixo X em 1 de 3.1415 radianos (ou 180 graus) Exemplo: VRML V1.0 ascii #rotacao.wrl Sphere{ radius 1 } Translation { translation 0 -2 0 } Rotation{ rotation 1 0 0 3.1415 } Cone { bottomRadius 1 height 2 } #rotacao.wrl

8 José Augusto Fabri

VRML – Apostila Básica 2.2.7 – Definindo Cilindros

O node Cylinder é usado para definir cilindros. Por default, o cilindro está na vertical, com seu centro na posição (0, 0, 0) e com raio igual 1. Existem dois parâmetros para Cylinder : radius, que define seu raio, e height, que define sua altura. Exemplo: #VRML V1.0 ascii #cilindro.wrl Cylinder{ radius 1 height 5 } #cilindro.wrl # radius = Raio do cilindro # height = Altura do cilindro 2.3 – Dando Cores aos Objetos

O node Material define características dos objetos como cor e brilho. Os parâmetros que são usados determinam a forma como a luz irá refletir sobre os objetos. São eles: diffuseColor – reflexão da luz que estiver incidindo sobre um objeto. Quanto mais diretamente a luz incidir sobre a superfície do objeto, mais a luz será refletida. É usado para dar cor aos objetos. ambientIntensity – especifica quanto da luz ambiente um objeto deve refletir shininess e specularColor – determinam a luminosidade de pontos de reflexão com maior quantidade de luz (hightlight points). Se o ângulo que a luz incidir for próximo do ângula de observação, o valor de specularColor é adicionado ao cálculo de diffuseColor e ambientIntesinty. Shininess determina o brilho do objeto. Quanto maior seu valor, maior o brilho. emissiveColor – usado para representar objetos incandescentes. Usado quando todas as outras cores são pretas (0, 0, 0). transparency determina o grau de transparência do objeto, que varia de 0.0 (totalmente opaco) e 1.0 (totalmente transparente).

9 José Augusto Fabri

VRML – Apostila Básica

A cor dos objetos é formada pela composição das cores básicas vermelho, verde e azul, cujos valores variam entre 0 e 1. Sendo assim, se quisermos um objeto amarelo tems que especificar (1, 1, 0) ou seja, 100 % de vermelho e verde e nada de azul, vamos acrescentar cor a alguns objetos. Exemplo: #VRML V1.0 ascii #cores.wrl Material{ diffuseColor 0 1 0 shininess 1 } Cone { height 3 bottomRadius 1 } Material{ diffuseColor 1 0 0 shininess 1 } Translation { translation 0 -2.5 0 } Cylinder { radius 0.3 height 1.5 } #cores.wrl # diffuseColor = cor do objeto # shininess = brilho Projeto 1 Definir um mundo seguindo o figura abaixo

Figura 1 - Modelo para Projeto

10 José Augusto Fabri

VRML – Apostila Básica

#VRML V1.0 ascii #proj01.wrl #Definicao de um portal Material{ diffuseColor 0 0 1 } Translation { translation -4 0 0 } Cube { width 4 height 2 depth 1

Material{ diffuseColor 0 1 0 } Translation { translation 0 -0.8 0 } Cylinder{ radius height }

0.1 2.1

Translation { translation -0.7 -0.2 0.3 }

} Translation { translation 8 0 0 } Cube { width 4 height 2 depth 1

Material{ diffuseColor 1 0 0 } Sphere {

}

radius 0.2 }

Translation { translation -3 1 2 } Material{ shininess 0 diffuseColor 0.4 0.6 0

Translation { translation 0 -0.5 0 } Material{ diffuseColor 0 1 1 }

} Cone {

Cone { bottomRadius height

1.5 0.7

}

bottomRadius height

0.4 0.7

}

3 – Trabalhando com polígonos Nodes: IndexedFaceSet, Coordinate3 Este conjunto nodes é muito importante pois é com eles que definimos formas geométicas que não estão pré-definidas na linguagem. O node Coordinate3 é usado para definir pontos no ambiente , onde cada ponto tem seu respectivo índice, iniciando em zero.

11 José Augusto Fabri

VRML – Apostila Básica

Por exemplo: #VRML V1.0 ascii #coord.wrl Material { diffuseColor 1 1 0 } Coordinate3{ point [ 0 10 5

0 0 10

0, 0, 0,

# ponto 0 # ponto 1 # ponto 2

0,

1,

2,

] } IndexedFaceSet{ coordIndex [ -1

] } #coord.wrl No exemplo acima o node Coordinate3 define 3 pontos: o ponto 0, cujas as coordenadas são (0, 0, 0), o ponto 1 (10, 0, 0) e o ponto 2 (5, 10, 0). Coordinate3 apenas especifica as coordenadas dos pontos no espaço. Isso significa que não temos nenhuma figura no ambiente. O node IndexedFaceSet liga os três pontos e forma um triângulo. No exemplo acima, IndexedFaceSet definiu quais pontos seriam ligados. O –1 indica o fim da ligação. O exemplo a seguir mostra como criar uma pirâmide sólida. #VRML V1.0 ascii #piram.wrl Coordinate3 { point [ 0 30 30 0 15

0 0 30 30 15

0, 0, 0, 0, 20,

#0 #1 #2 #3 #4

] } Material { diffuseColor 1 1 0 } 12 José Augusto Fabri

VRML – Apostila Básica

IndexedFaceSet{ coordIndex [ 0, 0, 1, 2, 3,

1, 1, 2, 3, 0,

2, 3, -1, 4, -1, 4, -1, 4, -1, 4, -1,

] } #piram.wrl

4 – Definindo a Hierarquia dos objetos Este node define a hierarquia dos objetos dentro do cenário. É usado para separar um grupo de objetos de resto do ambiente, ou seja, as características dess grupo serão diferentes do reste. Veja o exemplo. #VRML V1.0 ascii #hier.wrl Material { diffuseColor 1 1 0 } Separator{ Material { diffuseColor 0 1 0 } Cube {} Translation{ translation 10 0 0 } Sphere {} } Translation { translation -10 0 0 } Cone {} #hier.wrl Quando definimos a cor amarela pela primeira vez (diffuseColor 1 1 0), esperamos que todos os objetos subsequentes sejam desta cor. No entanto, apenas o cone é amarelo. Isto se deve ao uso do node Separator, que separa o cubo e a esfera do resto do ambiente. As propriedades definidas para estes objetos (posição e cor) não irão interferir nos outros objetos que estiverem forma deste contexto ou hierarquia. Repare no Translation –10 0 0; não foi necessário deslocar -20 unidades porque este é o primeiro deslocamento feito no

13 José Augusto Fabri

VRML – Apostila Básica

contexto em que está o cone. Também a cor verde só vale dentro do contexto do cubo e da esfera.

5 – Trabalhando com texturas Este node é usado para aplicar texturas aos objetos. O exemplo a seguir faz o mapeamento de uma textura de tijolos sobre um cubo: #VRML V1.0 ascii #textura.wrl Texture2 { filename "tijolo.jpg" } Cube {} #textura.wrl

6 – Cirando Links O node WWWAnchor é usado para criar hyperlinks dentro de um ambiente. Quando o usuário clica sobre os objetos contidos neste node, o browser carrega um outro ambiente descrito no parâmetro name. Exemplo: #VRML V1.0 ascii #www.wrl WWWAnchor { name "http://www.femanet.com.br/~fabri" description "Home Page do Guto" Sphere {} } #www.wrl O exemplo acima mostra uma esfera. Se o usuário passar com o mouse por cima da esfera, a mensagem “Página do Guto” é mostrada indicando que aquela esfera é um link para uma outra página. Se o usuário clica na esfera. O browser carrega o link www.femanet.com.br/~fabri. Um outro node usado como link é o WWWInline. Este node é usado para inserir outros objetos ou ambientes dentro do ambiente virtual. Isto permite que se tenha uma biblioteca de objetos 3D que podem ser reutilizados em vários ambientes ao mesmo tempo, sem a necessidade da duplicação do código.

14 José Augusto Fabri

VRML – Apostila Básica

Exemplo: #VRML V1.0 ascii #wwwInline.wrl WWWInline { name "cone.wrl" } Translation{ translation +10 0 0 } Sphere {} #wwwinLine.wrl

7 – Projeto de Conclusão do Curso de VRML: Utilizando sua criatividade elabore um projeto em VRML que modele algum ambiente do mundo real, uma parte de sala de aula por exemplo. Utilize texturas para que este ambiente fique mais próximo possível da realidade.

8 – Recursos on-line http://cosmosoftware.com http://ww.femanet.com.br/~fabri/ead.htm http://www.eit.com/vrml http://vrml.sgi.com/moving-words/ http://www.sdsc.edu/vrml http://www.walkerart.org

15 José Augusto Fabri

Related Documents