equipe: ◦ adones cunha ◦ adriano damascena ◦ almir gomes ◦ fábio melo ◦ gileno alves ◦...
TRANSCRIPT
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
ResponsáveisSteve 'sinbad' Streeting
Brian 'praetor' Johnstone
Assaf Raman
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
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)
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
ProdutividadeInterface simples e fácil de usar
Framework de exemplo extensiva
Requisitos comuns
Design limpo e organizado
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).
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çã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
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
Efeitos EspeciaisSistema de “Compositor”Sistema de Partículas, affectors e
renderizadores Fácil suporte á Skyboxes,
Skyplanes e Skydomes Ribbon trails (rastro)
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
Exemplos de UsoAnkh – Jogo de aventura no Egito
◦1° produto comercial usando OGRE – nov/2005
Exemplos de UsoFeatured Projects:
http://www.ogre3d.org/index.php?set_albumName=album07&option=com_gallery&Itemid=55&include=view_album.php
RootRenderSyste
mSceneManager Enumerator
Material Entity SceneNode Camera
TexturaLayer Mesh
Arquitetura
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
Objeto EntityObjeto EntityÉ uma instância de um objeto móvel
Possui um malha associada (mesh)
Para ser renderizada, é associada um SceneNode
SceneManager::createEntity()
Objeto SceneNodeObjeto SceneNodeUtilizado para agrupar entidades,
luzes, câmeras e objetos móveis
Armazena posição,escala e orientação
SceneManager::getRootSceneNode()
SceneNode::createChildSceneNode()
Objeto CâmeraObjeto CâmeraUm ponto de vista da cena,
representado por um nó de propriedades Frustum
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
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()
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
Facilidades do EngineFacilidades do EngineDesenvolver aplicação mais
agradável ao usuário◦Visual◦Realismo◦Interação
Geração de SombrasMouse PickingRender-to-Texture
Geração de SombrasRealismo
◦Distâncias◦Iluminação◦Formas
Mais Realismo = Mais Custo
Geração de SombrasA engine possui três tipos de
cálculo de sombras:
◦Texture Modulative◦Stencil Modulative◦Stencil Additive
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
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
Geração de Sombras
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.
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 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
Mouse Picking
ComunidadeOGRE Wiki
◦Características◦Utilização◦API◦Instalação
FórumTestimoniaisIRC