Um sistema integrado de modelagem 3D com motor de jogo - MIRAGEM3D

Documentos relacionados
Análise de Motores Gráficos 3D para Simulação de Fluídos

Técnicas para Reutilização de Software

Agenda da Aula. Reuso de Software. Tipos de Reuso. Potenciais Problemas. Vantagens de Reuso. Introdução a Reuso de Software

FERRAMENTA DE VISUALIZAÇÃO 3D DE UM SISTEMA DE ARQUIVOS. Vinícius Krauspenhar Orientador: Mauro Marcelo Mattos

Introdução Introdução

Desenvolvimento de um Motor Gráfico de Apoio a Ambientes Lúdicos Educacionais

RV PlanoVision Viewer

IMPLEMENTAÇÃO DE VISUALIZAÇÃO DE PERSONAGEM NÃO JOGADOR NA MOBILE 3D GAME ENGINE (M3GE)

Aprenda como renderizar uma maquete eletrônica no 3ds Max 7

Desenvolvendo aplicações com Unity3D. Renan Vinicius Aranha

6 Resultados Análise de Desempenho

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

MJ3I- PA - AMBIENTE VIRTUAL 3D PARA VISUALIZAÇÃO DE BRAÇOS ARTICULADOS NO IOS

XNA. Introdução ao XNA

Utilizaremos o caminho File > File Link Manager (Figura 02) para referenciar o arquivo DWG no 3ds max 8.

Reconstrução e Síntese de Cenários Tridimensionais a partir de Imagens Estereoscópicas

Vantagens na utilização do ARCHUS Design Plus:

CONTRUCT 2. Tainá Medeiros

Tópicos Especiais em Engenharia de Software (Jogos II)

Bibliotecas e Componentes para Interatividade de Jogos em Flash

Protótipo de um visualizador de modelos 3D para dispositivos móveis utilizando a plataforma.net CF 2.0

Reconstrutor de modelos 3D utilizando técnica de nível de detalhamento no ios

QuadLOD: Uma Estrutura para a Visualização Interativa de Terrenos

Tutorial da ferramenta de modelagem ASTAH (Versão resumida) Prof. Moacyr Franco Neto

PROGRAMACAO E INTEGRACAO DE JOGOS I

::: MÓDULO I ACESSO.NET :::

Marcelo Henrique dos Santos

QEA Integração entre a ferramenta para desenvolvimento de sistemas web Quellon e o Enterprise Architect

4 Impostores com Relevo

Portais Renderizáveis em 3D

4 Framework Proposto para Construção de Mediadores

Aula 7. Tratamento de Colisão. TECNOLOGIA EM JOGOS DIGITAIS GAME ENGINE Marcelo Henrique dos Santos

EDITOR DE MALHAS FERROVIÁRIAS EMF

Arquitetura de Jogos Gustavo Goedert. p

Lista de Editores 3D disponíveis no mercado

Bruno Pereira Evangelista. Pontifícia Universidade Católica de Minas Gerais

UNIVERSIDADE REGIONAL DE BLUMENAU CENTRO DE CIÊNCIAS EXATAS E NATURAIS DEPARTAMENTO DE SISTEMAS E COMPUTAÇÃO CURSO: CIÊNCIAS DA COMPUTAÇÃO

Introdução Interfaces Módulos de modelagem

Engenharia de Software

3ds max para Virtools Exportação de conteúdos (objectos, Characters e animações) Filipe Costa Luz Universidade Lusófona 2008

O que há de novo no Autodesk Navisworks 2011?

3 Uma Abordagem Orientada a Aspectos para o Desenvolvimento de Frameworks

Segundo trabalho prático de implementação Sistema de reserva de assentos

2 Técnicas e Trabalhos Relacionados

Como as aplicações de entretenimento (em especial jogos digitais) têm enfrentado um constante crescimento, tanto em tamanho quanto em complexidade,

Relatório do Trabalho Final INF01009 Computação Gráfica UFRGS. Ewerton Felipe Miglioranza

Desenvolvimento de uma ferramenta para organização e gerenciamento de atividades de docentes

4 Resultados. 4.1 Análise de desempenho

Figura 16 Niagara - Visão de grupos de notas.

O AUXÍLIO DE AMBIENTES VIRTUAIS INTERATIVOS PARA O ESTUDO ARQUITETÔNICO DO CENTRO UNIVERSITÁRIO ANTONIO EUFRÁSIO DE TOLEDO DE PRESIDENTE PRUDENTE

6.1. Teste Baseado em Gramática e Outras Abordagens de Teste

Técnicas para Reutilização de Software Prof. Eduardo Figueiredo Estagiário: Johnatan Oliveira

Desenvolvimento de um Escalonador de Cenas para motores de jogos

5 Resultados Resolução das Imagens e tamanhos das cenas

Porte do Engine de Física ODE para a Plataforma Pocket PC

Visualizador de animações 3D com suporte ao formato arquivos FBX em Objective-C++

Visualização de terrenos em GPU

Criar/Aplicar textura

Um framework para simulação de microbacias como serious game 12

Novos recursos e melhorias do Autodesk Revit 2017

Como capturar imagens de alta resolução?

6 Conclusão Contribuições da Dissertação

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

AULA 2 VISÃO BÁSICA DE CLASSES EM PHP

Simulação de Dispositivos Dinamicos para Jogos

ENGENHARIA DE SOFTWARE. Aula 17 Reuso de software

DOWNLOAD. Entre na página download. Escolha o arquivo para download de acordo com o seu sistema operacional;

Survey de técnicas. detalhadas: Análise e Comparação

ESPECIFICAÇÃO DE SOFTWARE

Agenda do Curso. Reuso de Software. Agenda da Aula. Tipos de Reuso. Vantagens de Reuso. Reuso de Software. Eduardo Figueiredo

pgmodeler: muito mais que um modelador de bancos de dados PostgreSQL

Aula 5 POO 1 Encapsulamento. Profa. Elaine Faria UFU

Aula 1 Introdução ao CryENGINE 3

Avaliação da metodologia BIM através de um estudo de caso

Aula 3 POO 1 Classe e Objeto. Profa. Elaine Faria UFU

TOTVS - Microsiga Protheus PCO

Introdução a Teste de Software

GUIA DE INÍCIO RÁPIDO

Modelagem e otimização de problemas utilizando ferramentas gráficas

Sumário do Plano de Testes

Tecnologias de Jogos de Vídeo

Introdução. Parte 01. Desenvolvimento de Programação Orientada a Objetos. Prof. Pedro Neto

Introdução. Introdução. Introdução. Planejamento da disciplina. Modelagem de Processos de Negócio. Prof.: Clarindo Isaías Pereira da Silva e Pádua

Requisitos de Software

Sistema para acompanhamento de Trabalhos de Conclusão de Curso. Elisângela Cristina Lombardi Klitzke Acadêmica Dalton Solano dos Reis - Orientador

Engenharia de Software II

Notas técnicas da versão

SERVIDOR DE MAPAS PROJETO BRASÍLIA 2060

Aluno: Daniel Ribeiro Trindade Orientador: Alberto Barbosa Rapaso

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

Open Day Bibliotecas ElipseX

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

Comparação entre as bibliotecas gráficas. OpenGL e Direct3D. Aluno:Alexandre Otto Strube Orientador: Paulo César Rodacki Gomes

UMA INTERFACE DE GERENCIAMENTO DE REDES DEFINIDAS POR SOFTWARE

TUTORIAL ENDNOTE BASIC

Spectrum Miner. Versão 8.0. Guia do usuário para a integração do Portrait Dialogue

15/04/2013. Pensar Orientado a Objetos. Projeto Orientado a Objetos. Características de Objetos. Classe de Objetos. Comunicação entre Objetos

Interpretação de um ensaio de campo e criação de um modelo geológico

VERSÃO C A R T A A N Ú N C I O Versão 11

Sistema de Animação Facial Tridimensional e Síntese de Voz

Transcrição:

Um sistema integrado de modelagem 3D com motor de jogo - MIRAGEM3D Aluno: Antonio Prates Orientador: Bruno Feijó Introdução Nesta pesquisa, foi feito um estudo transversal entre diversos motores de jogos 3D (3D game engines) [1] para visualização de ambientes 3D de projetos de engenharia, propondo-se o 3dsmax [2] como ambiente de modelagem. As tecnologias de jogos sem fins meramente lúdicos, mas também usados em educação e simulação, caracterizam o novo paradigma de serious games (jogos sérios ou empresariais). Os motores de jogos existentes no mercado (e.g.: RenderWare, Unreal, 3D GameStudio, Crystal Space, etc.) são muito caros, inacessíveis ou, então, limitados no que diz respeito à importação de modelos 3D e à visualização de cenários em céu aberto. No presente trabalho, optou-se pela utilização de um framework mais genérico, porém mais adequado para superar as limitações acima citadas: Ogre3D [3]. Este framework é reconhecidamente um motor gráfico 3D de alto nível, com a vantagem de ser em código aberto e possuir licença GPL, além de ter sido o projeto do mês no SourceForge.net em março de 2005. O Ogre3D não é um motor de jogos propriamente dito, pois não implementa física nem outras funcionalidades utilizadas na confecção de jogos, porém é muito utilizado pela comunidade desenvolvedora de jogos, porque possui uma arquitetura organizada, bem documentada e totalmente orientada a objetos - o que facilita a sua integração e adaptação. O Ogre3D possui um gerenciamento flexível para diversos tipos de cenário, inclusive para cenários grandes em céu aberto, e dispõe de uma série de projetos desenvolvidos pela comunidade de usuários (de código aberto e licença GPL), tais como: exportação de malhas em diversos ambientes de modelagem (3dsmax, maya, blender, etc.) e integração com bibliotecas de colisão e física (ODE, OPCODE, etc.). Baseado neste motor de jogos, foi implementado um simulador, denominado Miragem3D, que obtém imagens de alta qualidade de cenários modelados no 3dsmax e possibilita a interação do usuário em tempo real, com vistas a aplicações em engenharia. Objetivos Este trabalho objetiva estudar e programar um sistema para visualização de cenários do 3dsmax, com interação em primeira pessoa, baseado em um motor de jogo de código aberto e licença GPL. 1

Metodologia Para exportar as malhas no 3dsmax e carregá-las no ambiente do Ogre3D, destacam-se dois exportadores (plugins para 3dsmax escritos em MaxScript): - Ogre3DSExporter que, embora seja a solução oficial para o Ogre3D, não atende os objetivos, pois exporta apenas uma malha individualmente e não um cenário completo. - Octopus Exporter capaz de exportar múltiplas malhas e gerar um arquivo XML de referência (DotScene) para o cenário. Este exportador apresentava uma série de pequenas falhas que foram parcialmente resolvidas ao longo do desenvolvimento deste projeto. Uma das possibilidades para o carregamento do cenário é a geração de um arquivo binário de Octree a partir do arquivo DotScene exportado do ambiente de modelagem. Entretanto, a implementação da biblioteca de Octree está com código desatualizado (desde 2002), o que a torna incompatível com as versões atualizadas do Ogre3D; não podendo, portanto, ser corrigida nem adequada para o uso neste projeto, por falta de documentação. O Miragem3D implementa um parser para o arquivo XML (DotScene) gerado pelo Octopus, e um loader que utiliza o framework do Ogre3D para apresentar a cena ao usuário. A aplicação-exemplo (Fig.1) utiliza um cenário do Cais do Porto do Rio de Janeiro (cujos arquivos 3dsmax foram cedidos pela empresa Nigraph) e um Cubemap (6 imagens JPEG que formam um cubo 360 graus com horizonte e nuvens) gerado no software Terragen. Fig.1 Cais do Porto do Rio de Janeiro no Miragem3D O posicionamento da câmera e a otimização para o carregamento de cenários grandes acontecem através de regras de nomeação de objetos no 3dsmax que servem de trigers para o parser de DotScene do Miragem3D. Um destes trigers é o nome de objeto player, que é um objeto criado na cena do arquivo 3dsmax para indicar onde a câmera deve nascer. Outro triger permite o uso de instâncias de uma mesma malha: instance NOME_DA_MATRIZ SEQUENCIAL. Esse triger permite que o loader reutilize uma malha (matriz) no lugar de uma outra que seja semelhante, em tempo de execução. Para que a navegação simule a movimentação de um veículo, a aplicação-exemplo implementa gravidade e trata colisão usando a biblioteca OPCODE. A integração desta biblioteca de colisão com Ogre3D é denominada OgreOpcode. O loader instancia as malhas do cenário na biblioteca OgreOpcode e a câmera colide com o cenário usando uma esfera envolvente (bounding sphere). A componente normal da colisão é praticamente anulada, fazendo com que a câmera escorregue no sentido tangencial à superfície do objeto colidido. 2

Arquitetura do Ogre3d Este trabalho consiste de uma extensão da aplicação do Ogre3D, e como tal está inserido dentro do seu contexto de classes. A arquitetura adotada pelo Ogre utiliza vários conceitos de Padrões de Projeto (Factories, Singletons, Observers etc.), que a tornam mais enxuta e fácil de usar. Vários conceitos e abstrações são introduzidos pela arquitetura, sendo os principais: Root, SceneMananger, RenderSystem, Entity, Mesh, SceneNode e Material. O relacionamento entre estes componentes pode ser observado na Fig.2. Fig.2 Visão UML do Ogre3D O SceneManager é o objeto que gerencia os objetos que serão renderizados pelo motor. É responsável por aplicar algoritmos para otimizar a exibição da cena, por criar as Entidades (objetos, luzes, malhas), movê-las e transformá-las. A maior parte da interação com o SceneMananger se dá ao longo da criação da cena. Durante este processo uma grande quantidade de objetos é criada, havendo a possibilidade de modificação dinâmica posteriormente durante o ciclo de renderização através de um FrameListener. Histórico do desenvolvime nto Desde o inicio até setembro de 2005 foram pesquisadas diversas possibilidades para solucionar o problema de exportar as malhas no 3dsmax e carregá-las no Ogre3D, testando para verificar qual apresentaria o melhor resultado: - Ogre3DSExporter não atendia, pois exportava apenas uma malha/objeto individualmente, precisávamos de uma solução capaz de lidar com cenas complexas. - Octopus Exporter atendia, mas apresentava uma série de pequenas falhas que foram parcialmente resolvidas. OBS: Ambos consistem de plugins para 3dsmax escritos em MaxScript. Até final de outubro de 2005 o tempo foi investido sobre uma implementação de Dot_Scene_Octree, a qual estava com código (desde 2002) incompatível com a versão 3

atualizada do Ogre3D e não pode ser corrigida nem adequada para o uso, por falta de documentação. A partir de novembro de 2005 o projeto tomou um novo rumo e começou a implementação de um parser para o arquivo XML gerado pelo Octopus, tarefa que tomou quase um mês, mas que valeu à pena, pois em janeiro já era possível exportar uma cena no 3dsmax e visualiza-la através desta aplicação composta por uma parser e um loader executando dentro do framework do Ogre3d. Acredito que a maior parte dos resultados foi fruto do desenvolvimento que aconteceu neste período. Em janeiro de 2006 foram produzidos algumas aplicações exemplo com cenários do porto do Rio de Janeiro. Os originais de arquivos MAX foram produzidos e gentilmente cedidos pela empresa Nigraph. Nesta etapa também foi estudado e criado um Cubemap (6 imagens JPEG que formam um cubo 360 graus com horizonte e nuvens) gerado no software Terragen para acompanhar os exemplos. A partir de fevereiro de 2006 iniciou se a terceira etapa do projeto, que buscava otimizações para o load de cenários grandes e soluções para a sua navegabilidade como se um personagem humano caminhasse, ou veículo passeasse. Para isso, foram criadas regras de nomeação de objetos no 3dsmax que servem de trigers para o DotScene parser do Miragem3d. Deste março de 2006 até a presente data, vem se buscando aperfeiçoar o tratamento de colisão que é baseado na biblioteca OPCODE (também em código aberto e regida pela licença GPL). Sistema de Colisão Fig.3 e Fig.4 Vetores de movimento de uma colisão n tg Na implementação do Miragem3d existe a necessidade de realizar a correção da posição do objeto no sentido normal da colisão (a disância indicada pela letra d na Fig.3), quando há penetração no objeto colidido. Após a correção desta distância penetrada, o restante da componente normal é anulada, o que faz com que a câmera escorregue no sentido tangencial à superfície do objeto colidido (vetor tg da Fig.4). Exportação de mapas à partir do 3dsmax Utilizando o Octopus (http://www.ogre3d.org/wiki/index.php/artisticallydisabled) para exportar os arquivos DotScene à partir do 3dsmax: O Octopus instala um tipo de material denominado OGRE (single/pass). Recomendase utilizar este tipo de material, apesar dos materiais do tipo Standard do 3dsmax funcionarem também. Recomenda-se também não utilizar os nomes default do 3dsmax, pois o exportador tem problemas com espaços em branco, sempre renomear, por exemplo: material_carro, material_arvore etc. Observação: Ao construir a modelagem do cenário, recomenda-se evitar triângulos muito grandes, pois reduzem o desempenho e qualidade da imagem em tempo real. 4

O Ogre3D lê texturas de arquivos PNG, JPEG, TGA, BMP ou DDS, incluindo formatos pouco usuais de textura como textura 1D, textura volumétrica, cubemaps e texturas comprimidas (DXT/S3TC). O Octopus Exporter consegue aproveitar as seguintes propriedades dos materiais: - Texture; - Ambient; - Diffuse; - Specular; - Emissive (Self Illumination). Problemas com o Octopus Um problema não mencionando em nenhum local na Internet, mas que foi encontrado com certa freqüência nos testes realizados nesta pesquisa é o fato que, em algumas instalações do 3dsmax a cena exportada já tinha as transformações de posição, escala e rotação aplicados, sendo, portanto, a informação descrita no XML da cena redundante, e em outras era preciso utilizar esta informação do XML para obter a cena corretamente apresentada. Para solucionar este problema foi criada uma opção no arquivo de configurações da aplicação Miragem3d (chave USE_SCENE_TRANSFORMATION mencionando mais à frente). Fig.5 Cais do Porto sendo editado no 3dsmax e Fig.6 Octopus Exporter 5

Algoritmo do Loader da cena Este é o algoritmo que utiliza o Parser para o formato.scene (xml) que carrega o Cenário direto no SceneMananger, permitindo a visualização instantânea da cena: void ontheflydotscenerun(char * filepath) multiparser * dotsceneparser = new multiparser(filepath); multiparser * NodeParser; dotsceneparser->writelog("miragem3d está iniciando em: "); dotsceneparser->writelog(filepath); dotsceneparser->writelog(" \n"); if(dotsceneparser->gettype() == TFAIL) dotsceneparser->writelog("falhou em abrir o arquivo! \n"); return; // error if(!dotsceneparser->parsedotscene()) return; // error if(!dotsceneparser->parsenodes()) return; // error // para cada elemento do arquivo XML while(dotsceneparser->gettype() == TNODES) NodeParser = dotsceneparser->getnextnode(); if(dotsceneparser->gettype() == TNODES) // crie a Entidade! donode(nodeparser); dotsceneparser->writelog("ontheflydotscenerun terminou. \n\n"); void donode(multiparser * NodeParser) Entity *e; SceneNode *node; char * substring; multiparser * StrParser; char name[mi3d_bufsize], filename[mi3d_bufsize]; char pos1[mi3d_bufsize], pos2[mi3d_bufsize], pos3[mi3d_bufsize]; char rot1[mi3d_bufsize], rot2[mi3d_bufsize], rot3[mi3d_bufsize], rot4[mi3d_bufsize]; char sca1[mi3d_bufsize], sca2[mi3d_bufsize], sca3[mi3d_bufsize]; // le o nome strcpy(name, NodeParser->getNodeInfo(NULL, "name")); strcpy(filename, name); strcat(filename, ".mesh"); // le a posicao strcpy(pos1, NodeParser->getNodeInfo("position", "x")); strcpy(pos2, NodeParser->getNodeInfo(NULL, "y")); strcpy(pos3, NodeParser->getNodeInfo(NULL, "z")); // le a rotacao strcpy(rot1, NodeParser->getNodeInfo("rotation", "qx")); strcpy(rot2, NodeParser->getNodeInfo(NULL, "qy")); strcpy(rot3, NodeParser->getNodeInfo(NULL, "qz")); strcpy(rot4, NodeParser->getNodeInfo(NULL, "qw")); // le a escala strcpy(sca1, NodeParser->getNodeInfo("scale", "x")); strcpy(sca2, NodeParser->getNodeInfo(NULL, "y")); 6

strcpy(sca3, NodeParser->getNodeInfo(NULL, "z")); if(strcmp(name, " player") == 0) // posiciona o player no cenario mcamera->setposition((real)atof(pos1), (Real)atof(pos2), (Real)atof(pos3)); else StrParser = new multiparser(name, 0, sizeof(" instance")-1); substring = StrParser->getSource(); // verifica se eh instancia if(strcmp(substring, " instance") == 0) delete StrParser; StrParser = new multiparser(name, sizeof(" instance")-1, sizeof(name)-1); strcpy(filename, StrParser->getUntilUscores()); // usa o nome do arquivo matriz strcat(filename, ".mesh"); delete StrParser; e = mscenemgr->createentity(name, filename); node = mscenemgr->getrootscenenode()->createchildscenenode(); node->attachobject(e); CollisionShape *collideshape1 = CollisionManager::getSingletonPtr()->NewShape(name); collideshape1->load(e); collideshape1->setname(name); collideobject1 = collidecontext->newobject(); collideobject1->setcollclass("level"); collideobject1->setshape(collideshape1); collidecontext->addobject(collideobject1); if(strcmp(mi3d_use_scene_transformation, "true") == 0) // configura transformações do objeto - as vezes funciona corretamente sem isso node->setposition((real)atof(pos1), (Real)atof(pos2), (Real)atof(pos3)); node->setorientation(atof(rot4), atof(rot1), atof(rot2), atof(rot3)); node->setscale(atof(sca1), atof(sca2), atof(sca3)); 7

Configurações possíveis no Miragem3d (miragem3d.cfg) Dot-scene-file define qual o arquivo que será carregado como cena inicial pelo Miragem3d. Ex: DOT_SCENE_FILE="scenes/teste.scene" Use-scene-transformation, dependendo da versão do Octopus ou 3dsmax é necessário setar true ou false esta opção para que os objetos sejam carregados apropriadamente na sua respectiva posição, rotação e escala. Ex: USE_SCENE_TRANSFORMATION="false" Use-collision define se o player irá colidir com os objetos ou se irá passar através deles. Ex: USE_COLLISION="true" Gravity define a aceleração da gravidade para o player. Ex: GRAVITY="10" Show-bounding-boxes define se a visualização irá apresentar os B-boxes. Ex: SHOW_BOUNDING_BOXES="false" Player-speed-max define a velocidade maxima que o player anda. Ex: PLAYER_SPEED_MAX="500" Player-speed-up define a velocidade o player acelera. Ex: PLAYER_SPEED_UP="10" Player-speed-down define o fator de redução da velocidade (em 0 funciona como uma espacionave não tem desaceleração). Ex: PLAYER_SPEED_DOWN="1" Execução do Miragem3d Para carregar mapas, malhas e cenários mais facilmente, sem ter que escrever um loader específico da cena inteiramente em C++ toda vez que se fosse criar algo novo, criei um pequeno parser que sabe carregar a cena tal qual ela é exportada pelo Octopus e logo em seguida carregar os objetos. Importante: Uma restrição que deve ser observada ao se exportar o cenário é que antes de exportar deve-se selecionar todos os meshes da cena e aplicar o transformador XForm do 3dsmax. Isto é necessário pois a implementação do Octopus não realiza a exportação corretamente das matrizes de transformação. Além disso, se mesmo seguindo esta orientação, você encontrar problemas ao visualizar o seu mapa, tente alterar o valor da chave USE_SCENE_TRANSFORMATION. Para incluir os arquivos necessários à visualização do cenário usando o Miragem3d, é necessário copiar os arquivos exportados pelo Octopus, descrito à seguir: Matérias de: Mat\*.material para: miragem3d\media\materials\scripts\ Imagens de: (pasta de texturas da cena) para: miragem3d\media\materials\textures\ Modelos de: Mesh\*.mesh para: miragem3d\media\models\ Script de: Scripts\arquivo.scene para: miragem3d\scenes\arquivo.scene Altere a chave DOT_SCENE_FILE para que o valor corresponda ao nome do seu arquivo de script ( arquivo.scene ). Depois basta executar: miragem3d\miragem3d.exe 8

Conclusões A solução gerada neste trabalho viabiliza uma transposição bastante eficiente de cenários produzidos no 3dsmax para um ambiente de tempo real com visão de primeira pessoa. O desempenho computacional do MIRAGEM3D é bastante razoável. Em um cenário com aproximadamente 2500 triângulos, executado em um processador Celeron 2.8Ghz, com placa gráfica 3D integrada de 32MB, o MIRAGEM3D apresenta uma taxa média de 50 fps (frames per second) e uma taxa mínima de 20 fps. Para o futuro, pode-se melhorar o sistema, revendo o uso de Octree, aperfeiçoando o tratamento de colisão e implementando o uso das opções de sombra (shadow casting) do Ogre3D. O tratamento de sombras traria um maior realismo para a visualização da cena. Referências 1 - ZERBST, S. and DUVEL, O. 3D Game Engine Programming, Premier Press, 2004. 2 AUTODESK, 3ds Max, www.autodesk.com/3dsmax [acessado em 7/07/06]. 3 OGRE, Ogre v.1.2, http://www.ogre3d.org [acessado em 7/07/2006]. 4 Terragen, Photorealistic scenery rendering software, www.planetside.co.uk/terragen [acessado em 7/07/2006]. 9