Académique Documents
Professionnel Documents
Culture Documents
Apresentao
com satisfao que a Unisa Digital oferece a voc, aluno, esta apostila da disciplina Tpicos Contemporneos em Informtica, parte integrante de um conjunto de materiais de pesquisa voltados ao aprendizado dinmico e autnomo que a educao a distncia exige. O principal objetivo desta apostila propiciar aos alunos uma apresentao do contedo bsico da disciplina. A Unisa Digital oferece outras formas de solidificar seu aprendizado, por meio de recursos multidisciplinares como chats, fruns, aulas web, material de apoio e e-mail. Para enriquecer o seu aprendizado, voc ainda pode contar com a Biblioteca Virtual cujo acesso encontra-se no portal da Unisa, www.unisa.br, a Biblioteca Central da Unisa, juntamente com as bibliotecas setoriais dos plos, que fornecem acervo digital e impresso, bem como acesso a redes de informao e documentao. Nesse contexto, os recursos disponveis e necessrios para apoi-lo no seu estudo so o suplemento que a Unisa Digital oferece, tornando seu aprendizado eficiente e prazeroso, concorrendo para uma formao completa, na qual o contedo aprendido influencia sua vida profissional e pessoal. A Unisa Digital assim para voc: Universidade a qualquer hora e em qualquer lugar!
Unisa Digital
Introduo
Esta apostila se refere disciplina Tpicos Contemporneos de Informtica do curso de Bacharelado em Sistemas de Informao, na modalidade a distncia, da Unisa Universidade de Santo Amaro. Falar de tpicos contemporneos na rea de Tecnologia da Informao um desafio sempre, j que a tecnologia evolui de forma constante e em ritmo cada vez mais acelerado. Neste curso sero abordados os sistemas de realidade virtual, com aplicaes em VRML. O avano da tecnologia ao longo dos anos, incentivou o desenvolvimento de novos equipamentos e aparelhos para facilitar e melhorar a vida das pessoas. A Realidade Virtual - RV acompanhou a evoluo tecnolgica proporcionando novas formas de interao entre o homem e a mquina. A RV trouxe mais recursos para a pesquisa cientfca, contribuindo para o aumento da confiana na execuo de novos projetos e mais credibilidade na sua concluso, em funo de permitir a criao de ambientes virtuais para simulao de ambientes reais. A RV vem sendo aplicada em diversas reas, como na criao de entretenimento, na produo de ferramentas para auxlio em jogos de
procedimentos
cirrgicos, na criao de simuladores sofisticados da NASA, em projetos de construo civil, dentre outras reas, contribuindo, de forma decisiva, avano da Cincia. A VRML- Virtual Reality Modeling Language (Linguagem para Modelagem de Realidade Virtual) uma linguagem que foi criada justamente pela necessidade de se implementar ambientes virtuais 3D com interface de Realidade Virtual em ambiente web. A programao em VRML de fcil aprendizagem, pois foi baseada no HTML, podendo seus aplicativos serem editados em qualquer editor de textos. Para a visualizao 3D dos cenrios virtuais na web, basta que o browser (ou navegador) seja compatvel com o VRML ou seja instalado um plugin VRML. Neste curso, sero apresentados os conceitos fundamentais e o histrico da evoluo da Realidade Virtual, os equipamentos e ferramentas mais utilizados, as reas de aplicao e a linguagem VRML, com diversos exemplos de aplicao prtica. Elisamara de Oliveira Eugnio A. Nassu para o
Sumrio
Apresentao ........................................................................................................ 2 Introduo ............................................................................................................. 3 1 Realidade Virtual ........................................................................................... 6 1.1 1.2 Introduo Realidade Virtual e VRML ................................................. 6 Multimdia e Realidade Aumentada ....................................................... 7 Multimdia .......................................................................................... 8 Realidade aumentada ..................................................................... 10
Tecnologia para Realidade Virtual ....................................................... 14 Capacete .......................................................................................... 15 Luvas................................................................................................ 15 Controladores ................................................................................. 16 Simuladores .................................................................................... 17 Roupas ............................................................................................. 17 Outros dispositivos ........................................................................ 18
VRML ............................................................................................................ 19 2.1 2.2 2.3 2.4 2.5 Introduo ao VRML .............................................................................. 19 Histrico da VRML................................................................................. 20 Aplicaes de VRML ............................................................................. 21 Como comear a navegar em mundos VRML na internet.................. 22 A Linguagem VRML ............................................................................... 23 Primeiro programa em VRML......................................................... 23 Cores em VRML .............................................................................. 25 Unidades de medida e sistema de coordenadas ......................... 26 Representao de objetos 3D ........................................................ 28
Shape- Formas Geomtricas 3D Primitivas ........................................ 28 Box ................................................................................................... 30 Cone ................................................................................................. 30 Cylinder............................................................................................ 31 Sphere .............................................................................................. 32 Unindo formas primitivas ............................................................... 33
5 2.7.1 2.7.2 2.7.3 2.7.4 2.8 USE DEF e Inline ............................................................................. 38 Scale................................................................................................. 39 Rotation ........................................................................................... 40 Translation ....................................................................................... 41
Shape - Formas Geomtricas Avanadas ........................................... 43 PointSet ........................................................................................... 43 IndexedLineSet ............................................................................... 45 IndexedFaceSet ............................................................................... 48 ElevationGrid................................................................................... 51 Extrusion ......................................................................................... 54 Text .................................................................................................. 58
1 Realidade Virtual
1.1 Introduo Realidade Virtual e VRML
A Realidade Virtual - RV surgiu para prover ao usurio uma nova forma de utilizao do computador. Esse novo meio de interao d ao usurio no s a ideia de estar em frente ao monitor, mas de ter a sensao de estar imerso na interface. O objetivo da realidade virtual captar todos os movimentos do corpo do usurio e a partir da o fazer interagir com o computador. A RV possui aplicaes em muitas reas de conhecimento, como medicina, educao, entretenimento, construo civil, arquitetura, arqueologia, geologia, astronomia, dentre muitas outras reas. A RV um avanado modo de interao usurio-mquina, contando com investimentos de muitas indstrias de produo de hardware, software e dispositivos especiais de entrada e sada. Nos ltimos anos o desenvolvimento da Realidade Virtual vem crescendo de forma acelerada. A Realidade Virtual teve incio em meados do sculo XX, porem s ficou sendo conhecida popularmente por volta de 1990, atravs de Morton Heilig que inventou uma mquina chamada Sensorama. Sensorama se tratava de um aparelho que simulava um passeio de bicicleta, interagia com o usurio atravs de uma interface 3D, produzia efeitos olfativos (cheiros), alm de possuir som estreo, vibraes no assento e brisa no rosto para favorecer a criao da sensao de interatividade. Alguns anos depois outros cientistas, Comeau e Bryan, desenvolveram um dispositivo mais avanado com a finalidade de ser usado por pilotos de avies para enfrentar situaes perigosas. No final da dcada de 1980, Tim Berners-Lee desenvolveu a World Wide Web (WWW), estabelecendo as bases da internet como conhecida na atualidade, em relao interface e conectividade. Em 1992, a empresa Silicon Graphics apresentou a biblioteca grfica Inventor, que permitia aos
programadores desenvolverem programas grficos 3D interativos, criando cenas e descrio de objetos tridimensionais.
7 A primeira verso da linguagem VRML -Virtual Reality Modeling Language (Linguagem para Modelagem de Realidade Virtual) surgiu no ano de 1994 em Genebra, na Sua, na primeira conferncia anual da World Wide Web (WWW). Durante a conferncia, Tim Berners-Lee e Dave Raggett discutiram sobre uma maneira de implementar a RV na web. O surgimento dessa linguagem se deu pela necessidade de se utilizar ambientes 3D interativos na internet. No segundo semestre de 1996, surgiu a linguagem VRML na verso 2.0, criando um padro para ambientes web. Pelo fato de ser de domnio pblico e ter padro industrial, a VRML se tornou uma referncia mundial de linguagem para RV. A forma como a VRML foi desenvolvida, despertou interesse dos setores comerciais e cientficos. Os arquivos no formato VRML so baseados em ASCII, ou seja, so do tipo texto, possibilitando ao programador utilizar qualquer editor de textos para escrever os programas. Os arquivos definem as formas geomtricas, cores, animaes, enfim, todos os objetos das cenas e imagens criadas pelo desenvolvedor. Para executar esse arquivo em um browser, se faz necessrio ter um plug-in compatvel com o browser. O conceito de cenrios 3D utilizando VRML baseia-se na elaborao de um grafo o qual possui diferentes Nodes que, se forem associados da forma correta, podem ser agrupados. Esses Nodes se destacam pelas propriedades de aparncia, sons e vrios tipos de agrupamentos, tornando essas as principais caractersticas dessa linguagem.
1.2.1 Multimdia
"Multimdia a integrao, controlada por
computador, de textos grficos, imagens, vdeo, animaes, udio e outras mdias, que possam representar, armazenar, transmitir e processar
Multimdia se tornou muito popular com a melhoria dos recursos dos microcomputadores como som, vdeo colorido e leitores de CD. Outro impulso foi dado com a internet e a WWW, mais ainda quando a banda larga se tornou popular. Hoje, os principais sites possuem vdeos, sons e animaes, como mostrado na Figura 1.
9 Ainda quando a internet no possua o contedo e recursos que possui nos dias atuais, foram criados vrios ttulos de CDs multimdia, contendo informao, fotos, vdeos e sons. Na Figura 2 v-se um exemplo de CD multimda sobre o basquete americano. Enciclipdias eram populares nesse formato, uma vez que os sites ainda no tinham tamanho contedo.
Os consoles de videogames modernos, como o Playstation 3, XBox 360, Playstation porttil, Nintendo DS e Wii so equipamentos que possuem outras funes alm dos jogos. Msicas, vdeos, fotos, acesso internet, aluguel de filmes, msicas e rdio so algumas das funes que podem ser encontradas nesses equipamentos, que se tornaram equipamentos multimdia. A Figura 3 mostra o menu do Playstation 3 na qual pode-se observar algumas de suas funes.
10
Realidade Aumentada a insero de objetos virtuais no ambiente fsico, mostrada ao usurio, em tempo real, com o apoio de algum dispositivo tecnolgico, usando a interface do ambiente real, adaptada para visualizar e manipular os objetos reais e virtuais.
A realidade aumentada consiste da mistura de imagens reais, obtidas atravs de cmeras fotogrficas, cmeras de celular, cmeras de computador ou de consoles, com objetos virtuais, eventualmente usando algum tipo de interface, como objetos com formato definido para interagir com esses objetos virtuais. A Realidade Aumentada uma particularizao de um conceito mais geral, denominado realidade misturada, que consiste na sobreposio de ambientes reais e virtuais, em tempo real, atravs de um dispositivo tecnolgico. Uma das
11 maneiras mais simples de se conseguir isto baseia-se no uso de um microcomputador com uma webcam, executando um software que, atravs de tcnicas de viso computacional e processamento de imagens, mistura a cena do ambiente real, capturada pela webcam, com objetos virtuais gerados por computador. O software tambm cuida do posicionamento, ocluso e interao dos objetos virtuais, dando a impresso ao usurio que o cenrio nico. A Realidade Aumentada teve sua origem em um dispositivo simples, as etiquetas. Os cdigos de barras no estavam mais cumprindo com perfeio a tarefa de carregar todas as informaes que se queria obter atravs de sua leitura. Por isso, foram criados os cdigos 2D (duas dimenses), que permitiam o armazenamento de muito mais informao do que os cdigos de barras. Os cdigos bidimensionais so os responsveis pela possibilidade de se projetar objetos virtuais em uma filmagem do mundo real. A Realidade Aumentada utilizada combinando-se um cdigo de duas dimenses, denominado QR Code Quick Response Code (Cdigo de resposta rpida), como o mostrado na Figura 4, com um programa de computador.
Mobilidade e automatizao de entrada de dados um importante diferencial do cdigo de barras tradicional. Desde o pagamento de contas at a
12 automao de pontos de venda, largamente utilizado e oferece relativa facilidade de manuteno. A grande desvantagem do cdigo de barras a necessidade de um leitor apropriado. Outra desvantagem a limitao na entrada de dados, devido ao padro unidimensional e sequencial do modelo. Cada caracter equivale a uma sequncia de barras de diferentes larguras e espaamentos. Quanto maior a mensagem inserida no cdigo, maior ser sua largura assim limitando muito seu uso. O QR Code (Quick Response Code) foi criado pela empresa japonesa Denso-Wave em 1994 e foi aprovado como padro ISO 18004, mas s recentemente tem tido sua utilizao difundida. Trata-se de um cdigo bi-
dimensional que pode ser lido diretamente por uma cmera digital e interpretado pelos programas desenvolvidos pelo fabricante, podendo armazenar letras, nmeros e cdigo binrio. Aproveitando o fato da adoo em massa de celulares com cmera no Japo e na grande maioria dos pases do mundo, o QR Code est tambm sendo utilizado no Brasil em aplicaes de Realidade Aumentada. A maior vantagem do QR Code que suas aplicaes, ao contrrio do cdigo de barras tradicional, so muito mais ampliadas. No jogo do Playstation 3, mostrado na Figura 5, a cmera captura as imagens do ambiente do jogador e insere no ambiente um bichinho virtual.
13 O jogador pode tocar virtualmente o animal, brincando e interagindo. O carto com o desenho de uma pegada de uma pata trocado pelo sistema por diversos objetos, por exemplo, uma mamadeira, com a qual o ser virtual pode ser alimentado. Na propaganda do banco Ita mostrada na Figura 6, ao capturar a imagem com uma cmera do computador (webcam), entrando em um site especfico, pode-se ver uma animao especial.
Um outro exemplo de aplicao mostrado na figura 7. Ao apresentar a figura atrs da embalagem do salgadinho adicionado um personagem virtual ao ambiente, com o qual pode-se interagir e jogar com outras pessoas.
14
A figura 8 mostra outra aplicao interessante da realidade aumentada. Com uma cmera de celular, o aplicativo aponta a direo e a distncia de pontos tursticos ou de interesse, facilitando a localizao de um turista.
15 A RV trabalha com dispositivos que estimulam no usurio os cinco sentidos do corpo humano. Conforme o usurio se move e interage no mundo virtual, os dispositivos retornam ao mesmo os cinco sentidos: a viso, olfato, audio, paladar e tato. Existem diversos tipos de dispositivos desenvolvidos para RV, sendo eles, capacetes, luvas, controladores, simuladores, roupas, entre outros. No que se segue, so abordadas as caractersticas desses equipamentos.
1.3.1 Capacete
Existem diversos tipos de capacetes (Figura 9) para a visualizao da RV. As principais caractersticas deles so: Estereoscpicos ou monoscpicos: Tm a capacidade de emitir uma imagem plana ou ainda um grupo de imagens em alto relevo. Binoculares ou monoculares: Conseguem estimular um ou at mesmo os dois olhos. Opacos ou translcidos: Tm a caracterstica de bloquear ou permitir a passagem de luz vinda do exterior.
Figura 9 da esquerda para direita: VFX1, Sony Glasstron, V8, Dynovisor, StuntMaster e M1 Monocular. Fonte: http://www.pgie.ufrgs.br/siterv/equipamentos.htm
1.3.2 Luvas
Uma luva digital um dispositivo que faz a interao entre o usurio e as aplicaes de RV. Com esse dispositivo possvel o usurio usufruir de vrios parmetros fsicos, tais como: a presso, a temperatura, a fora linear e a textura ou superfcie de um material. Existem diversos tipos de luvas, tais como luvas de funcionamento ptico, magntico ou de tato, porm, o modelo mais utilizado a de funcionamento ptico. Na figura 10 podem-se ver alguns modelos.
16
Figura 10 - Da esquerda para direita: Fifth Dimension, Johnson Kinetic, CyberGlove, Pinch Glove, 5th Glove e PowerGlove.
Fonte: http://www.pgie.ufrgs.br/siterv/equipamentos.htm
1.3.3 Controladores
Os controladores tm a finalidade de proporcionar ao usurio o poder de controlar personagens, objetos, cenrios e ambientes em mundos virtuais, jogos e outras aplicaes em RV. Alguns modelos dessa tecnologia so dispositivos fixos, no permitindo que haja movimentos no ar, como por exemplo, simuladores de vo. Outros modelos de controladores agregam mais realidade no domnio da ao, pois o controle tem a sensibilidade de identificar grande parte dos movimentos feitos pelo usurio, tanto areo quanto em uma base fixa. A Figura nos mostra alguns exemplos:
Figura 11 - Da esquerda para a direita: GyroPoint Desk, Avenger, Cyberman 2, Cyberstik e FreeD. Fonte: http://www.pgie.ufrgs.br/siterv/equipamentos.htm
Hoje podemos destacar os controles com sensibilidade de movimento, como o controle do Wii, o Move do Playstation3 e mais recentemente o Kinect do Xbox 360 da Microsoft. Este ltimo insere o jogador dentro do jogo, capturando os movimentos de todo o seu corpo.
17
1.3.4 Simuladores
Os simuladores tm a capacidade de simular a realidade. A finalidade dos simuladores varia de aplicaes de entretenimento at treinamento de novos pilotos, proporcionando maior intimidade do piloto com uma aeronave, por exemplo. Outro exemplo o simulador de corrida que transmite com facilidade a sensao de se estar dentro de um carro de frmula 1, se for o caso. A Figura 12 mostra um exemplo de simulador.
1.3.5 Roupas
Os dispositivos tecnolgicos j citados, permitem ao usurio a manipulao em um ambiente virtual, porm, a que gera maior sentimento de imerso no ambiente virtual a roupa. Esse dispositivo reveste o corpo humano de sensores que, por sua vez, captam os menores movimentos do corpo e assim, conseguem repassar para o ambiente virtual todos os movimentos feitos pelo usurio. Na Figura 13 pode-se ver um modelo de roupa para RV.
18
19
2 VRML
2.1 Introduo ao VRML
VRML a abreviao de Virtual Reality Modeling Language, ou Linguagem para Modelagem em Realidade Virtual. uma linguagem independente de plataforma que permite a criao de cenrios tridimensionais (3D) por onde se pode passear, visualizar objetos por ngulos diferentes e at interagir com eles. uma linguagem textual para descrio de cenas e ambientes interativos em 3D; no uma linguagem de programao.
Arquivos VRML tm extenso .wrl e no so compilados; so arquivostexto escritos em ASCii que podem ser interpretados por um interpretador VRML. Um interpretador ou browser VRML permite a visualizao de um programa VRML localmente ou atravs da internet. A primeira verso da linguagem no possibilitava muita iterao do usurio com o mundo virtual, mas verses recentes acrescentam caractersticas como animao, movimentos de corpos e iterao entre usurios. A ltima verso a 2.0, chamada Moving Worlds VRML 2.0. A Especificao VRML a documentao que descreve todas as caractersticas da linguagem. A linguagem VRML pode ser usada numa pgina web preenchendo a pgina, preenchendo apenas um retngulo da pgina ou preenchendo um frame ou parte do frame. Apresentada pela primeira vez em 1994 na Primeira Conferncia da World Wide Web, a linguagem tem como objetivo dar o suporte necessrio para o desenvolvimento de mundos virtuais multi-usurios na internet, sem precisar de redes de alta velocidade. O cdigo VRML um subconjunto do formato de arquivo ASCii do Open Inventor, da Silicon Graphics, com caractersticas
20 adicionais para navegao na web. Esta caracterstica equivalente aos links do HTML, ou seja, podem-se criar links em um mundo virtual que levem a outros mundos virtuais. A linguagem trabalha com geometria 3D (possui as formas geomtricas primitivas cubo, cone, cilindro e esfera e diversas outras geometrias avanadas) e suporta transformaes (rotao, translao, escala), texturas, luz,
sombreamento e animao.
21
22
23
Shape { appearance Appearance { material Material { diffuseColor 1 1 0 } } geometry Sphere { radius 1.5 } }
24 Tudo o que se precisa para escrever um cdigo VRML um editor de textos (por exemplo, o Bloco de Notas). Uma vez editado, o arquivo deve ser gravado em formato ASCII e ter a extenso .wrl. Edite o programa descrito anteriormente. Salve o arquivo como esfera.wrl. Entre no seu browser e abra o arquivo editado (esfera.wrl). No preciso estar conectado internet, pois o seu arquivo ser exibido localmente. Nem preciso fechar o arquivo no seu editor de textos. O Cortona entrar em ao e mostrar uma esfera amarela. Aproveite para se acostumar com os controles da barra inferior do Cortona, que permite a livre manipulao dos objetos no espao tridimensional. Caso no aparea a esfera, haver luzes vermelhas piscando na barra inferior. Isso significa que h erro no arquivo. Clicando nas luzes, aparecero as mensagens de erro. Volte ao editor, conserte os erros, salve o arquivo e volte ao browser novamente. Cuidado, pois o VRML faz diferena entre letras maisculas e minsculas! Tudo muito simples e fcil, como mostra a figura 15.
25
Tabela 1 Cores bsicas em VRML no sistema RGB R (Vermelho) 0 0 0 0 1 1 1 1 G (Verde) 0 0 1 1 0 0 1 1 B (azul) 0 1 0 1 0 1 0 1 Cor Resultante preto azul verde ciano vermelho roxo amarelo branco
No programa apresentado na seo 2.5.1, a cor da esfera foi assim definida: appearance Appearance { material Material { diffuseColor 1 1 0 } }
ou seja, a mistura RGB resultou no amarelo. Mas, no existem apenas as 8 cores mostradas na tabela 1. Os valores associados aos componentes RGB podem ser quaisquer valores entre 0 e 1! Isso d uma mistura praticamente infinita de cores.
26 Quando nenhuma cor definida, ou seja, quando o campo diffuseColor omitido, a cor assumida o branco. Assim, poder-se-ia definir uma cor como: appearance Appearance { material Material { diffuseColor 0.57 0.25 0.89 } }
Que cor foi criada? Modifique o programa esfera.wrl e veja o resultado. Faa outros testes tambm. No h limite para a criao de cores.
Assumindo que o cruzamento dos 3 eixos o ponto central (0,0,0), a descrio dos objetos no espao 3D pode ser expressa atravs de coordenadas relativas ao ponto central. Cada eixo tem uma direo positiva e negativa, estendendo-se do ponto central da cena. Tomando esta pgina como referncia, o eixo-X positivo est para a direita, o eixo-Y positivo est para cima e o eixo-Z positivo est perpendicular aos dois anteriores, saindo da pgina na direo do leitor, conforme mostra a figura 16.
27
Os objetos dentro da cena (e a prpria cena) podem ser rotacionados mudando a sua orientao de 3 formas (conforme mostra a figura 17):
Yaw, rotao em torno do eixo Y Pitch, rotao em torno do eixo X Roll, rotao em torno do eixo Z
Os 3 eixos e as 3 rotaes so chamados de 6 graus de liberdade, que determinam a localizao e orientao dos objetos no espao 3D.
28
29 #VRML V2.0 utf8 #Nome do arquivo #Comentrios Shape { appearance Appearance # define a aparncia { ... } geometry { .... } } # define a geometria ou forma 3D
Neste curso ser adotado como padro colocar o nome do arquivo na segunda linha dos programas apresentados, na forma de comentrio. Assim o aluno poder localizar o programa (que se encontra no disquete que acompanha o curso) e visualiz-lo no Cortona. As formas geomtricas que podem ser definidas no campo geometry so: Box Cone Cylinder Sphere ElevationGrid Extrusion IndexedFaceSet IndexedLineSet PointSet Text As quatro primeiras so formas geomtricas primitivas: box (cubo), cone (cone), cylinder (cilindro) e sphere (esfera) e sero definidas no que se segue. As outras so consideradas formas de geometria avanada e sero tratadas posteriormente.
30
2.6.1 Box
Para definir um cubo (ou um paraleleppedo) usa-se a geometria Box do node Shape. O centro padro de um Box (0,0,0). A geometria tem apenas um campo size composto de 3 valores em ponto flutuante que correspondem s dimenses do cubo nas direes X (largura), Y (altura) e Z (profundidade). Sintaxe: geometry Box { size } Exemplo: #VRML V2.0 utf8 #Programa Box.wrl #Um paraleleppedo azul
Shape { appearance Appearance { material Material { diffuseColor 0.0 0.0 1.0 } } geometry Box { size 2.5 2.5 5.0 } }
2.6.2 Cone
Para definir um cone (chapu de palhao) usa-se a geometria Cone do node Shape. A geometria tem os campos bottomRadius e height que definem o raio da base e a altura, e dois campos opcionais side e bottom que, se omitidos, so assinalados para TRUE.
31 Sintaxe: geometry Cone { bottomRadius height #raio da base #altura #tem a lateral ?
side TRUE/FALSE
bottom TRUE/FALSE #tem a base ou vazado? } Exemplo: #VRML V2.0 utf8 #Programa Cone.wrl #Um cone vermelho com lateral e base Shape { appearance Appearance { material Material { diffuseColor 1 0 0 } } geometry Cone { bottomRadius 3 height 5 side TRUE bottom TRUE } }
Seria um exerccio interessante modificar os atributos side e bottom de TRUE para FALSE para se entender melhor a sua funo. O campo bottom FALSE permite que se construa um chapu de palhao vazado no centro.
2.6.3 Cylinder
Para definir um cilindro (canudo de refrigerante) usa-se a geometria Cylinder do node Shape. A geometria tem os campos radius e height que
32 definem o raio das duas bases e a altura, e trs campos opcionais side, top e bottom que, se omitidos, so assinalados para TRUE. Sintaxe: geometry Cylinder { radius height #raio #altura #tem a lateral? #tem a parte de cima?
bottom TRUE/FALSE #tem a parte de baixo? } Exemplo: #VRML V2.0 utf8 #Programa Cylinder.wrl #Um canudinho verde com lateral, vazado no centro
Shape { appearance Appearance { material Material { diffuseColor 0 1 0 } } geometry Cylinder { radius 0.5 height 4 side TRUE top FALSE bottom FALSE } }
2.6.4 Sphere
Para definir uma esfera (bola) usa-se a geometria Sphere do node Shape. O centro padro de uma Sphere (0,0,0). A geometria tem apenas um campo radius que define o seu raio.
33 Sintaxe: geometry Sphere { radius } Exemplo: #VRML V2.0 utf8 #Programa Sphere.wrl #Uma esfera amarela
Shape { appearance Appearance { material Material { diffuseColor 1 1 0 } } geometry Sphere { radius 1.89 } }
34
#VRML V2.0 utf8 #Shapes.wrl #Demonstra o uso de multiplos shapes no mesmo arquivo #Space Station by David R. Nadeau #Alterado por Elisamara de Oliveira em 03/2011
35
Shape { appearance Appearance { material Material { } } geometry Cylinder { radius 0.3 height 3.0 } } Shape { appearance Appearance { material Material { diffuseColor 0 1 1 } } geometry Cylinder { radius 0.1 height 6.0 } }
36
scaleOrientation, center, bboxCenter e bboxSize no sero aqui abordados) que esto presentes no node Transform so: scale: especifica uma transformao de escalamento 3D. So passados 3 valores em ponto flutuante: o primeiro se refere ao escalamento do objeto na direo X, o segundo na direo Y e o terceiro na direo Z. rotation: define uma rotao em torno de um eixo. A rotao definida por um vetor (x,y,z) e um ngulo em radianos. translation: define a origem do sistema de coordenadas local. children: contm todos os nodes includos no group.
37 Exemplo: #VRML V2.0 utf8 #TransRotScale.wrl #Exemplo de Translao, rotao e escala juntos
Shape { appearance Appearance { material Material { diffuseColor 0 0 1 } } geometry Cylinder { height radius } } 0.5 4
Transform { translation 2 2 2 rotation 3 2.0 2.0 3.14 scale 1 1.2 1 children [ Shape { appearance Appearance { material Material { diffuseColor 0 1 1 } }
4 0.5
] }
38 O programa TransRotScale.wrl mostra um cilindro azul centrado no ponto (0,0,0) e o mesmo cilindro com a cor alterada para ciano (repetido no campo children do node Transform), aps sofrer as operaes de translao, rotao e escala, conforme ilustra a figura 20.
Transform { translation 0.8 1.8 1.8 rotation 1.8 3.8 1.8 2.8 scale 0.8 1.8 2.8 children [ Inline { url "cylinder.wrl"} ] }
DEF Cilindro Shape { appearance Appearance { material Material { diffuseColor 1 0 1 } } geometry Cylinder { height radius } } 4 0.5
Transform { translation 0.8 1.8 1.8 rotation 1.8 3.8 1.8 2.8 scale 0.8 1.8 2.8 children USE Cilindro
2.7.2 Scale
A operao de escala permite modificar o tamanho de uma forma geomtrica. A forma pode ser aumentada ou reduzida em qualquer uma das trs dimenses X (largura), Y (altura) e Z (profundidade). O fator de escala deve ser positivo. A figura 21 mostra um box sem escalamento, depois escalado em x por 0.2, em seguida escalado em y tambm por 0.2 e por ltimo escalado ao mesmo tempo em x e em y por 0.2.
40
Transform { scale 2 1 1 translation 2 1 2 children [ Shape { appearance Appearance { material Material { diffuseColor 0 1 1 } } geometry Cylinder { height radius } } 4 0.5
] }
2.7.3 Rotation
A rotao definida por um vetor (x,y,z) e um ngulo em radianos. O vetor define o eixo de rotao enquanto o ngulo define o quanto que o objeto ser rotacionado no sentido horrio.
41 Na figura 22, o primeiro box no est rotacionado; o segundo box est rotacionado por um ngulo de 45 graus em torno de Y; o terceiro est rotacionado em 45o em torno de X; o ltimo est rotacionado em 45o usando o vetor (1 1 0).
Transform { rotation 2 2 1 3 children [ Shape { appearance Appearance { material Material { diffuseColor 0 1 1 } } geometry Cylinder { height radius } } ] } 4 0.5
2.7.4 Translation
A translao perimite que se desloque o objeto para o lugar que se queira no espao tridimensional. A figura 23 ilustra este conceito. As linhas tracejadas representam o sistema de coordenadas usado fora do node Transform. As linhas slidas reprsentam o sistema de coordenadas local dentro do node Transform definido pela seta que aponta para a nova posio (x,y,z). Na figura, a translao para (1,1,0).
42
#ESTE O CILINDRO TRANSLADADO Transform { translation 2 1 2 children [ Shape { appearance Appearance { material Material { diffuseColor 0 1 1 } } geometry Cylinder { height radius } } 4 0.5
] }
43
2.8.1 PointSet
A geometria PointSet especifica um conjunto de pontos 3D no sistema de coordenadas local e as cores associadas a cada ponto. PointSet contm dois campos: coord, que define as coordenadas de cada um dos pontos e color, que define a cor de cada um dos pontos. Deve haver tantas cores quanto forem os pontos.
] } }
44 Exemplo:
#VRML V2.0 utf8 #PointSet.wrl-Mostra uma chuva de pontos atravs da geometria PointSet Shape { appearance Appearance geometry PointSet { coord Coordinate { point [ # Cooordenadas dos Pontos cor ciano 1.0 1.0 1.0, 0.5 1.0 1.0, 1.5 1.5 1.5, 1.0 0.5 1.0, 2.0 2.0 2.0, 1.0 1.0 0.5, 2.5 2.5 2.5, 1.5 2.0 2.0, 3.0 3.0 3.0, 2.0 1.5 2.0, # Coordenadas dos Pontos cor Amarela -1.0 -1.0 -1.0, -0.5 -1.0 -1.0, -1.5 -1.5 -1.5, -1.0 -0.5 -1.0, -2.0 -2.0 -2.0, -1.0 -1.0 -0.5, -2.5 -2.5 -2.5, -1.5 -2.0 -2.0, -3.0 -3.0 -3.0, -2.0 -1.5 -2.0 ] } color Color { color [ # cor ciano 0.0 1.0 1.0, 0.0 1.0 1.0, 0.0 1.0 1.0, 0.0 1.0 1.0, 0.0 1.0 1.0, 0.0 1.0 1.0, 0.0 1.0 1.0, 0.0 1.0 1.0, 0.0 1.0 1.0, 0.0 1.0 1.0, # cor amarela 1.0 1.0 0.0, 1.0 1.0 0.0, 1.0 1.0 0.0, 1.0 1.0 0.0, 1.0 1.0 0.0, 1.0 1.0 0.0, 1.0 1.0 0.0, 1.0 1.0 0.0, 1.0 1.0 0.0, 1.0 1.0 0.0, ] } } } { }
45
2.8.2 IndexedLineSet
A geometria IndexedLineSet especifica um conjunto de poli-linhas no sistema de coordenadas local e as cores associadas. Atravs da ligao das linhas, pode-se criar o contorno de qualquer polgono ou contornos de diferentes objetos, como uma estrela, uma casa, um cubo, uma pirmide, etc. A geometria contm cinco campos: coord: especifica as coordenadas dos pontos que sero conectados para formar as linhas; o primeiro ponto o ponto 0, o segundo ponto 1 e assim por diante. coordIndex: indica como os pontos sero ligados, formando as poli-linhas; quando uma poli-linha termina, ela partida pelo nmero 1; para formar um polgono fechado necessrio repetir o primeiro ponto. color: indica as cores que sero usadas para colorir as poli-linhas; a primeira cor 0, a segunda 1 e assim por diante. colorIndex: indica uma cor para cada uma das poli-linhas definidas no campo coordIndex ou cada um dos pontos definidos em coord. colorPervertex: se FALSE indica que as cores sero aplicadas s polilinhas; neste caso, dever haver uma cor associada cada poli-linha definida em coordIndex (as cores podem se repetir); se TRUE indica que as cores sero aplicadas aos pontos (vrtices): o resultado final que cada linha comear com uma cor e terminar com outra, produzindo um efeito gradiente; neste caso dever haver tantas cores (definidas no campo color) quanto o nmero de vrtices (pontos) definidos em coord.
Se
considerarmos
as
coordenadas
dos
ponto 0 (0 0 0), ponto 1 (1 1 0), ponto 2 (-1 0 0) e ponto 3 (-1 -1 0), a figura 24 mostra o resultado de 3 ligaes diferentes destes pontos que seriam definidos no campo coordIndex.
46
] }
] }
colorIndex [ , , ..., ]
colorPerVertex TRUE/FALSE }
47 Exemplo:
#VRML V2.0 utf8 #IndexedLineSet.wrl #Desenho das arestas de um cubo com 3 cores diferentes
Shape { appearance Appearance { } geometry IndexedLineSet { coord Coordinate { point [ # Cubo 1.0 1.0 1.0, # ponto 0 1.0 -1.0 1.0, # ponto 1 -1.0 -1.0 1.0, # ponto 2 -1.0 1.0 1.0, # ponto 3 1.0 1.0 -1.0, # ponto 4 1.0 -1.0 -1.0, # ponto 5 -1.0 -1.0 -1.0, # ponto 6 -1.0 1.0 -1.0 # ponto 7 ] } color Color { color [1.0 0.0 0.0, 0.0 1.0 0.0, 0.0 0.0 1.0 # apenas 3 cores 0=Vermelho, 1=Verde e 2=Azul ] } coordIndex [ # Linha vermelha (paralela ao eixo x) 0, 3, -1, 1, 2, -1, 4, 7, -1, 5, 6, -1, # Linha verde (paralela ao eixo y) 0, 1, -1, 2, 3, -1, 4, 5, -1, 6, 7, -1, # Linha azul (paralela ao eixo z) 0, 4, -1, 1, 5, -1, 2, 6, -1, 3, 7, -1 ] colorIndex [ 0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2 ] colorPerVertex FALSE } }
48
2.8.3 IndexedFaceSet
A geometria IndexedFaceSet especifica um conjunto de faces no sistema de coordenadas local e as cores ou texturas associadas. Atravs da ligao das faces, pode-se criar qualquer polgono ou diferentes objetos com as faces preenchidas com cores slidas, como uma estrela, uma casa, um cubo, uma pirmide, etc. A geometria contm onze campos, que incluem texCoord e
texCoordIndex que permitem a aplicao de texturas s faces, mas que no sero apresentados aqui. Os nove campos a serem abordados so: coord: especifica as coordenadas dos pontos que sero conectados para formar as faces; o primeiro ponto o ponto 0, o segundo ponto 1 e assim por diante. coordIndex: indica como os pontos sero ligados, formando as faces; quando uma face termina, ela finalizada pelo nmero 1. No necessrio repetir o primeiro ponto, a face sempre fechada. color: indica as cores que sero usadas para colorir as faces; a primeira cor 0, a segunda 1 e assim por diante. colorIndex: indica uma cor para cada uma das faces definidas no campo coordIndex ou cada um dos pontos definidos em coord. colorPervertex: similar ao definido na geometria indexedLineSet. ccw: TRUE define se os pontos que delimitam as faces sero apresentados em sentido anti-horrio; no sentido horrio ou desconhecido, caso seja FALSE. solid: FALSE determina se o browser deve desenhar ambos os lados das faces; TRUE, desenha s a frente. convex: deve ser TRUE, pois indica que as faces so convexas; FALSE indicaria que elas seriam cncavas, mas o VRML s trabalha com faces convexas. creaseAngle: especifica o limiar de ngulo (em radianos); se duas faces adjacentes fazem um ngulo maior que o creaseAngle, possvel ver claramente que duas faces de encontram, pois o encontro delas fica abrupto, o ideal que esse encontro seja suave.
] }
] }
colorIndex [ , , ..., ]
colorPerVertex TRUE/FALSE
solid TRUE/FALSE
ccw TRUE/FALSE
convex TRUE/FALSE
creaseAngle }
50 Exemplo:
#VRML V2.0 utf8 #IndexedFaceSet.wrl #Construcao de uma piramide com faces de diferentes cores. Shape { appearance Appearance { material Material { } } geometry IndexedFaceSet { coord Coordinate { point [ # Coordenadas dos pontos que formarao as faces da piramide -1 -1 0, 1 -1 0, 1 1 0, -1 1 0, 0 0 1 ] } coordIndex [ 0 1 4 -1, 1 2 4 -1, 2 3 4 -1, 304 ] color Color { color [ 1.0 0.0 0.0, 0.0 1.0 0.0, 0.0 0.0 1.0 # apenas 3 cores 0=Vermelho, 1=Verde e 2=Azul ] } colorPerVertex FALSE colorIndex [1202] solid FALSE ccw TRUE convex TRUE creaseAngle 0 } }
51
2.8.4 ElevationGrid
A geometria ElevationGrid especifica uma matriz de pontos, cada qual com uma altura definida; uma geometria til para se construir um terreno acidentado ou malhas. A geometria construda no plano XZ, como uma matriz, comeando da origem e expandindo-se na direo positiva dos eixos. Os seguintes campos fazem parte de sua definio: xDimension: define o nmero de pontos no eixo X zDimension: define o nmero de pontos no eixo Z xSpacing: define a distncia entre dois pontos adjacentes no eixo X zSpacing: define a distncia entre dois pontos adjacentes no eixo Z height: define uma lista de valores em ponto flutuante que especificam a altura de cada ponto da matriz; os pontos so ordenados da esquerda para a direita e de cima para baixo. Dever haver xDimension multiplicado por zDimension pontos. color: define a cor de cada um dos pontos da matriz; mas opcional. colorPerVertex: similar ao definido na geometria IndexedLineSet. ccw: TRUE define se os espaos da matriz de pontos sero apresentados em sentido anti-horrio; horrio ou desconhecido, caso seja FALSE. solid: FALSE determina se o browser deve desenhar ambos os lados da matriz de pontos; TRUE, desenha s a parte de cima. convex: deve ser TRUE, pois indica que as faces so convexas; FALSE indicaria que elas seriam cncavas, mas o VRML s trabalha com faces convexas. creaseAngle: especifica o limiar de ngulo (em radianos); se dois pontos adjacentes da matriz fazem um ngulo maior que o creaseAngle, possvel ver claramente que os dois se encontram, pois o encontro deles fica abrupto, o ideal que esse encontro seja suave.
52 Sintaxe: geometry ElevationGrid { xDimension zDimension xSpacing zSpacing height [ ... .... ... ]
colorPerVertex TRUE/FALSE
solid TRUE/FALSE
ccw TRUE/FALSE
convex TRUE/FALSE
creaseAngle }
53 Exemplo:
#VRML V2.0 utf8 #ElevationGridChess.wrl #Desenha um tabuleiro de xadrez com a geometria ElevationGrid
Shape { geometry ElevationGrid { xDimension 9 zDimension 9 xSpacing 1 zSpacing 1 height [ 000000000 000000000 000000000 000000000 000000000 000000000 000000000 000000000 000000000 ] colorPerVertex FALSE color Color { color [ 0 0 0, 1 1 1, 0 0 0, 1 1 1, 0 0 0, 1 1 1, 0 0 0, 1 1 1, 1 1 1, 0 0 0, 1 1 1, 0 0 0, 1 1 1, 0 0 0, 1 1 1, 0 0 0, 0 0 0, 1 1 1, 0 0 0, 1 1 1, 0 0 0, 1 1 1, 0 0 0, 1 1 1, 1 1 1, 0 0 0, 1 1 1, 0 0 0, 1 1 1, 0 0 0, 1 1 1, 0 0 0, 0 0 0, 1 1 1, 0 0 0, 1 1 1, 0 0 0, 1 1 1, 0 0 0, 1 1 1, 1 1 1, 0 0 0, 1 1 1, 0 0 0, 1 1 1, 0 0 0, 1 1 1, 0 0 0, 0 0 0, 1 1 1, 0 0 0, 1 1 1, 0 0 0, 1 1 1, 0 0 0, 1 1 1, 1 1 1, 0 0 0, 1 1 1, 0 0 0, 1 1 1, 0 0 0, 1 1 1, 0 0 0, ] } } }
Apresenta-se o programa ElevationGridChess.wrl que desenha um tabuleiro de xadrez. Edite o programa e visualize-o no Cortona.
54
2.8.5 Extrusion
A geometria Extrusion muito poderosa, permitindo que se construam formas geomtricas complexas usando apenas alguns pontos. Sintaxe: geometry Extrusion { crossSection [ orientation scale solid TRUE/FALSE spine [ , , ..., ] , ... , ]
A base de uma forma construda com a geometria Extrusion uma seo 2D. Por exemplo, considerando um cubo, a base que forma sua seo 2D um quadrado. As sees 2D so definidas no plano XZ e as coordenadas de seus pontos so definidas no campo crossSection. A figura 25 mostra uma seo 2D para um cubo.
55 Outro conceito necessrio para a construo de uma geometria Extrusion o campo spine. A spine define o caminho que a seo 2D vai percorrer para criar a forma geomtrica. Para construir um cubo a partir da seo 2D mostrada na figura 25, pode-se comear fazendo a seo 2D cruzar o plano em (0,-1,0) (direo negativa do eixo Y) em direo a (0,1,0) (direo positiva de Y). A figura 26 mostra a spine para o cubo e o caminho a ser percorrido pela seo 2D.
A spine da figura 26 definida por dois pontos (0,-1,0) e (0,1,0), embora possam ter tantos pontos quanto o necessrio para a definio da forma. A lista de passos que o browser segue para desenhar a geometria Extrusion a partir dos pontos de spine : Translada a seo 2D para o primeiro ponto da spine. Reorienta a seo 2D definida no plano XZ de forma que o eixo Y coincida com a direo obtida com os dois pontos da spine (no exemplo da figura 26, esse passo no necessrio). Move a seo 2D para o ltimo ponto da spine. Aps a execuo do ltimo passo, o browser vai criar as paredes laterais do cubo. O resultado final mostrado na figura 27.
56 Os campos beginCap e endCap especificam se a forma ser aberta ou fechada em suas extremidades. A figura 28(a) mostra o cubo da figura 27 quando os campos beginCap e endCap esto marcados como FALSE o cubo est vazado em ambas as extremidades. Alm disso, possvel ver somente as duas faces que esto viradas para os olhos do leitor, pois o campo solid est marcado como TRUE (ainda em 28a). Marcando o campo solid para FALSE, a viso do cubo torna-se a mostrada em 28(b).
Figura 28 - cubo com campos beginCap e endCap FALSE e (a) solid TRUE (b) solid FALSE
Exemplo:
#VRML V2.0 utf8 #ExtrusionCube.wrl #Desenha um cubo a partir da geometria Extrusion { children [ Shape { appearance Appearance { material Material {} } geometry Extrusion { crossSection [ -1 -1, -1 1, 1 1, 1 -1, -1 1 ] spine [0 -1 0 , 0 1 0 ] beginCap FALSE endCap FALSE solid FALSE } } ] }
57
58
2.8.6 Text
O texto tratado como uma geometria tambm, permitindo que palavras e frases sejam mostrados nos mundos VRML. Os campos que o definem so: string: contm o texto a ser mostrado; pode ter uma ou mais linhas. fontStyle: especifica um node parte que permite que sejam definidos aspectos de como o texto ser apresentado. composto dos campos: family: especifica o fonte; valores neste campo podem ser: "SERIF", "SANS", "TYPEWRITER". style: especifica o estilo do fonte; valores neste campo podem ser: "PLAIN", "BOLD", "ITALIC", "BOLDITALIC". horizontal: TRUE indica que o texto deve ser mostrado na horizontal, FALSE, na vertical. leftToRight: TRUE indica que o texto deve ser escrito da esquerda para a direita; FALSE, da direita para a esquerda (modo rabe) topToBottom: TRUE indica que o texto deve ser escrito de cima para baixo; FALSE, de baixo para cima (modo chins). justify: se horizontal TRUE, a justificao principal horizontal e a secundria vertical; se horizontal for FALSE o contrrio. H quatro valores para este campo: "FIRST", "BEGIN" (justificado esquerda), "MIDDLE" (centralizado) e "END" (justificado direita). language: especifica o alfabeto: "en" para English,"en_US" para US english, "zh" para chins, etc. Consulte o RFC 1766 para a lista completa. size: especifica a altura dos caracteres em unidades VRML. spacing: especifica o espao entre linhas. length: especifica o comprimento de cada string em unidades VRML, no em caracteres. Se o string for muito curto, escalado, se for muito longo, comprimido. Um valor zero indica que o string no deve ser nem escalado nem comprimido. Zero o valor default. maxExtent: limita, diminuindo se necessrio, todos os strings.
59 Sintaxe: geometry Text { string [ ] fontStyle { family "" style horizontal TRUE/FALSE justify "" language "" leftToRight TRUE/FALSE size spacing topToBottom TRUE/FALSE leftToRight TRUE/FALSE } length [ ] maxExtent }
Exemplo:
#VRML V2.0 utf8 #Text.wrl #Sao mostrados tres textos com diferentes caracteristicas. # Texto na posicao default Shape { appearance Appearance { material Material { diffuseColor 1.0 1.0 0.0 } } geometry Text { string "Italic serif" fontStyle FontStyle { size 1.7 family "SERIF" style "ITALIC" language "zh" leftToRight TRUE } } }
60
# Texto centralizado Transform {translation 0.0 3.0 0.0 children [ Shape { appearance Appearance { material Material { diffuseColor 0.0 1.0 0.0 } } geometry Text { string ["Bold", "sans-serif"] fontStyle FontStyle { size 1.4 justify "MIDDLE" family "SANS" style "BOLD" topToBottom TRUE horizontal TRUE } } } ] }
# Texto alinhado pelo fim Transform { translation -5.0 5.0 0.0 children [ Shape { appearance Appearance { material Material{ diffuseColor 1.0 0.0 1.0 } } geometry Text { string "Roman typewriter" fontStyle FontStyle { size 0.9 family "TYPEWRITER" style "" justify "END" horizontal FALSE } maxExtent 42.5 } } ] }
61
geometry { .... } }
Todas as dez formas geomtricas que podem ser definidas no campo geometry foram estudadas. Aqui ser estudado o campo appearance. Em appearance podem ser definidos os campos material, texture (que composto dos campos ImageTexture, MovieTexture e PixelTexture) e
textureTransform. Nesta seo apenas trs dos campos do appearance sero abordados, quais sejam: material Material texture ImageTexture texture MovieTexture
2.9.1 Material
O campo material Material especifica cor, reflexo da luz e transparncia das formas geomtricas e s pode ser definido dentro do campo appearance do node Shape. Material tem seis campos: diffuseColor: define a cor da geometria; este campo ignorado quando alguma textura usada.
62 emissiveColor: usado para definir objetos brilhantes. ambientIntensity: especifica a quantidade de luz refletida pela geometria. specularColor: define a cor dos spots brilhantes da geometria. shininess: controla a intensidade do brilho dos spots brilhantes; pequenos valores representam brilho suave e valores altos definem brilhos intensos. transparency: controla a trasparncia da geoemtria; se um valor 0.0 especificado, a geometria totalmente opaca; o valor 1.0 indica que a geometria transparente.
Os campos diffuseColor, emissiveColor e specularColor tm um valor RGB associado; os outros um valor em ponto flutuante entre 0.0 e 1.0.
Sintaxe: appearance Appearance { material Material { diffuseColor ambientIntensity emissiveColor specularColor shininess transparency } }
63 Exemplo:
#VRML V2.0 utf8 #Material.wrl #Sao mostrados seis vasos com diferentes materiais. #Definicao do ponto de vista inicial. Viewpoint { position 0.0 3.0 15.0 description "Vista inicial" } Group { children [ #Iluminacao PointLight { location 0.0 10.0 -9.0 ambientIntensity 0.2 }, PointLight { location 0.0 10.0 9.0 ambientIntensity 0.2 }, Shape { appearance Appearance { # Material - aluminio vaso 1 material Material { ambientIntensity 0.3 diffuseColor 0.30 0.30 0.50 specularColor 0.70 0.70 0.80 shininess 0.10 } } #cria um vaso com a geometria Extrusion geometry DEF vase Extrusion { creaseAngle 1.57 endCap FALSE solid FALSE crossSection [ #Definicao do circulo de crossSection 1.00 0.00, 0.92 -0.38, 0.71 -0.71, 0.38 -0.92, 0.00 -1.00, -0.38 -0.92, -0.71 -0.71, -0.92 -0.38, -1.00 -0.00, -0.92 0.38, -0.71 0.71, -0.38 0.92, 0.00 1.00, 0.38 0.92, 0.71 0.71, 0.92 0.38, 1.00 0.00 ] spine [ 0.0 0.0 0.0, 0.0 0.6 0.0, 0.0 1.0 0.0, 0.0 1.4 0.0, 0.0 1.8 0.0, 0.0 2.2 0.0, 0.0 2.6 0.0, 0.0 3.0 0.0, 0.0 3.4 0.0, 0.0 3.8 0.0, 0.0 4.2 0.0 ]
64
scale [ 1.5 1.5, 2.0 2.0, 1.8 1.8, 1.2 1.2, 1.0 1.0, 1.3 1.3, ]
1.95 1.95, 1.95 1.95 1.5 1.5 1.05 1.05, 1.05 1.05,
} }, Transform { translation -5.0 0.0 0.0 children [ Shape { appearance Appearance { #Material cobre vaso 2 material Material { ambientIntensity 0.26 diffuseColor 0.30 0.11 0.00 specularColor 0.75 0.33 0.00 shininess 0.08 } } geometry USE vase } ] }, Transform { translation 5.0 0.0 0.0 children [ Shape { appearance Appearance { #Material ouro vaso 3 material Material { ambientIntensity 0.4 diffuseColor 0.22 0.15 0.00 specularColor 0.71 0.70 0.56 shininess 0.16 } } geometry USE vase } ] } Transform { translation -5.0 0.0 -5.0 children [ Shape { appearance Appearance { # Material - vermelho metalico vaso 4 material Material { ambientIntensity 0.15 diffuseColor 0.27 0.0 0.0 specularColor 0.61 0.13 0.18 shininess 0.20 } } geometry USE vase } ]
65
} Transform { translation 0.0 0.0 -5.0 children [ Shape { appearance Appearance { # Material - plastico azul vaso 5 material Material { ambientIntensity 0.10 diffuseColor 0.20 0.20 0.71 specularColor 0.83 0.83 0.83 shininess 0.12 } } geometry USE vase } ] }, Transform { translation 5.0 0.0 -5.0 children [ Shape { appearance Appearance { # Material transparencia vaso 6 material Material { ambientIntensity 0.5 diffuseColor 0.0 0.0 0.2 specularColor 1.0 1.0 1.0 shininess 0.50 transparency 0.5 } } geometry USE vase } ] } ] }
2.9.2 ImageTexture
O campo texture ImageTexture especifica a localizao da imagem que ser utilizada para texturizar a geometria, assim como se a imagem ser repetida verticalmente ou horizontalmente ao longo das faces da forma. Os campos presentes so: url: especifica a localizao da imagem; os formatos aceitos so JPG/JPEG Joint Photographic Experts Group , GIF- Graphical Interchange Format e PNGPortable Network Graphics . Podem ser definidas mltiplas localizaes e o browser ir procurar pelos dados em ordem decrescente de endereos. repeatS: TRUE indica que a imagem deve ser repetida verticalmente. repeatT: TRUE indica que a imagem deve ser repetida horizontalmente.
66 Todos os campos so opcionais e valores default so aplicados quando os campos no so referenciados. Se a imagem no for localizada, nenhuma textura aplicada. Quando ambos os campos repeatS e repeatT so TRUE a imagem repetida duas vezes em cada direo. Sintaxe: appearance Appearance { texture ImageTexture { url [ ] repeatS TRUE/FALSE repeatT TRUE/FALSE } }
Exemplo:
#VRML V2.0 utf8 #ImageTexture.wrl #Criacao de um vaso com flores. O vaso e mapeado com uma #textura colorida e a textura das flores possui transparencia. #Definicao do ponto de vista inicial Viewpoint { position 0.0 5.0 18.0 description "Vista inicial" } Group { children [ #Cria o vaso com a geometria Extrusion Shape { appearance Appearance { texture ImageTexture { url "imporsol.jpg"} } geometry Extrusion { creaseAngle 1.57 endCap FALSE solid FALSE crossSection [ 1.00 0.00, 0.92 -0.38, 0.71 -0.71, 0.38 -0.92, 0.00 -1.00, -0.38 -0.92, -0.71 -0.71, -0.92 -0.38, -1.00 -0.00, -0.92 0.38, -0.71 0.71, -0.38 0.92, 0.00 1.00, 0.38 0.92, 0.71 0.71, 0.92 0.38, 1.00 0.00 ]
67
spine [ 0.0 0.0 0.0, 0.0 0.6 0.0, 0.0 1.0 0.0, 0.0 1.4 0.0, 0.0 1.8 0.0, 0.0 2.2 0.0, 0.0 2.6 0.0, 0.0 3.0 0.0, 0.0 3.4 0.0, 0.0 3.8 0.0, 0.0 4.2 0.0 ] scale [ 1.5 1.5, 1.95 1.95, 2.0 2.0, 1.95 1.95 1.8 1.8, 1.5 1.5 1.2 1.2, 1.05 1.05, 1.0 1.0, 1.05 1.05, 1.3 1.3, ] } }, # Cria um cubo e aplica uma imagem com tulipas, # simulando as flores do vaso Transform { translation 0.0 6.8 0.0 children Shape { appearance Appearance { #Textura com transparencia texture DEF flowers ImageTexture { url "imtulipas.jpg" } } geometry Box{ size 5.0 5.0 5.0 } } } #Cria mais um cubo com as flores Transform { translation 0.0 7.8 0.0 rotation 0.0 1.0 0.0 -0.75 children Shape { appearance Appearance { texture USE flowers } geometry Box { size 3.0 5.0 3.0 } } } ] }
68
2.9.3 MovieTexture
O campo texture MovieTexture especifica a localizao de um filme que ser utilizado para texturizar a geometria. O filme deve estar no formato MPEG e pode ser repetido verticalmente ou horizontalmente ao longo das faces da forma. Os campos presentes so: loop: especifica se o filme deve ser apresentado repedidamente, sem parar. speed: especifica o quo rpido o filme deve ser apresentado; por exemplo, se a velocidade (speed) for 2 o filme ser duas vezes mais rpido; valores negativos fazem com que o filme seja apresentado de trs para a frente. startTime: especifica o tempo de incio da apresentao do filme em segundos; o valor deste campo o nmero de segundos desde a meianoite de 1 de janeiro de 1970. stopTime: especifica o tempo do final da apresentao do filme em segundos; o valor deste campo o nmero de segundos desde a meianoite de 1 de janeiro de 1970. url: especifica a localizao do filme; podem ser definidas mltiplas localizaes e o browser ir procurar pelos dados em ordem decrescente de endereos. repeatS: TRUE indica que o filme deve ser repetido verticalmente. repeatT: TRUE indica que o filme deve ser repetido horizontalmente.
Em VRML o mundo foi criado meia-noite de 1 de janeiro de 1970. Alguns dizem que a razo da escolha desta data foi para coincidir com o nascimento do sistema operacional UNIX. Se o loop marcado como TRUE e o startTime for maior ou igual a stopTime, o filme vai ser repetido para sempre. Entretanto, se o startTime for menor que o stopTime, o filme vai parar assim que o stopTime for alcanado. Se o startTime for maior ou igual a stopTime, ento o filme vai comear to logo o startTime for alcanado. Note que alguns browsers somente comeam o filme se o startTime for maior que o stopTime.
69 Todos os campos so opcionais e valores default so aplicados quando os campos no so referenciados. Se o filme no for localizado, nenhuma textura aplicada. Sintaxe: appearance Appearance { texture MovieTexture { loop TRUE/FALSE speed startTime stopTime url [ ] repeatS TRUE/FALSE repeatT TRUE/FALSE } } Exemplo:
#VRML V2.0 utf8 #MovieTexture.wrl #Usa o vaso com flores criado em ImageTexture.wrl, #mas no lugar das flores apresenta um filme #Definicao do ponto de vista inicial Viewpoint { position 0.0 5.0 18.0 description "Vista inicial" } Group { children [ Shape { appearance Appearance { texture ImageTexture { url "imporsol.jpg" } }
70
geometry Extrusion { creaseAngle 1.57 endCap FALSE solid FALSE crossSection [ 1.00 0.00, 0.92 -0.38, 0.71 -0.71, 0.38 -0.92, 0.00 -1.00, -0.38 -0.92, -0.71 -0.71, -0.92 -0.38, -1.00 -0.00, -0.92 0.38, -0.71 0.71, -0.38 0.92, 0.00 1.00, 0.38 0.92, 0.71 0.71, 0.92 0.38, 1.00 0.00 ] spine [ 0.0 0.0 0.0, 0.0 0.6 0.0, 0.0 1.0 0.0, 0.0 1.4 0.0, 0.0 1.8 0.0, 0.0 2.2 0.0, 0.0 2.6 0.0, 0.0 3.0 0.0, 0.0 3.4 0.0, 0.0 3.8 0.0, 0.0 4.2 0.0 ] scale [ 1.5 1.5, 1.95 1.95, 2.0 2.0, 1.95 1.95 1.8 1.8, 1.5 1.5 1.2 1.2, 1.05 1.05, 1.0 1.0, 1.05 1.05, 1.3 1.3, ] } }, #Cria um cubo em cima do vaso e passa o filme em suas faces Transform { translation 0.0 6.8 0.0 children Shape { appearance Appearance { texture MovieTexture { url "usuario.mpeg" loop TRUE speed 1 } } geometry Box{ size 5.0 5.0 5.0 } } } ] }
71
3 Consideraes Finais
Nesse curso pde-se ver como a Realidade Virtual vem interferindo na vida das pessoas, seja na sua forma mais tradicional, seja atravs de tecnologias relacionadas, como a Realidade Aumentada. A criao de novas interfaces
homem-mquina fundamental e hoje muitas pessoas se beneficiam de suas aplicaes. Conforme estudado no curso, a Realidade virtual uma tecnologia que ser utilizada cada vez mais num futuro prximo. Seu potencial vasto e tende a ser utilizada em vrias reas com muito mais frequncia do que a encontrada na atualidade. Porm, uma desvantagem dessa tecnologia ainda o seu custo, uma vez que necessria a utilizao de diversos aparatos de hardware para permitir uma interao mais intensa e realista com os mundos virtuais, como capacetes, luvas, controladores, roupas especiais, dentre outros. Outro importante tpico abordado no curso foi a linguagem VRML, que a linguagem de programao mais acessvel para a criao de objetos e cenrios virtuais em 3D na internet. A linguagem VRML, conforme exposto, no proprietria, sendo uma ferramenta de fcil aprendizado e muito utilizada para a criao de interfaces de Realidade Virtual. Com a crescente demanda de usurios interessados em criar ou mesmo utilizar ambientes de RV, outras linguagens de programao passaram a incorporar cdigos VRML em suas bibliotecas, fazendo com que ampliassem as suas reas de aplicao, como anlise financeira, entretenimento, educao, entre outras. Como se pde ver so diversas as tecnologias de RV que proporcionam ao usurio sensaes e emoes que talvez no mundo real no se pudesse ter. A tecnologia de RV no se resume apenas nas apresentadas nessa apostila, pois pesquisadores continuam sempre em busca de melhorias e acredita-se que a RV poder confundir a mente humana entre o que realmente real e o que virtual. Assim, caro estudante, continue suas pesquisas nesta rea e acompanhe sempre as novidades tecnolgicas ligadas RV!
72
4 Bibliografia Consultada
[1] PIRES, Felipe; et al. Realidade Virtual no Cinema. Disponvel em: http://www.ruigaspar.com/wp-content/uploads/2010/02/ realidadevirtualnocinema_filipepires_joc3a3ogil_ruigaspar1.pdf. em: 21 nov. 2010. Acesso
[2]
STRICKLAND, Jonathan. Histria da Realidade Virtual. Disponvel em: http://eletronicos.hsw.uol.com.br/realidade-virtual8.htm. Acesso em: 21 nov. 2010.
[3]
NETTO, Antonio V.; MACHADO, Liliane S.; OLIVEIRA, Maria Cristina F. Realidade Virtual (Fundamentos e Aplicaes). Santa Catarina: Editora Visual Books, 2002.
[4]
Mundos Virtuais:Ferramentas com vantagens reais. Disponvel em: https://www.cpqd.com.br/highlights/341-mundos-virtuais-ferramenta-comvantagens-reais.html. Acesso em: 10 out. 2010.
[5]
HEEKS, Richard. Dinheiro Real de Mundos Virtuais. Scientific American Brasil Ed. 93 Fevereiro, 2010. Disponvel em: http://www2.uol.com.br/sciam/reportagens/dinheiro_real_de_mundos_virtua is.html. Acesso em: 13 out. 2010.
[6]
BASTOS, Rodrigo. Os benefcios de trabalhar no mundo virtual 3D. Bigsense. Disponvel em: http://www.bigsense.com.br/os-beneficios-de-trabalhar-no-mundo-virtual3d/. Acesso em: 21 set. 2010.
[7]
Iniciando no VRML: Introduo ao VRML. Disponvel em: http://www.htmlstaff.org/ver.php?id=3155. Acesso em: 11 out. 2010.
73 [8] Criao de mundos virtuais por meio da Linguagem VRML 2.0. Disponvel em: http://www.arte.unb.br/lis/fapfim/vrml.html. Acesso em: 11 out. 2010.
[9]
Casulo de realidade virtual estimulam os cinco sentidos do usurio. G1 So Paulo 06 mar. 2009. Disponvel em:
[10]
Realidade Virtual coloca mente masculina em corpo de mulher. Terra So Paulo 15 mai. 2010. Disponvel em:
[11]
Realidade Virtual para arquitetura e planejamento urbano. Inovao Tecnolgica 12 mai. 2004. Disponvel em:
[12]
Embraer usa simulador de vo de realidade virtual com tecnologia GIS e imagens de satlite. MUNDOGEO 04 jan. 2006. Disponvel em: http://www.mundogeo.com.br/noticias-diarias.php?id_noticia=5306. Acesso em: 02 out. 2010.
[13]
TODESCHINI, Raquel T.; PEREIRA, Alice Terezinha C.; KEJELIN, Cezar R. Jogos e Entretenimentos em realidade virtual: Perspectivas e Possibilidades. Disponvel em:
74 [14] CASTRO, Elisa C.; MAGALHES, Lo P. Computao Grfica e Multimdia I. Disponvel em: Acesso
[15]
TRAC. Black Trac. Disponvel em: http://blackhex.no-ip.org/doxygen/Coin/classSoVRMLCone.html Acesso em: 8 out. 2010.
[16]
THE WEB ENVIRONMENT, Virtual Reality in Architecture. Disponvel em: http://www-personal.umich.edu/~emdanat/Tutorials/vrml97/Shape.html Acesso em: 22 out. 2010.
[17]
CAREY, Rikk; BELL, Gavin. The Annotated VRML 97 Reference. Disponvel em:
[18]
SOFRANKO, Juraj. Virtual Reality Modeling Language version 2 Disponvel em: http://www.cescg.org/CESCG98/JSofranko/index.html Acesso em: 24 out. 2010.
[19]
Curtin
Department
of
Computing.
Disponvel
em:
[20]
DAVIDSON,
Jim.
Virtual
Environment.
Disponvel
em:
[21]
WEBMASTER. OpenWorlds Optimizer Node Support. Disponvel em: http://www.openworlds.com/doc/vrml_nodes/opt_support.html Acesso em: 03 Nov. 2010.
75
[22]
Virtual Reality Modeling Language. Disponvel em: http://users.swing.be/sw246620/home%20%20files/Vrml/annexe1.html. Acesso em: 06 Nov. 2010.
[23]
Vapour Technology. Disponvel em: http://pesona.mmu.edu.my/~ypwong/virtualreality/vrml97_tutorial_floppy/es/ nodes.html. Acesso em: 06 Nov. 2010.
[24]
5DT Virtual Reality Information Virtual Reality to the Real World 5DT 18 jul. 2007. Disponivel em: http://www.5dt.com/virtualinfo.html Acesso em: 08 nov. 2010.
[25]
STRICKLAND, Jonathan. Histria da Realidade Virtual. Disponvel em: http://eletronicos.hsw.uol.com.br/realidade-virtual9.htm. Acesso em: 30 set. 2010.
[26]
LIMA, Waldir, GONALVES Iris, JULIO Gabriel. Realidade Virtual em Ambientes Virtuais Interativos Disponivel em:
[27]
Prof. Dr. Kirner, Claudio, Sistemas de Realidade Virtual. Disponivel em:http://www2.dc.ufscar.br/~grv/tutrv/tutrv.htm Acesso em: 30 set, 2010.
[28] JAMSA, K, SCHMAUDER, P., YEE, N. VRML biblioteca do programador. Makron Books, 1999. [29] AMES, A. L., NADEAU, D. R., MORELAND, J. L. VRML 2.0 sourcebook. John Wiley & Sons, Inc., 1997. [30] HARTMAN, J., WERNECKE, J. The VRML 2.0 handbook - building moving worlds on the web. Addison-Wesley Publishing Company, 1996.
76 [31] MARRIN, C., CAMPBELL, B. Teach yourself VRML 2 in 21 days, Sams.net Publishing, 1997. [32] PESCE, M. VRML browsing and building cyberspace. New Riders Publishing, 1995. [33] LEA, R., MATSUDA, K., MIYASHITA, K. Java for 3D and VRML worlds. New Riders Publishing, 1996.
O aluno tambm pode consultar estes links para continuar seus estudos: http://www.terravista.pt/enseada/1527/vrml_ok.htm
http://www.di.ufpe.br/~if291/documentos/vrmlsibgrapi97/toc.htm
http://mirror.impa.br/sibgrapi97/cursos/vrml/cap01/toc.htm
http://www.lighthouse3d.com/vrml/tutorial/index.shtml?intro
http://www.inf.pucrs.br/~pinho/CG/Aulas/Vrml/Vrml2/vrml2Pinho.htm