equipe: ◦ adones cunha ◦ adriano damascena ◦ almir gomes ◦ fábio melo ◦ gileno alves ◦...

35
Equipe: Adones Cunha Adriano Damascena Almir Gomes Fábio Melo Gileno Alves Tiago Mendonça

Upload: vinicius-nunes-da-fonseca

Post on 07-Apr-2016

214 views

Category:

Documents


1 download

TRANSCRIPT

Page 1: Equipe: ◦ Adones Cunha ◦ Adriano Damascena ◦ Almir Gomes ◦ Fábio Melo ◦ Gileno Alves ◦ Tiago Mendonça

Equipe:◦Adones Cunha◦Adriano Damascena◦Almir Gomes◦Fábio Melo◦Gileno Alves◦Tiago Mendonça

Page 2: Equipe: ◦ Adones Cunha ◦ Adriano Damascena ◦ Almir Gomes ◦ Fábio Melo ◦ Gileno Alves ◦ Tiago Mendonça

HomenagensHomenagens "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

Page 3: Equipe: ◦ Adones Cunha ◦ Adriano Damascena ◦ Almir Gomes ◦ Fábio Melo ◦ Gileno Alves ◦ Tiago Mendonça

ResponsáveisSteve 'sinbad' Streeting

Brian 'praetor' Johnstone

Assaf Raman

Page 4: Equipe: ◦ Adones Cunha ◦ Adriano Damascena ◦ Almir Gomes ◦ Fábio Melo ◦ Gileno Alves ◦ Tiago Mendonça

O que é OGRE?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

Page 5: Equipe: ◦ Adones Cunha ◦ Adriano Damascena ◦ Almir Gomes ◦ Fábio Melo ◦ Gileno Alves ◦ Tiago Mendonça

LicençaLicençaOGRE 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)

Page 6: Equipe: ◦ Adones Cunha ◦ Adriano Damascena ◦ Almir Gomes ◦ Fábio Melo ◦ Gileno Alves ◦ Tiago Mendonça

Características BásicasCaracterí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

Page 7: Equipe: ◦ Adones Cunha ◦ Adriano Damascena ◦ Almir Gomes ◦ Fábio Melo ◦ Gileno Alves ◦ Tiago Mendonça

ProdutividadeInterface simples e fácil de usar

Framework de exemplo extensiva

Requisitos comuns

Design limpo e organizado

Page 8: Equipe: ◦ Adones Cunha ◦ Adriano Damascena ◦ Almir Gomes ◦ Fábio Melo ◦ Gileno Alves ◦ Tiago Mendonça

Suporte a plataformas e APIs 3DSuporte 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).

Page 9: Equipe: ◦ Adones Cunha ◦ Adriano Damascena ◦ Almir Gomes ◦ Fábio Melo ◦ Gileno Alves ◦ Tiago Mendonça

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

Page 10: Equipe: ◦ Adones Cunha ◦ Adriano Damascena ◦ Almir Gomes ◦ Fábio Melo ◦ Gileno Alves ◦ Tiago Mendonça

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

Page 11: Equipe: ◦ Adones Cunha ◦ Adriano Damascena ◦ Almir Gomes ◦ Fábio Melo ◦ Gileno Alves ◦ Tiago Mendonça

AnimaçãoSuporte 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

Page 12: Equipe: ◦ Adones Cunha ◦ Adriano Damascena ◦ Almir Gomes ◦ Fábio Melo ◦ Gileno Alves ◦ Tiago Mendonça

Características de CenaAdministração flexível de cenas Vários plugins-exemplo (ex: BSP,

Octree).Gráfico de cena hierárquicoVárias técnicas de renderização

de sombras

Page 13: Equipe: ◦ Adones Cunha ◦ Adriano Damascena ◦ Almir Gomes ◦ Fábio Melo ◦ Gileno Alves ◦ Tiago Mendonça

Efeitos EspeciaisSistema de “Compositor”Sistema de Partículas, affectors e

renderizadores Fácil suporte á Skyboxes,

Skyplanes e Skydomes Ribbon trails (rastro)

Page 14: Equipe: ◦ Adones Cunha ◦ Adriano Damascena ◦ Almir Gomes ◦ Fábio Melo ◦ Gileno Alves ◦ Tiago Mendonça

Outras CaracterísticasArquitetura 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

Page 15: Equipe: ◦ Adones Cunha ◦ Adriano Damascena ◦ Almir Gomes ◦ Fábio Melo ◦ Gileno Alves ◦ Tiago Mendonça

Exemplos de UsoAnkh – Jogo de aventura no Egito

◦1° produto comercial usando OGRE – nov/2005

Page 17: Equipe: ◦ Adones Cunha ◦ Adriano Damascena ◦ Almir Gomes ◦ Fábio Melo ◦ Gileno Alves ◦ Tiago Mendonça

RootRenderSyste

mSceneManager Enumerator

Material Entity SceneNode Camera

TexturaLayer Mesh

Arquitetura

Page 18: Equipe: ◦ Adones Cunha ◦ Adriano Damascena ◦ Almir Gomes ◦ Fábio Melo ◦ Gileno Alves ◦ Tiago Mendonça

Objeto RenderSystemObjeto RenderSystemInteface 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

Page 19: Equipe: ◦ Adones Cunha ◦ Adriano Damascena ◦ Almir Gomes ◦ Fábio Melo ◦ Gileno Alves ◦ Tiago Mendonça

Objeto EntityObjeto EntityÉ uma instância de um objeto móvel

Possui um malha associada (mesh)

Para ser renderizada, é associada um SceneNode

SceneManager::createEntity()

Page 20: Equipe: ◦ Adones Cunha ◦ Adriano Damascena ◦ Almir Gomes ◦ Fábio Melo ◦ Gileno Alves ◦ Tiago Mendonça

Objeto SceneNodeObjeto SceneNodeUtilizado para agrupar entidades,

luzes, câmeras e objetos móveis

Armazena posição,escala e orientação

SceneManager::getRootSceneNode()

SceneNode::createChildSceneNode()

Page 21: Equipe: ◦ Adones Cunha ◦ Adriano Damascena ◦ Almir Gomes ◦ Fábio Melo ◦ Gileno Alves ◦ Tiago Mendonça

Objeto CâmeraObjeto CâmeraUm ponto de vista da cena,

representado por um nó de propriedades Frustum

Page 22: Equipe: ◦ Adones Cunha ◦ Adriano Damascena ◦ Almir Gomes ◦ Fábio Melo ◦ Gileno Alves ◦ Tiago Mendonça

Objeto CâmeraObjeto CâmeraCriada 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

Page 23: Equipe: ◦ Adones Cunha ◦ Adriano Damascena ◦ Almir Gomes ◦ Fábio Melo ◦ Gileno Alves ◦ Tiago Mendonça

OverlaysOverlaysEstruturas para renderização de

elementos na frente da cena

Pode ser criado através de um script ou do OverlayManager

OverlayManager::createOverlayElement()

Overlay::show()

Page 24: Equipe: ◦ Adones Cunha ◦ Adriano Damascena ◦ Almir Gomes ◦ Fábio Melo ◦ Gileno Alves ◦ Tiago Mendonça

ViewportsViewportsO 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

Page 25: Equipe: ◦ Adones Cunha ◦ Adriano Damascena ◦ Almir Gomes ◦ Fábio Melo ◦ Gileno Alves ◦ Tiago Mendonça

Facilidades do EngineFacilidades do EngineDesenvolver aplicação mais

agradável ao usuário◦Visual◦Realismo◦Interação

Geração de SombrasMouse PickingRender-to-Texture

Page 26: Equipe: ◦ Adones Cunha ◦ Adriano Damascena ◦ Almir Gomes ◦ Fábio Melo ◦ Gileno Alves ◦ Tiago Mendonça

Geração de SombrasRealismo

◦Distâncias◦Iluminação◦Formas

Mais Realismo = Mais Custo

Page 27: Equipe: ◦ Adones Cunha ◦ Adriano Damascena ◦ Almir Gomes ◦ Fábio Melo ◦ Gileno Alves ◦ Tiago Mendonça

Geração de SombrasA engine possui três tipos de

cálculo de sombras:

◦Texture Modulative◦Stencil Modulative◦Stencil Additive

Page 28: Equipe: ◦ Adones Cunha ◦ Adriano Damascena ◦ Almir Gomes ◦ Fábio Melo ◦ Gileno Alves ◦ Tiago Mendonça

Geração de SombrasTexture 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

Page 29: Equipe: ◦ Adones Cunha ◦ Adriano Damascena ◦ Almir Gomes ◦ Fábio Melo ◦ Gileno Alves ◦ Tiago Mendonça

Geração de Sombras1. SceneManager::setShadowTechnique(

)2. Uma ou mais luzes devem ser criadas

Sem luz = Sem sombra3. Desabilita-se a projeção de sombra

nos objetos que não devem projetá-las Entity::setCastShadows()

4. Define-se quais objetos receberão sombra ou não Material Script ou Código

Page 30: Equipe: ◦ Adones Cunha ◦ Adriano Damascena ◦ Almir Gomes ◦ Fábio Melo ◦ Gileno Alves ◦ Tiago Mendonça

Geração de Sombras

Page 31: Equipe: ◦ Adones Cunha ◦ Adriano Damascena ◦ Almir Gomes ◦ Fábio Melo ◦ Gileno Alves ◦ Tiago Mendonça

Mouse PickingO 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.

Page 32: Equipe: ◦ Adones Cunha ◦ Adriano Damascena ◦ Almir Gomes ◦ Fábio Melo ◦ Gileno Alves ◦ Tiago Mendonça

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.

Page 33: Equipe: ◦ Adones Cunha ◦ Adriano Damascena ◦ Almir Gomes ◦ Fábio Melo ◦ Gileno Alves ◦ Tiago Mendonça

Mouse PickingO 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

Page 34: Equipe: ◦ Adones Cunha ◦ Adriano Damascena ◦ Almir Gomes ◦ Fábio Melo ◦ Gileno Alves ◦ Tiago Mendonça

Mouse Picking

Page 35: Equipe: ◦ Adones Cunha ◦ Adriano Damascena ◦ Almir Gomes ◦ Fábio Melo ◦ Gileno Alves ◦ Tiago Mendonça

ComunidadeOGRE Wiki

◦Características◦Utilização◦API◦Instalação

FórumTestimoniaisIRC