Unidade 2: Introdução à modelagem 3D utilizando a linguagem VRML

Documentos relacionados
Sistemas Multimídia Aula 3 VRML

Curso Básico. Profa. Dra. Elisamara de Oliveira

Material II-Bimestre. Prof. Responsável Wagner Santos C. de Jesus

Virtual Reality Modelling Language

VRML - Estrutura Hierárquica da Cena

Protótipo de um mundo virtual distribuído utilizando DIS-Java-VRML. Edison Weise Prof. Dalton dos Reis

VRML Virtual Reality Modeling Language

Autodesk 3ds Max - Primitivas

Licenciatura em Computação Computação Gráfica X3D - Aula 1 (atualizada em 26fev2016)

Computação Gráfica. Prof. André Yoshimi Kusumoto

Computação Gráfica e Áreas Correlatas

Computação Gráfica e Áreas Correlatas

CAPÍTULO 8. Desenhos, imagens e modelos 3D editores de imagens, CADs e modeladores 3D

Computação Gráfica. Exame de Época Especial de. Nº Nome:

1º Teste Computação Gráfica

4 Implementação do Gerador de arquivos VRML - VRMLGer

Aplicação de Tags em Objetos de Sistemas de Visualização em Tempo Real

1º Teste de Computação Gráfica

DIRETORIA DE PESQUISA E PÓS-GRADUAÇÃO PROJETO: TECNOLOGIAS DE INFORMAÇÃO E COMUNICAÇÃO NO PROCESSO DE ENSINO E APRENDIZAGEM DE MATEMÁTICA

1º Teste de Computação Gráfica 3º Ano

Aula 4 TECNOLOGIA EM JOGOS DIGITAIS PROGRAMACAO E INTEGRACAO DE JOGOS I. Marcelo Henrique dos Santos

PROJETO TRANSFORMAÇÕES PONTUAIS

APOSTILA 3D (notas de aula)

Computação Gráfica e Áreas Correlatas

Exemplo 1: Identificar um Elemento no Visualizador 3D

POV-Ray. André Tavares da Silva.

A terceira dimensão. Modelagem tridimensional Elaboração tridimensional Realidade virtual

SketchUp: Tutorial I INTERFACE. Criado em: 16 de Julho de 2017, por Pedro Rodrigues

Abstract Node Types. X3D Profiles. X3DChildNode. X3DChildNode X3DBoundedObject X3DGroupingNode X3DInfoNode X3DUrlObject (Interface)

Computação Gráfica - 09

Nesse texto abordamos a construção de polígonos com a utilização do mouse e por meio da digitação de comandos na Entrada.

ESPECIFICAÇÃO DE SOFTWARE

Guia do professor - Fábrica de Cubos e Mosaicos

Projeto de pesquisa realizado no Grupo de Matemática Aplicada e Computacional da UNIJUÍ 2

Figura 23 - Modelo 1 utilizado nos testes de Geração

Explorar Restrições Esboço

5 Estendendo as regiões da NCL 3.0

1º Teste de Computação Gráfica

Projeto de Mestrado desenvolvido pela aluna Eveline Batista Rodrigues, no Departamento de Engenharia Elétrica da Universidade de São Paulo São

Computação Gráfica - 09

DESENVOLVIMENTO DE UM SOFTWARE DE GERAÇÃO E VISUALIZAÇÃO DE NANOESTRUTURAS

é usado para fechar a janela do são telas que podem conter textos, imagens, vídeos, sons e efeitos visuais.

4 IMPLEMENTAÇÃO E APLICAÇÕES DO PROGRAMA DE COMPUTADOR

RPU e RTE. RPU em planta. Representação

Programação Gráfica Parte 3 Versão em Java 2006 PUCPR Tutoria de Jogos 1º Ano

Tutorial sobre o uso da ferramenta de autoria A Ferramenta de Autoria - Célula

Programação e Computação para Arquitectura 2012/2013

Criar um recurso para QIM com ActivInspire - Studio

Eixos de locação. Alteração de cortes. Corte geral do edifício

Computação Gráfica. Engenharia de Computação. CEFET/RJ campus Petrópolis. Prof. Luis Retondaro. Aula 6. Projeções

1 Modelamento Avançado

GUIA DE INÍCIO RÁPIDO

CSS Cascading Style Sheets (Folhas de Estilo em Cascata)

COMPUTAÇÃO GRÁFICA II E III. Posicionamento e edição de módulos

Resumo. Computação Gráfica: Uma Proposta de Plano Pedagógico. Áreas Correlatas. Definição. Uma Visão Integrada da C.G.

Figura 1 - Uma possível forma de acesso à informação compartilhada.

Aula /2 Sistemas de coordenadas Window x Viewport

Introdução Geral a Computação Gráfica. Universidade Católica de Pelotas Curso de Engenharia da Computação Disciplina de Computação Gráfica

2 - Como inserir a esfera que corresponde ao globo ocular.

Universidade Federal do Rio de Janeiro Faculdade de Arquitetura e Urbanismo

Parte I. Tela inicial

Aula 5 TECNOLOGIA EM JOGOS DIGITAIS PROGRAMACAO E INTEGRACAO DE JOGOS I. Marcelo Henrique dos Santos

Interatividade. Limitado Reativa Coativa. Alargado Coativa Proativa

CEDERJ - CENTRO DE EDUCAÇÃO SUPERIOR A DISTÂNCIA DO ESTADO DO RIO DE JANEIRO

PROGRAMAÇÃO PARA INTERNET RICA INTRODUÇÃO AO ACTIONSCRIPT 3. Prof. Dr. Daniel Caetano

AULA: BrOffice Impress segunda parte

AULA 2 Planos Vistas e Temas

Modelador Estrutural. Como funciona

Ferramentas Web, Web 2.0 e Software Livre em EVT

Material original criado por: Vitor de Carvalho Melo Lopes e Jucimar de Souza Lima Junior

Módulo I. Desejamos boa sorte e bom estudo! Em caso de dúvidas, contate-nos pelo site Atenciosamente Equipe Cursos 24 Horas

Computação Gráfica. Engenharia de Computação. CEFET/RJ campus Petrópolis. Prof. Luis Retondaro. Aula 3. Transformações Geométricas

Introdução a Tecnologia da Informação

Navegação nas vistascapítulo1:

Os pixels ou pontos podem ser endereçados por dois inteiros, o número horizontal do pixel (dcx) e o número vertical do pixel (dcy).

Sumário. Introdução Câmera sintética Window-to-Viewport Exercício. 29-May-13 Leandro Tonietto!2

Exercício 2 - modelagem básica de peça.

MARCEL RODRIGO INOWE DESENVOLVIMENTO DE UM TRADUTOR DO ALFABETO PORTUGUÊS PARA DATILOLOGIA EM REALIDADE VIRTUAL.

UMC Engenharia Mecânica / Automação Industrial / Gestão da Produção Industrial Desenho I Prof.: Jorge Luis Bazan.

Ferramentas Web, Web 2.0 e Software Livre em EVT

Manual de Instruções NSS Editor MANUAL DE INSTRUÇÕES. Editor de bases de dados NSS EDITOR

Obedecendo essa estrutura definida para a linguagem, podemos dividir a sua definição em duas partes: os elementos da linguagem e as suas regras.

Elementos Externos 3D

Janela Principal. No Logic Pro, chamamos esta janela de Main Window, ou Janela Principal.

PROGRAMAÇÃO PARA INTERNET RICA INTRODUÇÃO AO ACTIONSCRIPT 3. Prof. Dr. Daniel Caetano

INTRODUÇÃO A PROGRAMAÇÃO PARA WEB

Orientações Iniciais.

O que é Microsoft Word?

Capítulo VI Carga Móvel

O Micromundo Transtaruga

Geometria Descritiva Básica (Versão preliminar)

Flash CS5 Flash CS5 Flash CS5

UNIVERSIDADE FEDERAL DO RIO GRANDE DO SUL INSTITUTO DE MATEMÁTICA PROGRAMA DE PÓS-GRADUAÇÃO EM ENSINO DE MATEMÁTICA

Figura 1.1: Um reservatório natural de petróleo típico: dificuldade para investigar áreas de interesse.

3. Conhecimentos Básicos

Conteúdo. 1. Propósito 3 2. Conceitos Inserindo Dimensões Eixos Dimensões Pontos de Inserção 9

METODOLOGIA DE PROJETO

Programação para Internet. Professor Pedro Ramires 1º Informática

Transformações 2D. Prof. Márcio Bueno Fonte: Material do Prof. Robson Pequeno de Sousa e do Prof.

Informática I. Aula 3. Aula 3-03/09/2007 1

Transcrição:

Unidade 2: Introdução à modelagem 3D utilizando a linguagem VRML Saudação: Olá Aluno! Esta unidade terá a finalidade de introduzir os principais aspectos sobre modelagem 3D utilizando a linguagem VRML. Destacaremos uma breve descrição sobre a VRML, como a linguagem é estruturada e os conceitos iniciais sobre modelagem 3D. Bom estudo! Prof. Daniel.

O que veremos: 1. Introdução 2. A linguagem VRML 2.1. Apresentação do plug-in Cortona 3D Viewer 2.2. Estrutura dos arquivos VRML 2.0 3. Nodes 3.1. Nós-filhos 3.1.1 Nó Shape 3.2. Primitivas gráficas 3D em VRML (Nodes de desenho) 3.2.1. Cubo 3.2.2. Esfera 3.2.3. Cilindro 3.2.4. Cone 3.3. Aparência 3.4. Nós de agrupamento 3.4.1. Nó Transform 3.4.1.1. Translação 3.4.1.2. Escala 3.4.1.3. Rotação 4. Modelagem de objetos mais complexos a partir das primitivas gráficas 5. Reaproveitamento de objetos (comandos DEF e USE)

1 Introdução Modelagem tridimensional (ou modelagem 3D) é uma área da computação gráfica que tem como objetivo a geração de entidades em três dimensões, geração de cena estática, imagem em movimento (animação) com ou sem interatividade. É basicamente a criação de formas, objetos, personagens, cenários. Para elaboração são utilizadas ferramentas computacionais avançadas e direcionadas para este tipo de tarefa. Existem diversos profissionais habilitados na área. A modelagem em 3 dimensões conta com uma enorme variedade de ferramentas genéricas, permitindo uma comunicação mais fácil entre dois programas diferentes e usuários iguais. Todas elas são realizadas através da criação de uma malha complexa de segmentos que dão forma ao objeto. Antes de iniciarmos o estudo sobre os princípios para a modelagem 3D, é necessário conhecer um pouco sobre a linguagem que iremos utilizar. A linguagem VRML foi escolhida por ser extremamente simples lidar com ela. Isto deve-se ao fato de que não é preciso saber nenhuma outra linguagem de programação como pré-requisito. Inicialmente, serão apresentados conceitos iniciais sobre a estruturação da linguagem e, em seguida, os princípios sobre a modelagem 3D em VRML. 2 A linguagem VRML A linguagem VRML (Virtual Reality Modeling Language) surgiu em 1994 a partir da idéia de se levar a realidade virtual para a Internet. Criada pela Silicon Graphics, a linguagem é interpretada por qualquer browser (navegador para internet, como o Internet Explorer) que suporte a visualização de mundos virtuais ou que contenham um plug-in para tal finalidade. A Silicon Graphics é conhecida do grande público especialmente por dezenas de filmes produzidos por Steven Spielberg, George Lucas, e Estúdios Walt Disney, onde os efeitos especiais produzidos em sistemas Silicon Graphics tornaram-se verdadeiros personagens. Essa é, no entanto, apenas uma das faces desta empresa, que é líder mundial em computação gráfica e supercomputação, ao lado de sua subsidiária Cray Research. A Silicon Graphics é um dos principais fornecedores de workstations (estações de trabalho), servidores e supercomputadores, com aplicações nas mais diferentes áreas como manufatura, bancos de dados, geociências, telecomunicações, Web/Intranet, medicina, simulação visual, realidade virtual e, obviamente, entretenimento, em que se encaixam as áreas de TV/filme/animação.

A linguagem VRML já está em sua segunda versão. O VRML 1.0 permitia apenas a navegação pelos mundos, com pouca interação do usuário com o ambiente e cenas tridimensionais estáticas. A partir da versão 2.0, a linguagem tornou-se mais poderosa em relação a recursos de animação por meior de scripts, determinação de eventos relacionados aos mais variados fatores (tempo, ações do usuário, etc.), entre outros. Na Figura 1 é mostrado um exemplo de um ambiente criado utilizando recursos da linguagem. Figura 1: Ambiente criado utilizando recursos da linguagem VRML Antes de introduzir os conceitos iniciais sobre a linguagem, vamos conhecer os principais recursos que o plugin (utilizado para interpretar os códigos em VRML) proporciona. 2.1 Apresentação do plug-in Cortona 3D Viewer Um plug-in é um programa adicional que o navegador (browser) precisa para abrir certos tipos de arquivos. No caso de arquivos VRML, o browser irá utilizar o Cortona 3D Viewer, da empresa Parallel Graphics, que é um visualizador dos mundos virtuais criados em VRML. Ao abrir um arquivo VRML em um navegador, que possua o plug-in já instalado no computador, aparecerá um painel de controle que permite a manipulação dos objetos bem como a navegação e interação do usuário com o mundo virtual. O Cortona 3D possui duas barras de ferramenta, aos quais são descritas a seguir:

- Vertical: contém botões utilizados para especificar o tipo de navegação no ambiente 3D; - Horizontal: contém botões onde são pré-definidas ações com a finalidade o posicionamento no ambiente 3D. Nas figuras 2 e 3 estão descritos as funções de cada botão que compõe os painéis. Goto: serve para mover a câmera diretamente para o objeto selecionado. Align: serve para alinhar a posição horizontal da câmera em relação à cena. ViewPoints: serve para configurar qual ponto de vista (posição da câmera)será utilizado em uma cena. Restore: retorna automaticamente para a posição original no qual a cena foi criada. Fit: torna a cena completamente visível na janela de visualização. Figura 2: Controles da barra horizontal do plugin Cortona 3D Viewer Fly: utilizado para navegar pela cena na janela de visualização. Walk: utilizado para movimentar o objeto na janela de visualização. Study: utilizado para manipular o objeto e visualizá-lo por vários ângulos. Plan, Pan, Turn e Roll: são utilizados em conjunto com os botões Walk, Fly e Study e possibilita diversos efeitos de navegação na cena. Figura 3: Controles da barra vertical do plugin Cortona 3D Viewer

2.2 Estrutura dos arquivos VRML 2.0 Tudo que se precisa para escrever um código VRML é um editor de textos. Uma vez editados, os arquivos são gravados em formato ASCII com a extensão.wrl. Na verdade, a linguagem apenas descreve como os ambientes tridimensionais serão representados pelo browser. O arquivo não precisa ser compilado e não é executado por ninguém. Pode-se, por exemplo, criar um cubo e gravá-lo em um arquivo chamado cubo.wrl. O código VRML para este cubo descreverá as características do ambiente, como coordenadas, luz, 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. primeira linha: Os arquivos-fonte em VRML possuem obrigatoriamente o seguinte cabeçalho na #VRML V2.0 utf8 Este cabeçalho indica que o programa está escrito na versão 2.0 da linguagem VRML e utf8, que é um padrão mundial para especificação de arquivos-texto, aceitando caracteres de todos os tipos (desde caracteres japoneses até caracteres acentuados em português, espanhol, etc.). A VRML usa o sistema cartesiano 3D. A seqüência dos eixos é X,Y,Z e a unidade de medida para distâncias é metros e para ângulos, radianos. A medida para distância não é definida formalmente, mas adotou-se o metro como unidade para que mundos diferentes feitos por usuários diferentes possam ser eventualmente unidos em um só mundo. O sistema de coordenadas tem as seguintes características: 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. Os eixos X, Y e Z formam o sistema de coordenadas 3D, cuja origem consiste na coordenada espacial (0.0, 0.0, 0.0). Agora, uma "caneta virtual" pode ser movida para esquerda e para direita, para cima e para baixo e para frente e para trás. Para facilmente identificar como o eixo Z é posicionado em relação a X e Y pode-se utilizar a regra da mão direita para os eixos 3D. Nesta regra a mão direita deve ficar reta com o indicador apontando para direção positiva de Y (para cima), o polegar apontando para a direção positiva de X (para o lado) e com o dedo do meio apontando para a direção positiva de Z (para frente). A figura 4 mostra o "funcionamento" da regra da mão direita.

Figura 4: Regra da mão direita para o eixo 3D 3 Nodes O paradigma para a criação de mundos VRML é baseado em conceitos de nós (ou node em inglês), que são conjuntos de abstrações de objetos e de certas entidades do mundo real, tais como formas geométricas, luz e som. Um nó Shape, por exemplo, contém um nó (geometry) que indica a forma do objeto e outro (appearance) que controla a sua aparência. Estes nós podem, por sua vez, conter outros, e assim por diante. Além dos nós que têm um efeito visual óbvio, em VRML estão definidos uma série de nós que provêm alguns recursos especiais, como ligações com outros arquivos hyperlinking), a inclusão de objetos definidos em outros arquivos, e a detecção de colisões. Cada nó contém campos que mantêm os dados que o caracterizam como um elemento único dentro do arquivo. Um mundo VRML é um grafo hierárquico em forma de árvore (Figura 5). As hierarquias são criadas através de nós de agrupamento, os quais contêm um campo chamado children que engloba uma lista de nós filhos. Há vários tipos de nós em VRML. Figura 5: Grafo de uma cena em VRML

Os nós podem ser classificados em dois tipos principais: nós de agrupamento e nósfilhos. No entanto, podemos classificá-los de modo mais específico de acordo com a função que desempenham no arquivo. 3.1 Nós-filhos Inicialmente será apresentado o nó-filho que iremos utilizar para construir as primeiras cenas em VRML. Existem vários outros nós-filhos, os quais serão discutidos conforme a necessidade. 3.1.1 Node Shape Escrever um arquivo VRML com apenas um node não fará nada. O node especifica apenas a forma de um objeto e não sua aparência (cor). VRML tem também um node "Appearance", que será detalhado mais adiante, que define a cor. Quando se tem um geometry (forma) e Appearance (cor) já se tem o suficiente para definir um objeto VRML. Isso é feito com o node "Shape", e sua definição é essa: Shape { appearance (recebe o node Appearance) geometry (recebe os nodes Box, Cylinder, Cone, Sphere, IndexedFaceSet ou IndexedLineSet) O valor padrão é "NULL" para ambos os campos (appearance e geometry), que significa que contém NADA. Um campo geometry NULL não faz muito para nós, mas o appearance NULL faz o geometry aparecer branco puro. Mesmo assim, uma cena simples em VRML se parece com isto: Shape { geometry Cone {

3.2 Primitivas gráficas 3D em VRML (Nodes de desenho) As primitivas gráficas 3D são elementos básicos na Computação Gráfica. Por meio deles, outros objetos mais complexos podem ser construídos. Em VRML, as primitivas são criadas a partir dos nodes de desenho, os quais são definidos dentro do node geometry. Os nodes de desenho mais utilizados serão conhecidos nos tópicos a seguir. 3.2.1 Cubo Este node desenha um cubo ou paralelepípedo, dependendo das medidas atribuídas. Possui o campo size que receberá 3 valores (Figura 6): - x: largura do objeto; - y: altura do objeto; - z: profundidade do objeto. Figura 6: O cubo (Box) e suas dimensões

Box { size x y z (onde x, y e z receberão os valores de largura, altura e profundidade do cubo) 3.2.2 Esfera 7). Este node desenha uma esfera e seu único campo é o valor do raio da esfera (Figura Figura 7: A esfera (Sphere) e seu único parâmetro (raio) Sphere { radius (raio da esfera) 3.2.3 Cilindro Este node desenha um cilindro, com medidas de altura, raio e habilitação das faces do topo, base e lados (Figura 8).

Figura 8: O cilindro (Cylinder) e suas medidas Cylinder { bottom*(true ou FALSE, habilita a base) height (altura) radius (raio do cilindro) side* top* (TRUE ou FALSE, habilita o lado) (TRUE ou FALSE, habilita topo) *campos opcionais que podem ser omitidos. 3.2.4 Cone Este node desenha um cone, onde podem ser definidas as medidas de raio da base, altura (Figura 9). Além disso, há a possibilidade de habilitar a existência ou não de lado e base (faces). Se forem omitidas as medidas, será desenhado um cone com todas as medidas com valor 1 (esta propriedade também é válida para o node Cylinder, Box e Sphere).

Figura 9: O cone (Cone) e suas medidas Cone { bottomradius (raio da base) height (altura) side* (TRUE ou FALSE, habilita o lado) bottom* (TRUE ou FALSE, habilita a base) *campos opcionais que podem ser omitidos. 3.3 Aparência É possível controlar a aparência de qualquer shape especificando-se atributos do material a partir do qual ele é feito. Atributos do material incluem cor, quando ele brilha e qual é a cor do brilho, quando e o quanto ele é transparente, etc. Usando os nós Appearance e Material é possível controlar estes atributos. Como já visto, shapes VRML são definidos

através de dois campos, geometria (geometry) e aparência (appearance), onde o valor utilizado é o nó Appearance. Similarmente, os atributos deste nó são separados nos nós Material e de textura. A sintaxe destes nós, cujos campos são descritos neste capítulo, está apresentada a seguir. Appearance { material texture texturetransform NULL NULL NULL Material { ambientintensity 0.2 diffusecolor 0.8 0.8 0.8 emissivecolor 0.0 0.0 0.0 shininess 0.2 specularcolor 0.0 0.0 0.0 transparency 0.0 As cores em VRML são descritas de uma maneira mais precisa, combinando porções de vermelho, verde e azul (ou RGB). Cores RGB contêm três valores de ponto flutuante que variam de 0.0 (não possui a cor) a 1.0 (cor máxima). A cor refletida pelo objeto é especificada através do campo diffusecolor. Já o campo emissivecolor, por sua vez, possibilita a obtenção de efeitos de brilho, pois através dele é possível especificar-se a cor emitida pelo objeto. É importante salientar que através deste campo não é possível iluminar shapes próximas, ele só indica que o shape é mais brilhante do que o usual. O valor do campo transparency determina um fator de transparência entre 0.0 (opaco) e 1.0 (transparente), e ambientintensity determina como o material é afetado pelo nível de luz ambiente do "mundo" VRML. Quanto mais baixo for o valor, menor é o efeito da luz sobre o material. specularcolor especifica a cor da luz refletida pelo shape, isto é, a cor do brilho. O valor default para este campo é preto, que desabilita a reflexão especular. Finalmente, shininess controla a intensidade do brilho, sendo que 0.0 torna-o mais escuro. O efeito visual para este campo consiste na redução do tamanho da reflexão especular. É importante salientar que os navegadores VRML incluem automaticamente uma headlight que move-se de acordo com a posição do observador. Suponha que se queira construir um cubo com dimensão 2 na cor laranja (ver código). Esta cor pode ser obtida fazendo o seguinte cálculo: na paleta de cores do Windows, as cores são definidas com valores entre 0 e 255 (Figura 10). Basta tomar o valor de cada componente e dividir por 255. A cor pretendida possui os valores 255, 128 e 0,

respectivamente, para R, G e B. Fazendo os cálculos, teremos os valores 1 = 255/255, 0.501 = 128/255 e 0 = 0/255. Figura 10: Paleta de cores do Paint Brush com a cor laranja em destaque Definindo-se a cor e o objeto a ser criado, eis aqui o primeiro programa em VRML: #VRML V2.0 utf8 Shape { Appearance Appearance { material Material { diffusecolor 1 0.501 0 geometry Box{ size 2 2 2

3.4 Nodes de agrupamento Nós de agrupamento são usados para criar grafos de transformações gráficas hierárquicas. Eles têm um campo children que contém uma lista de nós que são os descendentes da transformação do grupo. Cada nó de agrupamento define um espaço de coordenadas para seus filhos, que é relativo ao espaço de coordenadas do seu nó-pai, ou seja, as transformações são cumulativas no sentido da descendência dos nós na hierarquia do grafo de cena. Inicialmente será apresentado o nó Transform, sendo que existem vários outros nós de agrupamento, os quais serão discutidos conforme a necessidade. 3.4.1 Node Transform O node Transform permite que transformações geométricas sejam aplicadas aos objetos criados em VRML. As transformações geométricas são operações matemáticas que permitem alterações uniformes de uma figura definida em um sistema de coordenadas, agindo sobre o conjunto de coordenadas dos pontos que compõe a figura. Em VRML, as transformações que iremos utilizar são as seguintes: translação, rotação e escala. 3.4.1.1 Translação Consiste na movimentação da figura pelo deslocamento de suas coordenadas. Tal movimentação pode ser realizada em x, y ou z, utilizando o comando translation. No exemplo abaixo é possível observar uma translação de 3 unidades em x e -2 unidades em y. Transform{ translation 3-2 0 chidren Shape{ appearance Appearance { material Material { diffusecolor 0 0 1 geometry Cone{ bottomradius 0.5

height 2 3.4.1.2 Escala Consiste na ampliação ou redução de uma figura, obtida pela multiplicação das coordenadas por fatores de escala. Tal operação pode ser realizada em x, y ou z, utilizando o comando scale. No exemplo abaixo é possível observar uma escala de 2 unidades em x e 4 unidades em y. Transform{ scale 3-2 0 chidren Shape{ appearance Appearance { material Material { diffusecolor 0 0 1 geometry Cone{ bottomradius 0.5 height 2 3.4.1.3 Rotação A partir de um ângulo de rotação, as coordenadas de uma figura têm o posicionamento alterado por meio de um deslocamento angular no sentido anti-horário. Tal operação pode ser realizada em x, y ou z, utilizando o comando rotation. Para configura qual ou quais eixos sofrerão a transformação, basta definir 1 para o eixo escolhido e 0 para o não escolhido. Isso deve ser feito nos 3 primeiros parâmetros do comando. Além de escolher o

eixo de rotação, deve-se definir quantos graus o objeto irá girar. Como já foi dito anteriormente, os graus são definidos em radianos. Vejamos um exemplo: PI equivale a 180 graus, então 45 graus equivale a PI/4. Sabendo que o valor de PI, em radianos, é aproximadamente 3.1415, então o valor de 45 graus em radianos é 0.78 (3.1415/4). Este valor é definido no 4º. parâmetro do comando. No exemplo abaixo é possível observar uma rotação em y de 45 graus. Transform{ rotation 0 1 0 0.78 chidren Shape{ appearance Appearance { material Material { diffusecolor 0 0 1 geometry Cone{ bottomradius 0.5 height 2 4 Modelagem de objetos mais complexos a partir das primitivas gráficas Em VRML, é possível se modelar objetos mais elaborados a partir das primitivas gráficas Box, Cone, Sphere e Cylinder. Uma característica que deve ser levada em conta é que o posicionamento dos objetos no mundo virtual é baseado no sistema de referência, que é determinado por um ponto 3D, conhecido como pivô. Todos os objetos têm um pivô. Você pode pensar sobre o pivô como o centro do objeto ou o centro de coordenadas locais. Na Figura 11 é mostrado que, quando criamos um objeto qualquer em VRML, o pivô é posicionado (por default) no seu centro.

pivô Figura 11: Localização do pivô em um Box Exemplo 1: Suponha que você queira colocar um Cilindro sobre um Cubo. Utilizando a informação de que o Cubo tem dimensão 2 e está localizado em (0,0,0), como posicionar o Cilindro se ele tem altura 3 e raio 0.5? Como o Cubo está na origem do sistema de coordenadas e tem duas unidades de altura, considera-se que há uma unidade para cima e uma para baixo do pivô, como mostrado na Figura 12. Além disso, a altura do Cilindro também deve ser levada em conta, sendo 1.5 unidades para cima e para baixo do pivô. 1,0 1,5 1,0 1,5 Figura 12: Determinação das unidades de distância com relação ao pivô

Portanto, para colocar o Cilindro sobre o Cubo é necessário considerar uma unidade acima do pivô do Cubo mais 1.5 unidades abaixo do pivô do Cilindro totalizando 2.5 unidades, conforme ilustrado pela Figura 13. Logo abaixo desta Figura é mostrado o código fonte. (0, 2.5, 0) 1,5 1,0 (0, 0, 0) Figura 13: Processo de modelagem considerando o pivô Código Fonte: #VRML V2.0 utf8 1,0 Transform { children Shape { appearance Appearance { material Material { diffusecolor 0 0 1 geometry Box{ size 2 2 2

Transform { translation 0 2.5 0 children Shape { appearance Appearance { material Material { diffusecolor 1 0 0 geometry Cylinder{ radius 0.5 height 3 5 Reaproveitamento de objetos (comandos DEF e USE) Estes comandos servem para o aproveitamento de um objeto criado anteriormente, reinserindo-o no mundo virtual numa posição diferente daquela em que o mesmo fora criado. Para isto, no objeto original escrevemos DEF <nome do objeto> antes de Shape para definirmos um objeto. Para replicá-lo em outro local, basta escrever USE <nome do objeto> e este será inserido na posição desejada, determinada pelo campo translation do node Transform. Isso poupa o trabalho de definir vários objetos idênticos a serem inseridos num mundo. No código abaixo é mostrado um exemplo do uso destes comandos.

Transform { translation -2-2 0 children DEF Pe_Mesa Shape { appearance Appearance { Aqui o Pe_Mesa é definido e inserido no cenário. material Material { diffusecolor 1 1 1 geometry Cylinder { radius 0.2 height 4 Transform { translation -2-2 -4 children USE Pe_Mesa Aqui o Pe_Mesa é chamado, sendo inserido em nova posição. Este comando também pode ser útil para outras finalidades. Por exemplo: se com os comandos acima você cria uma mesa, não seria interessante poder replicar a mesa inteira em outro local? Isto é possível usando o comando "Group", que agrupa vários objetos e permite que este grupo seja copiado para outro local do mundo virtual. Veja o exemplo: DEF Mesa Group { Aqui é definido um grupo de objetos que formam uma mesa. children [ #Mesa Transform { translation 0 0-2 children Shape { appearance Appearance {

material Material { diffusecolor 1 1 1 geometry Box { size 5 0.5 5 #Pes da mesa Transform { translation -2-2 0 children DEF Pe_Mesa Shape { appearance Appearance { material Material { diffusecolor 1 1 1 geometry Cylinder { radius 0.2 height 4 Transform { translation -2-2 -4 children USE Pe_Mesa Transform {

translation 2-2 -4 children USE Pe_Mesa Transform { ] translation 2-2 0 children USE Pe_Mesa Transform { translation 8 0 0 children USE Mesa E aqui o grupo de objetos é chamado, sendo que o mundo agora possui duas mesas.