Revista Perspectiva Amazônica Ano 3 N° 6 p.114-124 VRML e JAVASCRIPT: Integração de Linguagens para criar matrizes de objetos tridimensionais em tempo de execução Rafael Brelaz* RESUMO Este artigo tem como objetivo apresentar alguns resultados obtidos com a criação de matrizes de objetos tridimensionais por meio da integração entre as linguagens VRML e JavaScript. A necessidade de integração neste caso, ocorre devido a algumas limitações da VRML que são supridas com o uso de uma linguagem de programação para auxiliar na instanciação dinâmica de conjuntos de objetos. A criação de matrizes de elementos tridimensionais usando VRML e JavaScript oferece várias vantagens para desenvolvedores que precisam elaborar Ambientes Virtuais de forma mais ágil e evitar o dispêndio proveniente das translações manuais muitas vezes necessárias, porém, existem restrições relativas quanto as relações que são estabelecidas entre a complexidade e quantidade de objetos virtuais com a quantidade de memória volátil disponível para visualização do espaço virtual. ABSTRACT This article aims to present some results obtained by creating arrays of three-dimensional objects through integration between the languages VRML and JavaScript to be built in this case is due to some limitations of VRML that are fixed with the use of another language programming to assist in the dynamic instantiation of sets of objects. The creation of arrays of three-dimensional elements using VRML and JavaScript offers several advantages for developers who need to build virtual environments more agile and avoid the expense of translations from manuals often necessary, but there are restrictions on how the relationships are established between the complexity and amount of virtual objects with the amount of volatile memory available for viewing the virtual space. *Centro de Tecnologia da Informação e Comunicação (CTIC) – Universidade Federal do Oeste do Pará (UFOPA) Santarém – PA – Brasil [email protected], [email protected] 114 Revista Perspectiva Amazônica Introdução Ano33N° N°66 p.p.XXX XXX Ano A Virtual Reality Modeling Language (VRML) surgiu na década de 90 como a primeira definição normalizada do espaço tridimensional na Internet [Henriques e Sampaio, 2002]. Existem basicamente duas formas de interação que podem ser realizadas com a VRML: a utilização de captura dos eventos ocorridos na aplicação e a captura de eventos disparados em uma aplicação externa onde é necessária outra linguagem de programação [Sousa e Kniess, 2004]. Como a VRML não possui suporte nativo à estruturas de seleção e repetição é possível o uso de outras linguagens por meio do nó Script para que possam ocorrer processamentos de decisão e interação [Delaiba e Junior, 2006], [Pacheco, 2004] e [Fernandes e Pires, 2000]. Em casos como na concepção de vários objetos com características geométricas idênticas é possível replicar os elementos manualmente e atribuir coordenadas, cujo incremento é calculado pelo desenvolvedor ou usar propriedades de outras linguagens que permitam a criação e atribuição de coordenadas de forma automática. O uso de scripts para realizar cálculos de processamento em VRML ocorre frequentemente com a utilização das linguagens JavaScript, Java e VRMLscript (que é uma derivação de JavaScript assim como a ECMAScript) [Nadeau, Moreland e Hech, 1998]. Com JavaScript podemos criar efeitos especiais nas páginas e definir interatividades com o usuário [Delaiba e Junior, 2006]. Desta forma, foi escolhida a linguagem JavaScript por esta ser capaz de solucionar o problema, da replicação manual dos objetos especificando suas coordenadas geográficas uma a uma, e por estar disponível na maioria dos navegadores e não necessitar de instalações ou configurações adicionais para disparar as ações programadas. A criação de Ambientes Virtuais requer noções de sistemas em tempo real, orientação a objetos, redes, modelagem geométrica, modelagem física, multitarefas, entre outras habilidades [Kirner, et al, 1996]. Ter o domínio destas propriedades contribui para que desenvolvedores possam criar sistemas cada vez mais robustos, escaláveis e confiáveis para uma clientela cada vez mais exigente. A criação de conjuntos de objetos com o uso de scripts permite poupar o tempo dos desenvolvedores agilizando o processo de construção de Ambientes Virtuais. Este trabalho tem como objetivo demonstrar os resultados alcançados com o uso das linguagens VRML e JavaScript para concepção de matrizes de objetos tridimensionais de forma automática. Os tópicos a seguir abordarão desde os trabalhos correlatos encontrados na literatura durante o desenvolvimento deste artigo, passando pelo contexto de desenvolvimento, algumas questões relativas a VRML e JavaScript, o problema e as soluções encontradas e finalmente os resultados alcançados apresentando um exemplo onde foi utilizada a integração das duas linguagens para solucionar um caso específico: criação de uma matriz tridimensional de livros para a Biblioteca Rui Barata da Universidade Federal do Pará (UFPA), Campus de Santarém, atual Campus Rondon da Universidade Federal do Oeste do Pará (UFOPA). 115 Revista Perspectiva Amazônica Ano33N° N°66 p.p.XXX XXX Ano Trabalhos Correlatos A criação de mundos virtuais em VRML é uma boa alternativa para apresentar ambientes com Realidade Virtual não imersiva na Web, permitindo um desenvolvimento rápido com base em geometrias predefinidas ou na criação e articulação de polígonos para especificar detalhes nos objetos da cena. O que acontece no entanto é que a VRML é uma linguagem de modelagem, e por esta limitação, não permite o uso nativo de estruturas de seleção e repetição como pode ser visto em linguagens de programação como Java, PHP, Python, entre outras. Por este motivo, em situações onde é preciso usar algumas estruturas próprias de linguagens de programação, se faz necessária a integração que a VRML permite por meio de seu nó Script, como na criação de vários objetos em sequência no caso de uma estrutura de repetição. Poucos trabalhos tem analisado essa questão no sentido de explorar os pontos relativos à renderização dos objetos na cena, tempo de resposta, testes de consumo de memória, tempo de processamento, entre outras características que podem ser estudadas nessa integração entre VRML e uma linguagem de script auxiliar, neste caso a JavaScript, ou uma linguagem mais elaborada, robusta e pesada, como o Java por exemplo. Apenas no trabalho de [Fernandes e Pires, 2000] é que foi possível encontrar um estudo, pelo menos em parte, semelhante ao proposto neste artigo. Em [Fernandes e Pires, 2000] é apresentada uma ferramenta, a VRML+: uma plataforma de desenvolvimento rápido de mundos VRML, cuja função é disponibilizar um preprocessador pra converter os códigos desenvolvidos na VRML+ em código VRML equivalente. Um dos pontos do artigo trata da utilização da plataforma no que diz respeito a estruturas de repetição para criar vários postes, sem ter o trabalho manual de criar objeto por objeto e ir deslocando este pelo ambiente virtual. A integração entre VRML e JavaScript proposta neste artigo, para criar matrizes de objetos em tempo de execução, não foi encontrada em nenhum outro trabalho pesquisado na área de Realidade Virtual. Este fato proporciona ao artigo em questão um caráter inovador, no intuito de analisar os resultados desta integração para instanciação dinâmica de objetos num cenário específico. Contexto de Desenvolvimento No ano de 2007 foi criado no antigo Campus de Santarém da UFPA, atual UFOPA – Campus Rondon, um grupo de estudos para modelar a Universidade em questão. Idealizado pelo professor Mestre Cássio David Borralho Pinheiro, o grupo formado pelos então alunos de graduação da Faculdade de Sistemas de Informação da UFPA: Rafael Brelaz Sampaio, Idelvandro José de Miranda Fonseca e Luiz Felipe de Sousa, ficou responsável por criar o Campus Virtual de Santarém (CVSUFPA). 116 Revista Perspectiva Amazônica Ano33N° N°66 p.p.XXX XXX Ano A princípio a finalidade do projeto era estudar tecnologias de Realidade Virtual para Web e então desenvolver o Campus Virtual, porém ao aprofundar os conhecimentos no assunto outras possibilidades foram acrescentadas pelos integrantes ao escopo do projeto, conforme [Brelaz et al, 2010]: · Permitir o conhecimento colaborativo entre seus participantes e consequentemente aos interessados em assuntos correlatos ou similares à Realidade Virtual; · Desenvolver e/ou adaptar mecanismos de coordenação, análise e construção de softwares ao escopo do projeto; · Criar Sistemas de Realidade Virtual com foco em arquitetura de edificações, na relação ensino/aprendizado, simulação de ambientes reais e suas aplicações no contexto da Web; · Fazer um ambiente computacional que simule a estrutura da UFPA em Santarém, permitindo aos visitantes virtuais conhecer suas edificações e interagir com objetos no cenário; · Produção de materiais técnicos, científicos e didáticos para disseminação da tecnologia, desenvolvimento da sociedade e construção do conhecimento; A linguagem a princípio sugerida pelo idealizador do projeto foi a VRML, devido a sua facilidade de instalação e uso, o fato de ser voltada para a Web, além da sua popularidade e a consequente abundância de materiais disponíveis na Internet. Levando em conta que a princípio o propósito era a simples modelagem da Universidade, a linguagem cumpriu perfeitamente a função esperada no intuito de mostrar visualmente as características do Campus de Santarém da UFPA. No contexto do CVS-UFPA, um dos principais pontos desenvolvidos foi a Biblioteca Virtual Rui Barata (BVRB), para permitir aos usuários virtuais conhecer a estrutura arquitetônica do ambiente, bem como a disposição dos objetos presentes nela. É neste ponto que surge a necessidade de encontrar uma alternativa eficaz para evitar a criação manual, texturização e devida replicação no ambiente virtual dos livros da BVRB. As figuras 1 e 2 mostram imagens da antiga biblioteca do Campus de Santarém da UFPA criada com o uso da linguagem VRML. 117 Revista Perspectiva Amazônica Ano33N° N°66 p.p.XXX XXX Ano Figura 1. Visualização das mesas para estudo na BVRB Figura 2. Visão do balcão onde ficam os bolsistas e funcionários para entregar os livros aos usuários da biblioteca VRML e JAVASCRIPT A integração entre as duas linguagens ocorre por meio do nó Script. Após o estabelecimento das variáveis em VRML é chamado o arquivo ou especificado o código que irá realizar algum processamento. Terminada a elaboração do script o 118 próximo passo é o estabelecimento de rotas que integrem funções em VRML com os cálculos realizados em JavaScript. Dentre as possibilidades de integrar VRML a outra linguagem de programação foi escolhida a JavaScript por ser a que mais conciliou a relação eficiência, facilidade de uso e disponibilidade nos navegadores, além do fato de ser facilmente substituída por versões correspondentes como VRMLscript ou ECMAScript. A necessidade de usar outra linguagem para realizar processamentos de repetição ocorreu devido a grande quantidade de livros que teriam que ser criados com seus atributos de textura e localização no espaço tridimensional da BVRB, somado isto à limitação da VRML para tal quesito como já mencionado anteriormente. Revista Perspectiva Amazônica Problemas e Soluções Ano33N° N°66 p.p.XXX XXX Ano Como a VRML tem suas restrições foi necessária a utilização da linguagem JavaScript juntamente ao VRML para realizar algumas tarefas [Delaiba e Junior, 2006]. Para realizar cálculos complexos é necessária a integração com outra linguagem que realize os processamentos e repasse os resultados dos cálculos ao browser para que possam ser atualizadas as informações no Ambiente Virtual. Para criar conjuntos de objetos em VRML duas alternativas são facilmente percebidas: a concepção manual e a integração com uma linguagem de programação. No primeiro caso é preciso instanciar e posicionar objetos no espaço tridimensional de maneira individual, ou seja, cada objeto é replicado e inserido no mundo virtual um a um, demandando significativo tempo e paciência aos desenvolvedores. Na segunda alternativa, que foi a utilizada neste artigo, pode ser usada uma estrutura de repetição disponível em outra linguagem de programação integrando duas linguagens: uma para processamento de cálculos e outra para exibição das propriedades da Realidade Virtual com os resultados gerados. A possibilidade de integração proporcionada pela VRML permite que a criação de conjuntos de objetos com características semelhantes seja facilitada com a construção dinâmica de vários elementos sem a necessidade de replicação e posicionamento manual de matrizes de objetos. Resultados Para criar matrizes de objetos tridimensionais em tempo de execução foi realizada a integração entre as linguagens JavaScript e VRML no intuito de conceber, colorir e posicionar objetos no cenário virtual idealizado. A princípio foi analisado o desempenho com base na quantidade de memória e objetos para a criação de livros em uma biblioteca virtual para conferir ao visitante do Ambiente Virtual uma visualização adequada, conforme o planejado pelos desenvolvedores da BVRB. Foram utilizadas variáveis e estruturas de repetição para deslocar os objetos criados de forma dinâmica e modelar uma matriz tridimensional de livros, onde cada elemento possui uma cor determinada aleatoriamente com a ajuda de uma função para geração de valores aleatórios para os valores RGB (Red, Green, Blue). O acionamento do script inicia quando o avatar do usuário se aproxima do objeto e dispara o sensor de proximidade (ProximitySensor) que é o gatilho para a criação da matriz tridimensional de livros. Qualquer distância entre o avatar e o primeiro livro da biblioteca, que seja menor que a quantidade de unidades de medidas determinada no código em VRML para disparar a ação, faz com que seja executado o script de criação de livros por meio de uma rota (ROUTE) que interliga o nó sensor ao nó script. A partir desse momento, a relação entre quantidade de memória volátil disponível e a quantidade de objetos que se deseja criar passa a ser a questão mais importante a ser analisada neste contexto. A figura 3 mostra o diagrama de estados do cenário em questão criado com o auxílio da ferramenta Astah Community [Astah, 2012]. 119 Revista Perspectiva Amazônica Ano33N° N°66 p.p.XXX XXX Ano Figura 3. Diagrama de estados do cenário proposto para criação dinâmica de objetos Como para este caso são usadas três estruturas de repetição alinhadas de modo que seja criada uma matriz tridimensional, ocorre um grande consumo de memória volátil, pois a cada interação as variáveis em JavaScript são atualizadas e novos cálculos são gerados. Ao sair do laço, a variável que armazenou os códigos dos objetos em VRML e seus respectivos atributos é adicionada ao navegador para que este possa acrescentar as instruções geradas ao Ambiente Virtual. Esta etapa gera um grande custo computacional pelo fato de serem gerados vários objetos, neste caso, livros que possam representar superficialmente o acervo de uma biblioteca virtual como pode ser visto em [Brelaz et al, 2010]. Pelo fato de criar várias linhas de código e armazená-las em uma dada variável, ao acontecer o repasse dessas informações ao navegador pode ocorrer uma demora acima dos limites que permitam uma visualização em tempo de execução ou o mais próximo possível disso. Alguns testes foram feitos em um computador com processador dual 1.6 Giga Hertz, 1 Giga Byte (GB) de memória volátil e placa de vídeo com 64 Mega Bytes (MB). Devido ao fato do processador ser dual foram distribuídas as funções para que os processos de usuário pudessem ser realizados por um núcleo e o navegador com uma biblioteca virtual e o script para criação dos livros tivesse atenção especial com um núcleo direcionado para a aplicação estudada. É importante frisar neste ponto, que o presente trabalho não tem como pretensão apontar resultados com base em análises de desempenho computacional e técnicas precisas para este fim, mas sim demonstrar os resultados alcançados por meio da experiência adquirida com a ajuda de algumas propriedades disponíveis no sistema operacional, pois não foram realizados estudos profundos sobre o funcionamento do sistema operacional utilizado e questões norteadoras e/ou específicas. 120 A proposta deste artigo limita-se a demonstração dos resultados para uma qualidade de visualização em tempo real ou o mais próximo possível disso, evitando travamentos e/ou perda de quadros que possam prejudicar a sensação de realidade ao visitar um Ambiente Virtual que contenha algum script para criação dinâmica de Revista Perspectiva Amazônica objetos virtuais. Desta forma, o objetivo proposto é analisar a viabilidade da integração entre VRML e JavaScript para criação automática de objetos em tempo de execução em contextos particulares, neste caso a criação de livros, demonstrando até que ponto a Ano33N° N°66 p.p.XXX XXX Ano relação entre memória volátil e quantidade de objetos pode influenciar em uma visualização adequada do ambiente. A tabela 1 apresenta as quantidades de objetos e memória volátil utilizadas, sendo que os processos do sistema operacional iniciam com 350 MB de memória já usados que passam para 400 MB com o carregamento da biblioteca e dependendo da quantidade de objetos assume estados finais diferentes para depois de executado o script de criação dos livros. Tabela 1. Demonstração das relações entre a quantidade de memória volátil e objetos instanciados em tempo de execução Objetos Pico de Memória Consumo Script Estado Final 1920 1,3 GB 900 MB 490 MB 1728 1,1 GB 700 MB 480 MB 1536 0,98 GB 600 MB 472 MB 1344 0,86 GB 460 MB 465 MB 1152 0,75 GB 350 MB 455 MB 960 0,65 GB 250 MB 447 MB Na criação da matriz tridimensional de livros nas estantes da biblioteca virtual foram utilizados valores fixos para os deslocamentos nos eixos Y e Z, pois estes representam as quantidades de prateleiras e estantes onde os objetos ficaram posicionados. Apenas o valor do eixo X foi modificado com alterações que variaram entre 10 e 5 unidades de medida da VRML para cada bloco ou conjunto de livros, sendo dois blocos para cada compartimento de uma determinada prateleira, conforme pode ser visto na figura 4. Figura 4. Livros posicionados ao longo do eixo X nas estantes formando dois blocos de 5 a 10 unidades de medida VRML, conforme os testes realizados 121 Revista Perspectiva Amazônica Ano33N° N°66 p.p.XXX XXX Ano Como a quantidade de memória volátil disponível era 1 GB, qualquer pico de memória acima deste valor provocou o uso de memória do Hard Disk (HD) e a consequente degradação do desempenho do sistema pelo uso de memória não volátil. As figuras 5 e 6 a seguir, mostram o resultado da integração entre VRML e JavaScript para criar matrizes de objetos automaticamente e permitir a coloração de cada elemento por meio de uma função aleatória que gera valores entre 0 e 1 conforme o padrão RGB. Figura 5. Visão do corredor de livros formado com o acionamento do script Figura 6. Visão panorâmica da matriz tridimensional de livros criada por meio da integração entre VRML e JavaScript 122 Revista Perspectiva Amazônica Conclusões Ano33N° N°66 p.p.XXX XXX Ano A VRML é uma ferramenta bastante útil para construção de mundos virtuais na Web, pois possibilita a elaboração de ambientes de forma rápida e intuitiva, o que facilita sua disseminação para que interessados em criar espaços virtuais em computador possam optar por esta alternativa, já que a linguagem consegue aliar uma boa relação entre curva de aprendizado e resultados. Um problema, no entanto, é o fato da VRML ter algumas limitações que dificultam determinadas possibilidades que são facilmente implementadas em outras linguagens, entre elas a utilização de estruturas de seleção e repetição que na VRML necessitam de outra linguagem para acrescentar tais características. Neste trabalho foram usadas a VRML e a JavaScript para criar uma matriz tridimensional de livros em uma biblioteca virtual. Durante os estudos realizados foi possível perceber que mesmo com o uso de uma linguagem auxiliar para agilizar a construção de mundos virtuais, a VRML ainda apresentou algumas limitações quanto à viabilidade de uso desta alternativa. Pelos resultados alcançados foi possível perceber que é necessário analisar a relação entre memória volátil disponível e quantidade/complexidade de objetos adicionados ao navegador. Foram apresentadas duas alternativas para criar matrizes tridimensionais em VRML: a manual e a automática. Pelo que foi percebido durante os estudos, para criar matrizes tridimensionais usando a abordagem automática os desenvolvedores necessitam calcular o custo computacional requisitado para que haja uma visualização ideal ou o mais próximo disso para o usuário final do Ambiente Virtual. No caso da abordagem que usa o script para criar objetos devem ser indicados os requisitos mínimos de memória para uma visualização sem perdas de quadro e sem travamentos, para que os usuários possam ter acesso aos resultados pretendidos pelos programadores, e não julguem os ambientes pelas limitações de suas máquinas, mas possam gozar de todas as estratégias disponíveis para criar mundos virtuais de forma mais rápida, eficiente e inteligente. Existe ainda a possibilidade de criar algo semelhante a [Fernandes e Pires, 2000] para gerar o código diretamente no arquivo de forma estática ao invés da abordagem dinâmica proposta neste artigo. Ambas as soluções tem suas vantagens e desvantagens, conforme os objetivos, o cenário e os atributos que se deseja utilizar no mundo virtual construído. A abordagem dinâmica, por exemplo, proporciona um código mais bem elaborado e menor, porém com desempenho fortemente limitado às configurações de hardware. Já a abordagem estática tende a ser mais robusta em termos de desempenho e menos eficiente na questão de engenharia e espaço em disco. Este artigo analisou a integração entre VRML e JavaScript para criação dinâmica de objetos em um Ambiente Virtual, a biblioteca BVRB. Como principal contribuição foram apresentados dados relativos ao desempenho do Ambiente Virtual em vários cenários, a proposta de integrar as linguagens usadas neste trabalho para permitir a criação dinâmica de mundos virtuais, bem como uma breve análise do custo / benefício de criar objetos em sequência de forma estática e dinâmica, conforme os requisitos que se pretende alcançar. 123 Revista Perspectiva Amazônica Ano33N° N°66 p.p.XXX XXX Ano Trabalhos Futuros Nesta etapa foi analisada a integração entre VRML e JavaScript para criação de matrizes de objetos tridimensionais com base em resultados principalmente qualitativos e alguns poucos dados quantitativos. Para as próximas etapas será feita uma análise mais rigorosa a respeito do desempenho da abordagem apresentada, usando técnicas e conceitos com base em um estudo mais aprofundado em relação a Avaliação de Desempenho de Sistemas (ADS) que usem esta integração para instanciar conjuntos de objetos em tempo de execução. Em outro trabalho ainda não publicado, pelo mesmo autor deste artigo, também foi criada uma ferramenta para gerar códigos de forma estática utilizando a linguagem de programação Java. Sendo assim, também será feita uma análise mais detalhada em relação as vantagens e desvantagens das abordagens estática e dinâmica mencionadas no tópico anterior deste artigo, e desta forma mostrar em que situações seria viável optar por esta ou aquela abordagem. Referências ASTAH COMMUNITY. Disponível em <http://astah.net/editions/community>. Acesso em 17 de Fevereiro de 2012. BRELAZ, R.; FONSECA, J. DE M.; SOUSA, L. F. E PINHEIRO, C. D. B. 2010. Campus Virtual de Santarém: Visualização Tridimensional da Biblioteca Rui Barata para Permitir Acesso a sua Estrutura Arquitetônica e Disposição de Objetos. ERIN 2010. DELAIBA, V. H. B. E JUNIOR, E. A. L. (2006). Realidade Virtual no Contexto da Eficiência Energética: Estudo e Desenvolvimento de Ambientes Virtuais, como Ferramenta de Suporte para Aplicação Direta no Estudo de Motores Elétrica e na Eficiência Energética. FERNANDES, A. R. E PIRES, H. C. (2000). VRML+: Uma Plataforma de Desenvolvimento Rápido de Mundos VRML. In: 9° Encontro Português de Computação Gráfica, Marinha Grande, 16-18 de Fevereiro de 2000. HENRIQUES, P. G. E SAMPAIO, A. Z. (2002). Simulação Visual na Construção de Edifícios. In: XIV Congresso Internacional de Ingeniería Gráfica, realizado em Santander, Espanha, 5-7 junho de 2002. KIRNER, C. et al. Sistemas de Realidade Virtual, Apostila do I Ciclo de Palestras de Realidade Virtual, Universidade Federal de São Carlos, Outubro 1996, http://www.dc.ufscar.br/∼ grv/tutrv.htm 124