equipe: carlos maciel elias colleto gustavo hagenbeck Ítalo macedo telmo filho thyago cassimiro

63
Equipe: Carlos Maciel Elias Colleto Gustavo Hagenbeck Ítalo Macedo Telmo Filho Thyago Cassimiro Vinícius de Oliveira

Upload: shawna

Post on 15-Jan-2016

33 views

Category:

Documents


0 download

DESCRIPTION

Equipe: Carlos Maciel Elias Colleto Gustavo Hagenbeck Ítalo Macedo Telmo Filho Thyago Cassimiro Vinícius de Oliveira. Introdução. OGRE Motor gráfico orientado a objeto (orientado à cena); Facilitar o desenvolvimento de aplicações gráficas; Licença GPL; Qualidade e eficiência;. - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: Equipe: Carlos Maciel Elias  Colleto Gustavo  Hagenbeck Ítalo Macedo Telmo  Filho Thyago Cassimiro

Equipe:Carlos MacielElias Colleto

Gustavo HagenbeckÍtalo MacedoTelmo Filho

Thyago CassimiroVinícius de Oliveira

Page 2: Equipe: Carlos Maciel Elias  Colleto Gustavo  Hagenbeck Ítalo Macedo Telmo  Filho Thyago Cassimiro

Introdução

OGRE • Motor gráfico orientado a objeto (orientado à

cena);• Facilitar o desenvolvimento de aplicações

gráficas;• Licença GPL;• Qualidade e eficiência;

Page 3: Equipe: Carlos Maciel Elias  Colleto Gustavo  Hagenbeck Ítalo Macedo Telmo  Filho Thyago Cassimiro

Introdução

Orientado à cenaGrafo da cena:“The scenegraph is an object-oriented structure

that arranges the logical and often (but not necessarily) spatial representation of a graphical scene.” (1)

• Organizar objetos em cenas;– Transformações;– Hierarquia;– Otimização;– Preparação;

Page 4: Equipe: Carlos Maciel Elias  Colleto Gustavo  Hagenbeck Ítalo Macedo Telmo  Filho Thyago Cassimiro

Introdução

Questões TécnicasImplementação:• C++Abstração• Biblioteca utilizada (OpenGL, Direct3D)Simplicidade• Não suporta física, áudio, porém é de simples

uso;

Page 5: Equipe: Carlos Maciel Elias  Colleto Gustavo  Hagenbeck Ítalo Macedo Telmo  Filho Thyago Cassimiro

Introdução

Facilidade• Tratamento de classes de vetores e matrizes• Gerenciamento de memória• Adicionar plugins

– Toolkits variados• Áudio• Física

• Gerenciador de componentes– Scripting Language

• Gerenciamento de cenas (grafo de cenas);

Page 6: Equipe: Carlos Maciel Elias  Colleto Gustavo  Hagenbeck Ítalo Macedo Telmo  Filho Thyago Cassimiro

Introdução

Flexibilidade• Compatível com a maioria dos Sistemas

Operacionais (SO);Portabilidade• Facilmente exportável (3D Studio Max, Maya,

Blender, LightWave, Milkshape, Sketchup…);

Page 7: Equipe: Carlos Maciel Elias  Colleto Gustavo  Hagenbeck Ítalo Macedo Telmo  Filho Thyago Cassimiro

Introdução

Comunidade• Amplamente difundida;

– Muitos frameworks disponíveis;• Alta produtividade;

Page 8: Equipe: Carlos Maciel Elias  Colleto Gustavo  Hagenbeck Ítalo Macedo Telmo  Filho Thyago Cassimiro

• Interface simples e fácil de usar orientada a objetos feita para minimizar o esforço Interface simples e fácil de usar orientada a objetos feita para minimizar o esforço necessário para renderizar cenas em 3D, e ser independente de implementações de 3D, necessário para renderizar cenas em 3D, e ser independente de implementações de 3D, exemplo: Direct3D/OpenGL.exemplo: Direct3D/OpenGL.

• Framework de exemplo extensiva permite você colocar seu aplicativo para rodar Framework de exemplo extensiva permite você colocar seu aplicativo para rodar rápido e fácil.rápido e fácil.

• Requisitos comuns como manejo de render states, spatial culling, mexendo com Requisitos comuns como manejo de render states, spatial culling, mexendo com transparências são feitas para você automaticamente, te poupando tempo precioso.transparências são feitas para você automaticamente, te poupando tempo precioso.

• Design limpo e organizado com documentação completa de todas as classes da engine.Design limpo e organizado com documentação completa de todas as classes da engine.

• Comprovado, engine estável usada em vários produtos comerciais.Comprovado, engine estável usada em vários produtos comerciais.

CaracterísticasCaracterísticas

Características de produtividadeCaracterísticas de produtividade

Page 9: Equipe: Carlos Maciel Elias  Colleto Gustavo  Hagenbeck Ítalo Macedo Telmo  Filho Thyago Cassimiro

CaracterísticasCaracterísticas

Suporte a plataformas e 3D APIsSuporte a plataformas e 3D APIs

• Suporte a Direct3D e OpenGL.Suporte a Direct3D e OpenGL.• Suporte a Windows (todas as principais versões), Linux e Mac OSX.Suporte a Windows (todas as principais versões), Linux e Mac OSX.• Compila no Visual C++ e Code::Blocks no Windows.Compila no Visual C++ e Code::Blocks no Windows.• Compila no GCC 3+ no Linux / Mac OSX (usando XCode).Compila no GCC 3+ no Linux / Mac OSX (usando XCode).

Page 10: Equipe: Carlos Maciel Elias  Colleto Gustavo  Hagenbeck Ítalo Macedo Telmo  Filho Thyago Cassimiro

CaracterísticasCaracterísticas

Suporte a Material / ShaderSuporte a Material / Shader

• Poderosa linguagem de declaração de materiais te permite manter os materiais fora de Poderosa linguagem de declaração de materiais te permite manter os materiais fora de seu código. seu código. • Suporta Vertex e Fragment programs (shaders), tanto programas em baixo-nível Suporta Vertex e Fragment programs (shaders), tanto programas em baixo-nível escritos em assembler, e programas em alto-nível escritos em Cg, DirectX9 HLSL, ou escritos em assembler, e programas em alto-nível escritos em Cg, DirectX9 HLSL, ou GLSL e provê suporte automático para várias constantes comuns como matrizes de GLSL e provê suporte automático para várias constantes comuns como matrizes de worldview, informações de estado de luz e object space eye position, etc. worldview, informações de estado de luz e object space eye position, etc. • Suporta todos os operadores de função fixa como multitexture e multipass blending, Suporta todos os operadores de função fixa como multitexture e multipass blending, geração de coordenada de texturas e modificação, operações de alpha e cores geração de coordenada de texturas e modificação, operações de alpha e cores independentes para hardware não-programável ou para materiais de baixo custo. independentes para hardware não-programável ou para materiais de baixo custo. • Suporta efeitos com vários "passes", com interação se necessário.Suporta efeitos com vários "passes", com interação se necessário.• Suporte para múltiplas técnicas de materiais significa que você pode fazer efeitos Suporte para múltiplas técnicas de materiais significa que você pode fazer efeitos alternativos para uma grande variedade de placas e o OGRE automaticamente usa o que alternativos para uma grande variedade de placas e o OGRE automaticamente usa o que é melhor suportado.é melhor suportado.

Page 11: Equipe: Carlos Maciel Elias  Colleto Gustavo  Hagenbeck Ítalo Macedo Telmo  Filho Thyago Cassimiro

CaracterísticasCaracterísticas

Suporte a Material / ShaderSuporte a Material / Shader

• Suporte a Material LOD (Level of Detail, ou Nível de Detalhe), permite que seus Suporte a Material LOD (Level of Detail, ou Nível de Detalhe), permite que seus materiais possam reduzir o custo de acordo com o quão distantes eles ficam. materiais possam reduzir o custo de acordo com o quão distantes eles ficam. • Carregar texturas de arquivos PNG, JPEG, TGA, BMP ou DDS, incluindo formatos Carregar texturas de arquivos PNG, JPEG, TGA, BMP ou DDS, incluindo formatos incomuns como texturas 1D, texturas volumétricas, cubemaps e texturas comprimidas incomuns como texturas 1D, texturas volumétricas, cubemaps e texturas comprimidas (DXT/S3TC). (DXT/S3TC). • Texturas podem ser providas em tempo real por plugins, por exemplo uma Texturas podem ser providas em tempo real por plugins, por exemplo uma alimentação de vídeo. alimentação de vídeo. • Suporte a texturas projetivas fácil de usar.Suporte a texturas projetivas fácil de usar.

Page 12: Equipe: Carlos Maciel Elias  Colleto Gustavo  Hagenbeck Ítalo Macedo Telmo  Filho Thyago Cassimiro

CaracterísticasCaracterísticas

Meshes (Malhas)Meshes (Malhas)

• Formatos de malhas flexíveis são aceitos, separação dos conceitos de vertex buffers, Formatos de malhas flexíveis são aceitos, separação dos conceitos de vertex buffers, index buffers, vertex declarations e buffer mappings.index buffers, vertex declarations e buffer mappings.• Biquadric Bezier patches para superfícies curvadas.Biquadric Bezier patches para superfícies curvadas.• Malhas progressivas (LOD), geradas manualmente ou automaticamente.Malhas progressivas (LOD), geradas manualmente ou automaticamente.• Agrupamento de geometria estática.Agrupamento de geometria estática.

Page 13: Equipe: Carlos Maciel Elias  Colleto Gustavo  Hagenbeck Ítalo Macedo Telmo  Filho Thyago Cassimiro

CaracterísticasCaracterísticas

AnimaçãoAnimação

• Suporte sofisticado de animação por esqueletos. Suporte sofisticado de animação por esqueletos.

o Combinação de várias animações com pesos variáveis.Combinação de várias animações com pesos variáveis.o Skinning com peso de "bones" multiplos/variáveis.Skinning com peso de "bones" multiplos/variáveis.o Pipelines de skinning em software ou hardware com compartilhamento de Pipelines de skinning em software ou hardware com compartilhamento de

buffer inteligente.buffer inteligente.o Controle de bones manual.Controle de bones manual.o Modos de interpolação configurável, troca de precisão por velocidade.Modos de interpolação configurável, troca de precisão por velocidade.

• Suporte de animação de formas flexiveis.Suporte de animação de formas flexiveis.o Morph animation para aplicativos onde você deseja fazer simples Morph animation para aplicativos onde você deseja fazer simples

combinações lineares entre formatos.combinações lineares entre formatos.o Pose animation para animação de superfícies modernas, permitindo Pose animation para animação de superfícies modernas, permitindo

combinar várias poses com pesos variáveis ao longo de uma timeline, por combinar várias poses com pesos variáveis ao longo de uma timeline, por exemplo expressão / formas da boca para fazer animações faciais.exemplo expressão / formas da boca para fazer animações faciais.

o Ambas as técnicas podem ser implementadas em hardware ou software Ambas as técnicas podem ser implementadas em hardware ou software dependendo do suporte de hardware.dependendo do suporte de hardware.

Page 14: Equipe: Carlos Maciel Elias  Colleto Gustavo  Hagenbeck Ítalo Macedo Telmo  Filho Thyago Cassimiro

CaracterísticasCaracterísticas

AnimaçãoAnimação

• Animação de SceneNodes para caminho de câmeras e técnicas similares, usando Animação de SceneNodes para caminho de câmeras e técnicas similares, usando interpolação de spline quando necessário. interpolação de spline quando necessário. • Trilhas de animação genéricas podem aceitar objetos plugáveis para te possibilitar Trilhas de animação genéricas podem aceitar objetos plugáveis para te possibilitar animar qualquer parâmetro de qualquer objeto ao longo do tempo.animar qualquer parâmetro de qualquer objeto ao longo do tempo.

Page 15: Equipe: Carlos Maciel Elias  Colleto Gustavo  Hagenbeck Ítalo Macedo Telmo  Filho Thyago Cassimiro

CaracterísticasCaracterísticas

Características de CenaCaracterísticas de Cena

• Administração flexível de cenas, altamente customizável, vinculada a nenhum tipo de Administração flexível de cenas, altamente customizável, vinculada a nenhum tipo de cena. Use classes pre-definidas para organização das cenas se elas servem ou então cena. Use classes pre-definidas para organização das cenas se elas servem ou então coloque sua próprias subclasse para ganhar total controle sobre a organização das coloque sua próprias subclasse para ganhar total controle sobre a organização das cenas.cenas.• Vários plugins exemplo demonstram várias formas de manipulação da cena específica Vários plugins exemplo demonstram várias formas de manipulação da cena específica para um particular tipo de layout (ex: BSP, Octree).para um particular tipo de layout (ex: BSP, Octree).• Gráfico de cena hierárquico; nodes permitem objetos serem anexados uns aos outros e Gráfico de cena hierárquico; nodes permitem objetos serem anexados uns aos outros e seguir o movimento movimento dos outros, estruturas articuladas e etc.seguir o movimento movimento dos outros, estruturas articuladas e etc.• Várias técnicas de renderização de sombras, tanto técnicas modulativas como aditivas, Várias técnicas de renderização de sombras, tanto técnicas modulativas como aditivas, stencil e texturizadas, cada uma altamente configuável e tomando total vantagem de stencil e texturizadas, cada uma altamente configuável e tomando total vantagem de qualquer aceleração de hardware disponível.qualquer aceleração de hardware disponível.• Características de consulta de cena.Características de consulta de cena.

Page 16: Equipe: Carlos Maciel Elias  Colleto Gustavo  Hagenbeck Ítalo Macedo Telmo  Filho Thyago Cassimiro

CaracterísticasCaracterísticas

Efeitos EspeciaisEfeitos Especiais

• Sistema de "Compositor", permitindo efeitos de postprocessing em tela-cheia serem Sistema de "Compositor", permitindo efeitos de postprocessing em tela-cheia serem definidos fácilmente, via scripts se desejado.definidos fácilmente, via scripts se desejado.• Sistema de Partículas, incluindo emissores extensíveis, affectors e renderizadores Sistema de Partículas, incluindo emissores extensíveis, affectors e renderizadores (customizável através de plugins). Sistemas podem ser definidos em scripts de texto (customizável através de plugins). Sistemas podem ser definidos em scripts de texto para fácil modificação. Uso automático de "particle pooling" para máxima performance.para fácil modificação. Uso automático de "particle pooling" para máxima performance.• Suporte á Skyboxes, Skyplanes e Skydomes, muito fácil de usar.Suporte á Skyboxes, Skyplanes e Skydomes, muito fácil de usar.• Billboarding para sprites.Billboarding para sprites.• Ribbon trails (rastro)Ribbon trails (rastro)• Objetos transparentes administrados automaticamente (ordem de renderização e Objetos transparentes administrados automaticamente (ordem de renderização e depth buffer todos já configurados para você).depth buffer todos já configurados para você).

Page 17: Equipe: Carlos Maciel Elias  Colleto Gustavo  Hagenbeck Ítalo Macedo Telmo  Filho Thyago Cassimiro

CaracterísticasCaracterísticas

Outras CaracterísticasOutras Características

• Infraestrutura comum de resources para administração de memória e carregar de Infraestrutura comum de resources para administração de memória e carregar de arquivos comprimidos (ZIP, PK3).arquivos comprimidos (ZIP, PK3).• Arquitetura de plugins flexível permite a engine ser estendida sem precisar recompilar.Arquitetura de plugins flexível permite a engine ser estendida sem precisar recompilar.• 'Controllers" te permitem organizar valores derivados entre objetos de forma fácil, ex: 'Controllers" te permitem organizar valores derivados entre objetos de forma fácil, ex: mudar a cor de uma nave baseado nos escudo restante.mudar a cor de uma nave baseado nos escudo restante.• Debugging memory manager para identificar vazamento de memória (memory leak).Debugging memory manager para identificar vazamento de memória (memory leak).• ReferenceAppLayer provê um exemplo de como combinar o OGRE com outras ReferenceAppLayer provê um exemplo de como combinar o OGRE com outras libraries, por exemplo ODE para colisão e física.libraries, por exemplo ODE para colisão e física.• XMLConverter para converter formatos eficientes em binário para/de arquivos XML.XMLConverter para converter formatos eficientes em binário para/de arquivos XML.

Page 18: Equipe: Carlos Maciel Elias  Colleto Gustavo  Hagenbeck Ítalo Macedo Telmo  Filho Thyago Cassimiro

Arquitetura

Page 19: Equipe: Carlos Maciel Elias  Colleto Gustavo  Hagenbeck Ítalo Macedo Telmo  Filho Thyago Cassimiro

Arquitetura

Root

• É o primeiro objeto a ser criado e o último a ser destruído. É o ponto de entrada do sistema OGRE.

• Através dele pode-se configurar e acessar todo o sistema.

• Objetos importantes do sistema tais como SceneManager e RenderSystem são referenciados a partir de Root.

Page 20: Equipe: Carlos Maciel Elias  Colleto Gustavo  Hagenbeck Ítalo Macedo Telmo  Filho Thyago Cassimiro

Arquitetura

SceneManager• É responsável por organizar o conteúdo da cena.

• É o SceneManager que cria e gerencia todas as câmeras, objetos móveis, luzes e materiais (propriedades da superfícies de objetos).

• Envia a imagem a ser processada para o RenderSystem.

• Através dele nós e objetos móveis podem ser criados e acessados:• SceneManager::createLight() / getLight();• SceneManager::createSceneNode() / getSceneNode();

SceneManager::createCamera() / getCamera();

Page 21: Equipe: Carlos Maciel Elias  Colleto Gustavo  Hagenbeck Ítalo Macedo Telmo  Filho Thyago Cassimiro

Arquitetura

RenderSystem

• Classe abstrata que define a interface OGRE e a API 3D.

• Responsável pela execução de comandos de renderização e configura opções da API gráfica utilizada.

• Não deve ser acessada diretamente.

• Exceto quando se necessita criar múltiplas janelas de renderização, ou quando se deseja acessar dados presentes apenas no RenderSystem.

Page 22: Equipe: Carlos Maciel Elias  Colleto Gustavo  Hagenbeck Ítalo Macedo Telmo  Filho Thyago Cassimiro

Arquitetura

Entity

• É uma instância de um objeto móvel na cena.

• Possui uma malha geométrica associada (mesh). Pode-se utilizar várias entities referenciando um mesmo mesh.

• São criadas através do método SceneManager::createEntity(), passando como parâmetro um nome para a entidade e o nome do arquivo .mesh.

• Cada Entity tem um Material que pode ser modificado através do método subEntity::setMaterialName(), proporcionando uma aparência diferente ao Mesh que originou.

Page 23: Equipe: Carlos Maciel Elias  Colleto Gustavo  Hagenbeck Ítalo Macedo Telmo  Filho Thyago Cassimiro

Arquitetura

SceneNode• Tem como função agrupar entidades, luzes, câmeras e objetos associados e armazenar

informações relativas a posição, orientação e escala destes dentro da cena.

• Toda entidade deve estar associada a um SceneNode para se tornar visível.

• Existe uma hierarquia de SceneNode, cuja raiz pode ser acessada através do método SceneManager::getRootSceneNode(). Para criar nós filhos utiliza-se o método SceneNode::CreateChildSceneNode().

• Pode-se aplicar transformações espaciais às entidades associadas a cada SceneNode e seus filhos.

• Pode-se realizar uma busca por SceneNode através do método:sceneManager->getSceneNode(“nomeDoSceneNode”).

Page 24: Equipe: Carlos Maciel Elias  Colleto Gustavo  Hagenbeck Ítalo Macedo Telmo  Filho Thyago Cassimiro

Arquitetura

Camera• Representa um ponto de vista da cena.

• É simbolicamente representado como um nó com propriedade de Frustum.

• Essa propriedade representa uma área restrita de visualização, com atributos como campo de vista (ângulo de abertura), relação entre altura e largura, planos que delimitam o volume de visualização (near plane e far plane).

• Possui também orientação e posição, podem ser alteradas dinamicamente.

• Câmeras são criadas através do SceneManager associando a um nome.

Page 25: Equipe: Carlos Maciel Elias  Colleto Gustavo  Hagenbeck Ítalo Macedo Telmo  Filho Thyago Cassimiro

Geometria

• Vérticies e materiais• Meshes e sub-meshes• Entities e sub-entities• Hardware buffers

Page 26: Equipe: Carlos Maciel Elias  Colleto Gustavo  Hagenbeck Ítalo Macedo Telmo  Filho Thyago Cassimiro

Vértices e Materiais

• Dados 3d são representados através de “indexed face sets”, que é feito por um array de vértices e um array de índices. Isso permite que os vértices sejam processados apenas uma vez

• Para renderizar é preciso descrever como utilizar esses dados, é aí que entram os materiais (eg relacionar textura e com coordenadas de textura)

• Materiais podem ser vistos como “programas” que recebem dados de vértices e índices

Page 27: Equipe: Carlos Maciel Elias  Colleto Gustavo  Hagenbeck Ítalo Macedo Telmo  Filho Thyago Cassimiro

Materiais

• Definem grande parte da renderização• Precisa ser bem trabalhado quando se quer portabilidade. É

preciso fornecer diferentes maneiras de se obter um mesmo efeito, a fim de que uma delas seja compatível com a plataforma/placa de vídeo

• São uma lista de técnicas. Uma técnica consiste em um ou mais passos. OGRE faz otimizações para reduzir a troca de contexto e garantir a ordem correta para, por exemplo, efeitos de transparência

Page 28: Equipe: Carlos Maciel Elias  Colleto Gustavo  Hagenbeck Ítalo Macedo Telmo  Filho Thyago Cassimiro

Meshes e sub-meshes

• Meshes: são unidades lógicas que representam objetos, ex: carro, personagem, robô. Facilitam a manipulação e renderização de objetos. São compostos por diferentes partes cada uma com diferentes materiais

• Sub-Meshes: Essas partes são os Sub-Meshes, que são atômicos, contém apenas dados de vértice/índice e têm um único material.

• Meshes armazenam outras informações como métodos para renderização de sombras, grupo de recursos, status, etc.

Page 29: Equipe: Carlos Maciel Elias  Colleto Gustavo  Hagenbeck Ítalo Macedo Telmo  Filho Thyago Cassimiro

Entities

• Materiais mudam com frequencia, mantendo os dados de vertice/indice (ex: vários carros numa corrida)

• Entities são ponteiros para Meshes, mas podem sobrepor os materias das Sub-Meshes, através das Sub-Entities que existem para cada Sub-Mesh

• Entities guardam informaçoes de como o mesh aparece na cena. Como: flags (ex: se é visível ou não), bounding box, fila (ray query)

Page 30: Equipe: Carlos Maciel Elias  Colleto Gustavo  Hagenbeck Ítalo Macedo Telmo  Filho Thyago Cassimiro

Entities

Page 31: Equipe: Carlos Maciel Elias  Colleto Gustavo  Hagenbeck Ítalo Macedo Telmo  Filho Thyago Cassimiro

Sub-Entities

• Sub-entity estão relacionadas com sub-mesh.• Possuem seu próprio material• Ao terem seu material alterado apenas uma

Entity sofrerá mudança, ao passo em que uma sub-mesh é alterada, várias Entitys sofrerão mudanças.

Page 32: Equipe: Carlos Maciel Elias  Colleto Gustavo  Hagenbeck Ítalo Macedo Telmo  Filho Thyago Cassimiro

Hardware Buffers• Dados de vértice e índice são representados através de uma das

formas mais eficientes, chamada de “mecanismo de estado da arte”. No caso, significa utilizar Hardware Buffers.

• È uma área de memória RAM fora do núcleo do sistema, geralmente é a vídeo RAM. São eficientes porque limitam a transferência entre a CPU e a GPU, e fazem com que os dados estejam mais próximos do local de uso. São muito menos flexíveis e que memória do sistema, e em alguns casos geram duplicação de dados (eg colisão)

• São muito menos flexíveis que a memória RAM

Page 33: Equipe: Carlos Maciel Elias  Colleto Gustavo  Hagenbeck Ítalo Macedo Telmo  Filho Thyago Cassimiro

Exemplo

• Ninja é um Mesh• Corpo é um sub-mesh• Espada é um sub-mesh

Page 34: Equipe: Carlos Maciel Elias  Colleto Gustavo  Hagenbeck Ítalo Macedo Telmo  Filho Thyago Cassimiro

Scripts

Definição: Arquivos de texto que servem como meio alternativo ao código fonte para a criação de recursos pelo engine.

Initialization Scripts

• Faz o carregamento dos plugins, auto-preenchimento das opções de configuração e definição de caminhos para os recursos utilizados pela aplicação.

“plugins.cfg”, “ogre.cfg” e “resources.cfg”

– Plugins.cfg => Localiza a pasta onde estarão localizados os plugins listados desse arquivo.

– Ogre.cfg => Localiza pastas e arquivos compactados que possuem mais arquivos de scripts.

– Resources.cfg => Contém os valores configurados mais recentemente pelo usuário.

Page 35: Equipe: Carlos Maciel Elias  Colleto Gustavo  Hagenbeck Ítalo Macedo Telmo  Filho Thyago Cassimiro

Scripts

• Particle Scripts

Scripts de partículas permitem que sejam definidos sistemas departículas para serem instanciados no código, sem ser

necessáriocodificar as próprias configurações no código-fonte, permitindomudanças rápidas. Sistemas de partículas definidos em scriptssão usados como modelos e muitos sistemas podem ser criadosa partir deles em tempo de execução.

Page 36: Equipe: Carlos Maciel Elias  Colleto Gustavo  Hagenbeck Ítalo Macedo Telmo  Filho Thyago Cassimiro

Scripts

• Particle Scripts– Scripts de sistemas de partículas são carregados

em tempo de inicialização pelo sistema: por default ele procura em todos os locais de recursos comuns por arquivos com a extensão “.particle” e os processa.

– Uma vez processados, o código pode instanciar sistemas baseados nos scripts.

Page 37: Equipe: Carlos Maciel Elias  Colleto Gustavo  Hagenbeck Ítalo Macedo Telmo  Filho Thyago Cassimiro

Scripts

• Particle Scripts– Exemplo de script de partículas:

// A sparkly purple fountain Examples/PurpleFountain { material Examples/Flare2particle_width 20particle_height 20cull_each falsequota 10000billboard_type oriented_self

Page 38: Equipe: Carlos Maciel Elias  Colleto Gustavo  Hagenbeck Ítalo Macedo Telmo  Filho Thyago Cassimiro

Scripts// Area emitteremitter Point {angle 15emission_rate 75time_to_live 3direction 0 1 0velocity_min 250velocity_max 300colour_range_start 1 0 0colour_range_end 0 0 1 }// Gravityaffector LinearForce {force_vector 0 -100 0force_application add }// Faderaffector ColourFader {red -0.2green -0.25blue -0.25 } }

Page 39: Equipe: Carlos Maciel Elias  Colleto Gustavo  Hagenbeck Ítalo Macedo Telmo  Filho Thyago Cassimiro

Scripts

• Overlay Scripts– Scripts de superposição oferecem a habilidade de

definir superposições em um script que pode ser reusado facilmente. Eles também são carregados e processados em tempo de inicialização, quando o sistema procura por arquivos de extensão “.overlay”.

Page 40: Equipe: Carlos Maciel Elias  Colleto Gustavo  Hagenbeck Ítalo Macedo Telmo  Filho Thyago Cassimiro

Scripts

• Overlay Scripts– Exemplo de Overlay Scripts// The name of the overlay comes first MyOverlays/ANewOverlay {zorder 200container Panel(MyOverlayElements/TestPanel) {// Center it horizontally, put it at the topleft 0.25top 0width 0.5height 0.1material MyMaterials/APanelMaterial // Another panel nested in this onecontainer Panel(MyOverlayElements/AnotherPanel) {left 0top 0width 0.1height 0.1material MyMaterials/NestedPanel } } }

Page 41: Equipe: Carlos Maciel Elias  Colleto Gustavo  Hagenbeck Ítalo Macedo Telmo  Filho Thyago Cassimiro

Scripts

• Font Definition Scripts– OGRE usa fontes baseadas em texturas. A forma

final de uma fonte é um objeto Material gerado pela fonte e um conjunto de informações de coordenadas de texturas de “glyph”(caracter).

Page 42: Equipe: Carlos Maciel Elias  Colleto Gustavo  Hagenbeck Ítalo Macedo Telmo  Filho Thyago Cassimiro

Scripts

• Font Definition Scripts– Existem duas formas de usar fontes em OGRE:

• Criar uma textura de fonte usando um pacote de arte ou uma ferramenta de criação de fontes.

• Fazer o OGRE gerar uma textura de fonte baseada em uma fonte truetype.

Page 43: Equipe: Carlos Maciel Elias  Colleto Gustavo  Hagenbeck Ítalo Macedo Telmo  Filho Thyago Cassimiro

Scripts

• Font Definition Scripts– Os arquivos de definições de fontes “.fontdef” são

buscados, carregados e processados em tempo de inicialização e seu formato básico é:

<font_name> {type <image | truetype>source <image file | truetype font file>...... custom attributes depending on type}

Page 44: Equipe: Carlos Maciel Elias  Colleto Gustavo  Hagenbeck Ítalo Macedo Telmo  Filho Thyago Cassimiro

• EclipseEclipse• NetBeansNetBeans• Code::BlocksCode::Blocks• DevC++DevC++• Visual C++Visual C++

Ambientes de Ambientes de desenvolvimentodesenvolvimento

Page 45: Equipe: Carlos Maciel Elias  Colleto Gustavo  Hagenbeck Ítalo Macedo Telmo  Filho Thyago Cassimiro

Ambientes de Ambientes de desenvolvimentodesenvolvimento

EclipseEclipse

• RequisitosRequisitos• Ogre4J ou Ogre4EclipseOgre4J ou Ogre4Eclipse

Page 46: Equipe: Carlos Maciel Elias  Colleto Gustavo  Hagenbeck Ítalo Macedo Telmo  Filho Thyago Cassimiro

Ambientes de Ambientes de desenvolvimentodesenvolvimento

NetBeansNetBeans

• RequisitosRequisitos• Ogre4JOgre4J

Page 47: Equipe: Carlos Maciel Elias  Colleto Gustavo  Hagenbeck Ítalo Macedo Telmo  Filho Thyago Cassimiro

Ambientes de Ambientes de desenvolvimentodesenvolvimento

Eclipse + CDTEclipse + CDT• RequisitosRequisitos

• Eclipse C/C++ Development ToolsEclipse C/C++ Development Tools• MinGWMinGW• MSYSMSYS• OgreSDKOgreSDK

Page 48: Equipe: Carlos Maciel Elias  Colleto Gustavo  Hagenbeck Ítalo Macedo Telmo  Filho Thyago Cassimiro

Ambientes de Ambientes de desenvolvimentodesenvolvimento

Code::BlocksCode::Blocks

• RequisitosRequisitos• MinGWMinGW• OgreSDK para Code::BlocksOgreSDK para Code::Blocks

Page 49: Equipe: Carlos Maciel Elias  Colleto Gustavo  Hagenbeck Ítalo Macedo Telmo  Filho Thyago Cassimiro

Ambientes de Ambientes de desenvolvimentodesenvolvimento

DevC++DevC++

• RequisitosRequisitos• Versão 4.9.9.1Versão 4.9.9.1• Ogre DevPakOgre DevPak

Page 50: Equipe: Carlos Maciel Elias  Colleto Gustavo  Hagenbeck Ítalo Macedo Telmo  Filho Thyago Cassimiro

Ambientes de Ambientes de desenvolvimentodesenvolvimento

Visual StudioVisual Studio

• RequisitosRequisitos•Microsoft Platform SDK(PSDK)•OgreSDK

Page 51: Equipe: Carlos Maciel Elias  Colleto Gustavo  Hagenbeck Ítalo Macedo Telmo  Filho Thyago Cassimiro

Ambientes de Ambientes de desenvolvimentodesenvolvimento

ConclusõesConclusões

• LinguagensLinguagens•PerlPerl•PureBasicPureBasic•PythonPython•RubyRuby•JavaJava•C++C++

Page 52: Equipe: Carlos Maciel Elias  Colleto Gustavo  Hagenbeck Ítalo Macedo Telmo  Filho Thyago Cassimiro

Facilidades

• Geração de Sombras;

• Render-to-Texture;

• Mouse Picking;

Page 53: Equipe: Carlos Maciel Elias  Colleto Gustavo  Hagenbeck Ítalo Macedo Telmo  Filho Thyago Cassimiro

Geração de Sombras

• Stencil Additive;

• Stencil Modulative;

• Texture Modulative;

Page 54: Equipe: Carlos Maciel Elias  Colleto Gustavo  Hagenbeck Ítalo Macedo Telmo  Filho Thyago Cassimiro
Page 55: Equipe: Carlos Maciel Elias  Colleto Gustavo  Hagenbeck Ítalo Macedo Telmo  Filho Thyago Cassimiro

Render-to-Texture

Renderiza cenas em texturas que sãoutilizadas em materiais para torná-los reflexivos.

Page 56: Equipe: Carlos Maciel Elias  Colleto Gustavo  Hagenbeck Ítalo Macedo Telmo  Filho Thyago Cassimiro
Page 57: Equipe: Carlos Maciel Elias  Colleto Gustavo  Hagenbeck Ítalo Macedo Telmo  Filho Thyago Cassimiro

Mouse Picking

• Seleção de objetos da cena utilizando o mouse;

• O Picking padrão implementado no OGRE detecta os objetos com base no AxisAlignedBox dos objetos.

Page 58: Equipe: Carlos Maciel Elias  Colleto Gustavo  Hagenbeck Ítalo Macedo Telmo  Filho Thyago Cassimiro
Page 59: Equipe: Carlos Maciel Elias  Colleto Gustavo  Hagenbeck Ítalo Macedo Telmo  Filho Thyago Cassimiro

Exemplos de uso

Por ter...• Maior qualidade no resultado da renderização;• Ferramenta gratuita sobre GPL e Ogre

unrestricted use;• Boa taxa de quadros na renderização;• Flexibilidade;• Escalabilidade;Amplo campo de atuação

Page 60: Equipe: Carlos Maciel Elias  Colleto Gustavo  Hagenbeck Ítalo Macedo Telmo  Filho Thyago Cassimiro

Publicações

• Simulação de ambientes de trabalho através de RV

Page 61: Equipe: Carlos Maciel Elias  Colleto Gustavo  Hagenbeck Ítalo Macedo Telmo  Filho Thyago Cassimiro

Publicações

• Desenvolvimento de aplicações de realidade aumentada para Pocket PC

Page 62: Equipe: Carlos Maciel Elias  Colleto Gustavo  Hagenbeck Ítalo Macedo Telmo  Filho Thyago Cassimiro

Publicações

• Ah sim... E jogos, claro!

Page 63: Equipe: Carlos Maciel Elias  Colleto Gustavo  Hagenbeck Ítalo Macedo Telmo  Filho Thyago Cassimiro

Referências

• [1] [Anon], [no date]. Scene-graphs [online]. Disponível em: http://en.wikipedia.org/wiki/Scene_graphAcessado em:Maio de 2008