350 likes | 444 Views
Equipe: Adones Cunha Adriano Damascena Almir Gomes Fábio Melo Gileno Alves Tiago Mendonça. Homenagens.
E N D
Equipe: • Adones Cunha • Adriano Damascena • Almir Gomes • Fábio Melo • Gileno Alves • Tiago Mendonça
Homenagens • "O Ogre é um brilhante sinal do desenvolvimento em código-aberto.Ostentando uma engine de renderização rápida e versátil, uma API elegante e simples e uma comunidade encorajadora que não deixa questões sem resposta, Ogre oferece um produto que vai além das engines de renderização comerciais. Ogre provou por a si mesmo como um habilitador de rápido desenvolvimento de aplicativos em 3D."Time de Desenvolvimento da 3DNA • "Para o desenvolvedor temperado o OGRE parece diferente. É como a faca de aço de carbono que meu amigo usa para cortar sushi no restaurante dele. Enganosamente simples, e ainda sim uma ferramenta muito potente na mão de um artesão. Uma única lâmina, um único propósito. O Zen das engines em 3D. "Kai-Peter BackmanShortHike.com
Responsáveis • Steve 'sinbad' Streeting • Brian 'praetor' Johnstone • Assaf Raman
O que é OGRE? OGRE (Object-oriented Graphics Rendering Engine) Engine Gráfica 3D Open-Source orientada à cena Não é um Game Engine, mas sim um Rendering Engine Versões teste em Python, Java e .NET
Licença • OGRE foi concebida sob uma licença open source • O OGRE tem como licença default a GNU Lesser Public License (LGPL) • Pode ser utilizado sob a OGRE Unrestricted License (OUL)
Características Básicas • Orientada a objetos • Provê Ferramentas, Plug-ins e Add-ons • É compatível com inúmeras configurações de Hardware 3D • Interface de programação oferecida nativamente é escrita em C++ • Multiplataforma • Encapsula o uso de bibliotecas como OpenGL e Direct3D • Comunidade muito ativa
Produtividade • Interface simples e fácil de usar • Framework de exemplo extensiva • Requisitos comuns • Design limpo e organizado
Suporte a plataformas e APIs 3D • Suporte a Direct3D e OpenGL. • Suporte a Windows (todas as principais versões), Linux e Mac OSX. • Compila no Visual C++ e Code::Blocks no Windows. • Compila no GCC 3+ no Linux / Mac OSX (usando XCode).
Suporte a Material / Shader • Poderosa linguagem de declaração de materiais • Suporta Vertex e Fragment programs (shaders), suporta tanto assembler quanto Cg, DirectX9 HLSL, ou GLSL • Suporte a Material LOD • Carregar texturas de arquivos PNG, JPEG, TGA, BMP ou DDS • Texturas podem ser providas em tempo real por plugins
Meshes (Malhas) • Formatos de malhas flexíveis são aceitos, separação dos conceitos de vertex buffers, index buffers, vertex declarations e buffer mappings. • Malhas progressivas (LOD), geradas manualmente ou automaticamente. • Biquadric Bezier patches para superfícies curvadas • Agrupamento de Geometria Estática
Animação • Suporte sofisticado de animação por esqueletos. • Suporte de animação de formas flexíveis. • Animação de SceneNodes para caminho de câmeras e técnicas similares, usando interpolação de spline quando necessário. • Trilhas de animação genéricas podem aceitar objetos plugáveis
Características de Cena • Administração flexível de cenas • Vários plugins-exemplo (ex: BSP, Octree). • Gráfico de cena hierárquico • Várias técnicas de renderização de sombras
Efeitos Especiais • Sistema de “Compositor” • Sistema de Partículas, affectors e renderizadores • Fácil suporte á Skyboxes, Skyplanes e Skydomes • Ribbon trails (rastro)
Outras Características • Arquitetura de plugins flexível permite a engine ser estendida sem precisar recompilar • ReferenceAppLayer provê um exemplo de como combinar o OGRE com outras libraries (ex: ODE, para colisões) • Infraestrutura comum de resources para administração de memória e carregar de arquivos comprimidos
Exemplos de Uso • Ankh – Jogo de aventura no Egito • 1° produto comercial usando OGRE – nov/2005
Exemplos de Uso • Featured Projects: http://www.ogre3d.org/index.php?set_albumName=album07&option=com_gallery&Itemid=55&include=view_album.php
Root RenderSystem SceneManager Enumerator Material Entity SceneNode Camera TexturaLayer Mesh Arquitetura
Objeto RenderSystem Inteface entre a API gráfica e o OGRE Executa a renderização Configura opções da API gráfica Não deve ser acessada diretamente
Objeto Entity É uma instância de um objeto móvel Possui um malha associada (mesh) Para ser renderizada, é associada um SceneNode SceneManager::createEntity()
Objeto SceneNode Utilizado para agrupar entidades, luzes, câmeras e objetos móveis Armazena posição,escala e orientação SceneManager::getRootSceneNode() SceneNode::createChildSceneNode()
Objeto Câmera Um ponto de vista da cena, representado por um nó de propriedades Frustum
Objeto Câmera Criada no SceneManager Camera* camera = sceneMgr->createCamera("Camera"); Deve ser associada a um RenderTarget (que pode ser uma janela ou textura) Normalmente,se associa uma câmera a um RenderWindow ao qual se associa um ViewPort
Overlays Estruturas para renderização de elementos na frente da cena Pode ser criado através de um script ou do OverlayManager OverlayManager::createOverlayElement() Overlay::show()
Viewports O Viewports tem informações de altura, largura,cor de fundo e posição do alvo Recurso usado para obter visualizações diferentes Através de Câmeras e Viewports pode-se criar efeitos de reflexão no ambiente pelo RenderTexture
Desenvolver aplicação mais agradável ao usuário Visual Realismo Interação Geração de Sombras Mouse Picking Render-to-Texture Facilidades do Engine
Geração de Sombras • Realismo • Distâncias • Iluminação • Formas • Mais Realismo = Mais Custo
Geração de Sombras • A engine possui três tipos de cálculo de sombras: • Texture Modulative • Stencil Modulative • Stencil Additive
Geração de Sombras • Texture Modulative • Menos custosa das três • Render-to-Texture • Stencil Additive • Mais custosa • Stencil Modulative • Menos precisa que a anterior, porém mais rápida
Geração de Sombras • SceneManager::setShadowTechnique() • Uma ou mais luzes devem ser criadas • Sem luz = Sem sombra • Desabilita-se a projeção de sombra nos objetos que não devem projetá-las • Entity::setCastShadows() • Define-se quais objetos receberão sombra ou não • Material Script ou Código
Mouse Picking • O que é? • Aplicativos 3D • Seleção de Objetos • Suportada nativamente pelo OGRE, de modo que aplicações (principalmente editores 3D) que necessitem desse tipo de requisito possam ser desenvolvidas.
Mouse Picking É realizado através do objeto raySceneQuery, criado pelo método sceneManager->createRayQuery(), que recebe um raio como parâmetro. Após a definição do raio, o objeto será executado.
Mouse Picking • O picking padrão do OGRE detecta objetos com base em seus AxisAlignedBox • Resultados imprecisos e rápidos • A implementação padrão do Picking no OGRE, por ser mais rápida, pode ser utilizada como um filtro inicial! • AxisAlignedBox é um tipo de BoundingBox que está sempre alinhado com o eixo de coordenadas do mundo
Comunidade • OGRE Wiki • Características • Utilização • API • Instalação • Fórum • Testimoniais • IRC