Você está na página 1de 12

Aprendendo a modelar em VRML (por que VRML?

)
Edison Ferreira Pratini L-VIS - Laboratrio de Visualizao, Interao e Simulao Departamento de Engenharia Civil e Ambiental UnB Universidade de Braslia - Braslia, DF - Brasil pratini@unb.br

Porque o exerccio de modelagem com uma linguagem descritiva como o VRML, em um programa didtico como o Hiperion, auxilia no desenvolvimento do raciocnio espacial necessrio para essas disciplinas. Alm disso, esses exerccios iniciam o aluno no que est por trs, nas bases, dos programas de computao grfica.

O que VRML?
a sigla de "Virtual Reality Modeling Language" Linguagem de Modelamento em Realidade Virtual - uma linguagem que permite descrever, ou seja, modelar, muito facilmente, objetos e "mundos" tridimensionais interativos e/ou animados para a Web ou para serem vistos e manipulados em qualquer computador ou sistema. Veja no fim deste doc a descry;o e o arquivo fonte do lpis na linguagem VRML. O QUE VRML? VRML (Virtual Reality Modeling Language) , como o nome diz, uma linguagem de modelamento de objetos com tecnologia de Realidade Virtual. Por "modelamento de objetos" entende-se a descrio, para o computador, das caractersticas de forma (geometria, tamanho, posio, orientao, etc.) dos objetos, como se o estivssemos montando, esculpindo ou, efetivamente, modelando uma "massa" virtual no espao e em trs dimenses.

A tecnologia de Realidade Virtual permite interagir com o objeto modelado em "tempo real", ou seja, os movimentos do dispositivo de entrada (mouse, joystick, etc.) so acompanhados simultaneamente de movimentos do objeto (rotao, translao, etc.) na tela do computador. Em outras palavras, a Realidade Virtual permite-nos observar (visualizar) o objeto como se o estivssemos manipulando distncia por meio de um brao mecnico ou qualquer outro mecanismo e essa manipulao fosse transmitida ao vivo para um monitor de televiso1. A linguagem VRML VRML simplesmente uma linguagem de descrio de uma cena que padroniza a maneira de como os meios tridimensionais so representados na Web. Diferentemente de linguagens de programao como C++, o VRML no tem que ser compilado e rodar. Melhor, arquivos de VRML so gramaticalmente analisados e ento mostrados. J que isso um processo muito mais rpido, a criao de arquivos de VRML muito mais simples do que uma programao. VRML permite mais interatividade e facilidades de melhoramentos incrementais. Um arquivo VRML carregado da mesma maneira que se acessa arquivos HTML (pginas da Web): clicando num link ou escrevendo um endereo e pressionando <ENTER>. Dependendo da velocidade de sua conexo e do tamanho do arquivo, o tempo de carregamento pode ser de poucos segundos ou muitos minutos.

Um arquivo VRML um arquivo-texto que pode ser escrito em qualquer editor de texto, bastando que seja salvo no formato txt, porm com a extenso .wrl ao invs de .txt.

A ESTRUTURA E SINTAXE DO VRML Ns, folhas e campos A rigor, VRML somente um formato de arquivo que descreve objetos. Teoricamente, os objetos podem conter qualquer coisa, geometria 3D, dados de som MIDI ou WAV, imagens JPEG, e assim por diante. VRML define um conjunto de objetos aproveitados para fazer grficos 3D. Esses objetos so chamados NS. Um arquivo VRML consiste de um grupo de ns e de ns-folha que vo se ramificando. Os ns contm atributos e dados, os quais so armazenados em campos. Basicamente, pode-se dizer que um n um conjunto de especificaes que determina as caractersticas dos objetos contidos na cena grfica como tipo, forma, geometria, aparncia, cor, textura, pontos de vista, luzes, sons, etc. Os ns definem a hierarquia e as caractersticas individuais de cada objeto dentro do contexto geral.

#VRML V2.0 utf8 # Criao de um cone sem cor, textura ou sombra Shape { geometry Cone { height 4 bottomRadius 2 } } # Fim do arquivo (clique na janela ao lado e arraste o mouse para interagir com o modelo 3D)

O exemplo acima mostra a criao de um objeto cone com 4 unidades de altura e 2 unidades de raio da base, sem caractersticas de cor, textura ou sombra. O arquivo comea com o n Shape, seguido do atributo geometry e do nome do objeto Cone com os seus campos de dados (fields), altura e raio da base (height e bottomRadius). Note que os dados do cone esto nos campos height e bottomRadius que, por sua vez, esto entre as chaves do objeto Cone. Toda essa descrio geomtrica est entre as chaves do n Shape. Dse o nome de ninho a essa estrutura que tem umas declaraes dentro das outras.

A descrio de uma forma qualquer comea com o n Shape, seguido do atributo geometry e do nome da figura desejada, com seus respectivos campos de dados (fields). Na estrutura de ninho, preciso cuidado para que nenhuma chave e/ou colchete fique sem o seu correspondente fechamento, no seu devido lugar. A primeira chave aberta ser a ltima a ser fechada dentro de um ninho. Em um arquivo VRML, o smbolo # indica que o que vem a seguir um comentrio que no tem valor de comando. Todos os arquivos da verso VRML 2.0 devem comear com os seguintes caracteres: #VRML V2.0 utf8 VRML sensvel a letras maisculas e minsculas; "Sphere" diferente de "sphere" e "BEGIN" diferente de "begin".

A descrio de um objeto com determinadas caractersticas de cor, textura, transparncia, etc. deve incluir os ns appearance e material e seus atributos Appearance e Material dentro do n Shape. No arquivo que segue, alm da definio de aparncia e material, aparece a definio do tipo de navegao por meio do n NavigationInfo.

#VRML V2.0 utf8 # Definio do tipo de navegao no browser # (girar o objeto como padro inicial) NavigationInfo { type "EXAMINE" } # Criao de um cilindro vermelho Shape { appearance Appearance { material Material { diffuseColor 1 0 0 ambientIntensity 0.2 specularColor 0 0 0 emissiveColor 0 0 0 shininess 0.2 transparency 0 } } geometry Cylinder { radius 2 height 4 } }

(clique na janela acima e arraste o mouse para interagir com o modelo 3D)

Caractersticas gerais dos ns Um n tem as seguintes caractersticas:


Um Nome (Box, Sphere, Sound, SpotLight , etc.); Os parmetros, chamados campos (fields), que distinguiro este n dos demais com o mesmo nome. Por exemplo, cada n Sphere pode ter um raio diferente, e diferentes spotLights tem diferentes intensidades, cores e posicionamento.

A maioria dos ns podem ser classificados dentro de uma de duas categorias: ns de grupo ou ns folhas, embora o VRML defina vrias classes diferentes de ns. Os ns de grupo juntam vrios ns simultaneamente, permitindo uma coleo de ns (especificada em um campo chamado children ) que ser tratada como um nico objeto.

#VRML V2.0 utf8 # Definio do tipo de navegao no visualizador NavigationInfo { type "EXAMINE" } # N de grupo do mundo - agrupa os vrios filhos Transform { children [

#Primeiro filho - cilindro verde Transform { translation -0.7 -1 3.5 children [ Shape { #Descrio do cilindro geometry Cylinder { radius 1 height 2 } appearance Appearance { #Aparncia - verde material Material { diffuseColor 0 1 0 } } } ] } #Segundo filho - esfera vermelha Transform { translation 2 0 1 children [ Shape { geometry Sphere { radius 2.3 } appearance Appearance { #Vermelho material Material { diffuseColor 1 0 0 } } } ] } #Terceiro filho - cubo azul Transform { translation -2.4 .2 1 rotation 0 1 1 .9

children [ Shape { geometry Box {} appearance Appearance { #Azul material Material { diffuseColor 0 0 1} } } ] } ] #fim do children do mundo } # fim do n de grupo

SISTEMA DE COORDENADAS O VRML usa o sistema de coordenadas Cartesiano tridimensional. A seqncia dos eixos X,Y,Z, com a coordenada 0;0;0 (origem) no centro da tela. Configurao inicial do sistema de eixos:

Eixo X - eixo das larguras - um eixo horizontal, contido no plano da tela do monitor, com sua parte positiva do eixo direita da origem; Eixo Y - eixo das alturas - um eixo vertical, contido no plano da tela, com a sua parte positiva para cima da origem; Eixo Z - eixo das profundidades - um eixo horizontal, perpendicular ao plano da tela, com sua parte positiva aqum da origem.

O VRML usa o sistema de coordenadas Cartesiano tridimensional. A seqncia dos eixos X,Y,Z, com a coordenada 0;0;0 (origem) no centro da tela.

Os objetos so gerados na origem do sistema coordenado, uns sobre os outros. Clique na janela e arraste o mouse para

Os objetos so mostrados na tela bidimensional por projeo na direo positiva do eixo Z, com a parte positiva do X do lado direito e a positiva do Y para cima.

interagir com o modelo 3D formado por uma placa amarela, uma esfera e um cilindro sobrepostos.

Por default, todos os objetos so gerados centrados na origem do sistema coordenado padro, uns sobre os outros. Para se obter uma "montagem" de objetos necessrio deslocar e/ou rotacionar cada um dos Shapes com a utilizao do n Transform.

Todos os objetos tm um centro de gerao, de translao e de rotao, que normalmente est no centro geomtrico do objeto. Os eixos coordenados prprios de cada objeto tm a origem nesse centro. Por default, todos os objetos so gerados centrados na origem do sistema coordenado padro, uns sobre os outros. Uma transformao por meio de um n Transform pode ser usada para alterar o posicionamento default, transladando ou rotacionando o sistema cartesiano padro de cada objeto. A unidade de medida para a distncia o metro e para ngulos, radianos.

TRANSFORMAES (TRANSLAO, ROTAO, ETC.) Transformaes so armazenados em ns Transform. Esses ns Transform definem as coordenadas espaciais para seus filhos (children). As coordenadas espaciais dos ns filhos so relativas s coordenadas espaciais dos ns pais, isto , as transformaes acumulam-se conforme se desce na hierarquia da cena grfica. Em outras palavras, dentro de um mesmo n, uma transformao filha atua sobre a transformao anterior, e no sobre a posio original do(s) objeto(s). O n Rotation usado para rotacionar objetos no espao. Como exemplo, vamos rever o node Cylinder. Por default, todo cilindro criado na posio vertical. Se quisermos um cilindro na horizontal, basta utilizarmos o node Rotation: # VRML V1.0 ascii Rotation { rotation 0 0 1 1.57 } Cylinder { } No exemplo acima, o cone rotacionado 90 graus (1.57 rad) sobre o eixo Z (0 0 1). APARNCIA O n Material define caractersticas dos objetos como cor e brilho. Os parmetros que so usados determinam a forma coma a luz ir refletir sobre os objetos:

diffuseColor - Reflexo da cor que estiver incidindo sobre um objeto. Quanto mais diretamente a luz incidir sobre a superfcie do objeto, mais 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 reflexo com maior quantidade de luz . Se o ngulo que a luz incidir for prximo do ngulo de observao, o valor de specularColor adicionado ao clculo de diffuseColor e ambientIntesity. 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 so preta (0,0,0). transparency - Determina o grau de transparncia do objeto, que varia de 0.0 (totalmente opaco) a 1.0 (totalmente transparente). Exemplo: Material { diffuseColor 0.8 0.8 0.8 ambientIntensity 0.2 specularColor 0 0 0 emissiveColor 0 0 0 shininess 0.2 transparency 0 }

Veja como foi construdo o lpis


A construo de um objeto qualquer pode ser feita por meio da gerao de uma srie de slidos primitivos e de seus respectivos deslocamentos para o devido lugar, como na contruo de blocos nos brinquedos do tipo do "Pequeno Engenheiro" Lego, etc. A linguagem VRML - da mesma forma dos programas modeladores 3D - dispe basicamente de 4 slidos primitivos: esfera, cilindro, paraleleppedo e cone para essas montagens. Sabendo que todos os objetos so gerados sobrepostos espacialmente no mesmo lugar - na origem de um sistema cartesiano - a construo e montagem de um lpis pode ser resumida na seguinte sequncia: 1. 2. 3. 4. gerao de um cilindro oco de cor vermelha, com 15 unidades de altura e 0,7 de raio; gerao de um cone de 2,5 de altura e 0,7 de raio (ponta de madeira do lpis); deslocamento (translao) da ponta para o seu lugar; gerao de um cilindro de cor madeira, com 15 de altura e 0,65 de raio (miolo de madeira); 5. gerao de um cilindro de cor vermelha, com 15,02 de altura e 0,3 de raio da base (grafite) 6. gerao de um cone de cor vermelha, com 1,1 de altura e 0,3 de raio da base (ponta do grafite) 7. deslocamento (translao) da ponta do grafite para o seu lugar;

A translao adicional que aparece no arquivo do lpis uma aproximao (zoom) e rotao do objeto para posicion-lo inicialmente mais prximo e de uma forma mais interessante.

#VRML V2.0 utf8 # Estabelecimento do tipo de navegao NavigationInfo { type "EXAMINE" } # Translao do lpis para mais longe da tela (ajustando o tamanho ela) e inclinao para a esquerda. As declaraes "translation" e "rotation" que fazem isso esto no fim do arquivo, antes de fechar este n "Transform" Transform { children [ # Passo 1 - Gerao do cilindro que a casca do lpis Shape { appearance Appearance { material Material { diffuseColor 1 0 0 ambientIntensity 0.2 specularColor 1 1 1 shininess 0.5 } } geometry Cylinder { radius 0.7 height 15 side TRUE bottom FALSE top FALSE } } # Passo 2 - Gerao do cone que a ponta de madeira do lpis

Transform { children [

Shape { appearance Appearance { material Material { diffuseColor 1 0.8 0.5 ambientIntensity 0.2 } } geometry Cone { height 2.5 bottomRadius 0.7 side TRUE bottom TRUE } } ] translation 0 8.75 0 } # Passo 3 - Gerao do miolo de madeira Shape { appearance Appearance { material Material { diffuseColor 1 0.8 0.5 ambientIntensity 0.2 } } geometry Cylinder { radius 0.65 height 15.01 side TRUE bottom TRUE top TRUE } } # Passo 4 - Gerao do grafite Shape { appearance Appearance {

material Material { diffuseColor 1 0 0 ambientIntensity 0.2 shininess 0.5 } } geometry Cylinder { radius 0.3 height 15.02 side TRUE bottom TRUE top TRUE } } # Passo 5 - Gerao do cone da ponta de grafite Transform { children [ Shape { appearance Appearance { material Material { diffuseColor 1 0 0 ambientIntensity 0.2 shininess 0.5 } } geometry Cone { height 1.1 bottomRadius 0.3 side TRUE bottom TRUE } } ] translation 0 9.48 0 }

# Translao e rotao do lpis. Faz parte do primeiro n "Transform", no topo deste texto. ] translation 1 -1 -8 rotation 0 0 1 1 } # Fim do arquivo

Você também pode gostar