|
|
m e n u |
início > realidade virtual > vrml > transformações | ||||||||||||||||||||||||||||||||||||||
realidade virtual conceitos básicos dispositivos vrml introdução primitivas |
Transformações Neste capítulo veremos como deslocar as nossas primitivas gráficas (já coloridas ou forradas com texturas) pelo espaço virtual. Além de posicioná-las, aprenderemos a aplicar rotações e modificações de escala nelas. Antes disso, veremos como agrupar os nossos objetos. A técnica de agrupamento serve para tratar primitivas (ou grupos de primitivas) como se fossem um único objeto e, desta maneira, poupar a aplicação de transformações. Para facilitar ainda mais a construção do nosso mundo virtual, veremos neste capítulo como definir objetos e, a partir desta definição, como reaproveitá-los para poupar-nos a digitação repetitiva de código já existente. Agrupamento Objetos quaisquer em mundos virtuais podem ser agrupados. Exemplos de objetos agrupáveis são as primitivas já conhecidas (caixa, esfera, cilindro, cone e texto), grupos e outros objetos que aparecerão num futuro próximo. O nó que permite realizar o agrupamento chama-se GROUP, e um nó deste tipo pode conter outros nós do tipo GROUP. Os elementos que formam um GROUP chamam-se CHILDREN. Um exemplo do uso da sintaxe do agrupamento é dado a seguir, sem ilustração pois não apresenta nenhuma novidade na hora de ser visualizado. A diferença entre agrupar e não fazê-lo reside na possibilidade de tratar os objetos agrupados como formando uma única entidade, fato que ficará ainda mais explícito com o uso do comando DEF.
Definição e reaproveitamento Imaginemos a situação de havermos construído um objeto, e de querermos repeti-lo em outro lugar do mundo. Já foi feito isto na listagem dos eixos mostrada a seguir, e com bastante sucesso. As sintaxes para definir um objeto e reaproveitá-lo são muito simples:
onde o nome do objeto é escolhido livremente desde que não seja um comando VRML, e o objeto é qualquer componente VRML válida. Para referenciar o objeto assim batizado, basta dar o comando:
Transformações Geométricas Tal como já foi mencionado, para completarmos as nossas possibilidades criativas básicas em VRML precisamos deslocar, modificar a escala e rotacionar os objetos previamente definidos. De posse deste conhecimento poderemos construir o mundo idealizado. A linguagem VRML permite realizar as chamadas transformações geométricas, que dão uma enorme flexibilidade e aumentam notadamente o poder criativo do construtor. Essas transformações, além de serem muito expressivas, possuem propriedades matemáticas muito interessantes, que o leitor pode consultar na página de Computação Gráfica. Para trabalharmos a vontade, utilizaremos um guia (em VRML, é claro) para visualizar o sistema de coordenadas vigente. Esse guia deverá ficar armazenado localmente onde o leitor ou leitora estiver trabalhando, para poder utilizá-lo. Alguns comandos poderão parecer obscuros, mas serão vistos ainda neste capítulo.
Para incluir qualquer arquivo VRML dentro de um outro arquivo, basta utilizar o comando inline, seguido da URL do arquivo. No resto do capítulo utilizaremos intensamente cones para ilustrar o efeito das transformações geométricas e, para facilitar a tarefa, sugerimos seja criado um mundo com os eixos coordenados e com dois cones de cores semitransparentes distintas. Um deles sofrerá e ilustrará as transformações. Translações As translações são especificadas para um conjunto de objetos através das três coordenadas que as definem. O conjunto de objetos a sofrerem a translação são agrupados pelo comando delimitador children[ ], que também aparece no nó Group.
Antes de dar prosseguimento o leitor ou leitora deverá familiarizar-se com a transformação de translação aplicando-a a outros objetos e com outros parámetros. Sugere-se a construção de uma barraca de coco (um cone apoiado num cilindro) e de um arco formado por dois cilindros que sustentam uma caixa.
Aplicação dos conhecimentos Vamos construir um corredor de arcos aplicando os conhecimentos de translações, agrupamento e reaproveitamento de objetos. O exemplo mostrado aqui é inspirado no conteúdo do livro de Ames et al. O primeiro passo consiste em criar o arco, que poderá ser o resultado de dois cilindros (as colunas) e a laje, que é uma caixa de tamanho conveniente na posição adequada.
A passagem de colunas será construída repetindo-as nas posições desejadas.
Fica por conta do/a leitor/a a construção de um corredor com mais colunas. Escalonamentos As transformações de escala alteram as relações entre as coordenadas originais dos objetos. Devem ser especificados os três fatores correspondentes a cada um dos eixos coordenados. A sintaxe desta transformação é completamente análoga à das translações.
Veja que o fator de escala pode ser qualquer número real, incluindo valores negativos. Deixa-se por conta do leitor ou leitora a exploração do poder desta transformação; em particular sugere-se verificar o que acontece quando o valor absoluto dos fatores de escala é "1", mas os sinais mudam. Também é importante verificar o efeito de zerar um ou mais dos fatores de escala da transformação. Rotações Para especificar a rotação de um ou mais objetos deve-se forncer não apenas o ângulo, mas também o eixo ao redor do qual a rotação é realizada. Para especificar o eixo precisamos de dois pontos. Em VRML um dos pontos que definem o eixo de rotação é a origem, o outro deve ser fornecido pela especificação de três coordenadas. Ao redor desta reta assim especificada será realizada a rotação pelos graus dado em radianos (90o equivalem a Pi/2 radianos, isto é, aproximadamente a 1.57). A sintaxe desta transformação é análoga à das outras duas, bastando especificar rotation seguido de quatro valores: três para o eixo e um para o ângulo em radianos. As rotações mais comuns são aquelas realizadas ao redor dos eixos do sistema cartesiano, e para facilitar um pouco as coisas são fornecidos a seguir os valores que as especificam.
É fundamental que o leitor ou leitora apliquem uma boa variedade de rotações a diferentes objetos.
Nesta altura o/a leitor/a já poderá construir uma passagem de arcos em várias direções. |
||||||||||||||||||||||||||||||||||||||