O que é o OGRE 3D?
O OGRE (Object-Oriented Graphics Rendering Engine, ou Engine de Renderização de Gráficos Orientada a Objetos) é uma engine em 3D flexível, orientada a cenas escrita em C++, feita para facilitar a produção de aplicativos usando gráficos em 3D acelerados por hardware. A classe da biblioteca abstrai todos os detalhes de usar bibliotecas como Direct3D e OpenGL e provê uma interface baseada em objetos e outras classes intuitivas.
O OGRE possuí uma grande flexibilidade e permite que VOCÊ escolha as outras bibliotecas que melhor se adaptam ao seu projeto.
O OGRE é uma das melhores engines 3d de código-fonte aberto, senão a melhor. Seu foco é a parte de renderização, portanto ausentando funções como I/O, Networking, etc… Ela é gratuita e está disponível no site: Site oficial da Ogre.
Versão Atual: 1.7
Características do OGRE 3D
Características de produtividade
- 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, exemplo: Direct3D/OpenGL.
- Framework de exemplo extensiva permite você colocar seu aplicativo para rodar rápido e fácil.
- Requisitos comuns como manejo de render states, spatial culling, mexendo com transparências são feitas para você automaticamente, poupando tempo precioso.
- Design limpo e organizado com documentação completa de todas as classes da engine.
- Comprovado, engine estável usada em vários produtos comerciais.
Suporte a plataformas e 3D APIs
- 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 permite manter os materiais fora de seu código.
- Suporta Vertex e Fragment programs (shaders), tanto programas em baixo-nível escritos em assembler como 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 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, 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.
- 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 alternativos para uma grande variedade de placas e o OGRE automaticamente usa o que é melhor suportado.
- 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.
- Carregar texturas de arquivos PNG, JPEG, TGA, BMP ou DDS, incluindo formatos incomuns como texturas 1D, texturas volumétricas, cubemaps e texturas comprimidas (DXT/S3TC).
- Texturas podem ser providas em tempo real por plugins, por exemplo uma alimentação de vídeo.
- Suporte a texturas projetivas fácil de usar.
Meshes (Malhas)
- Formatos de malhas flexíveis são aceitos, separação dos conceitos de vertex buffers, index buffers, vertex declarations e buffer mappings.
- Biquadric Bezier patches para superfícies curvadas.
- Malhas progressivas (LOD), geradas manualmente ou automaticamente.
- Agrupamento de geometria estática.
Animação
- Suporte sofisticado de animação por esqueletos.
- Combinação de várias animações com pesos variáveis.
- Skinning com peso de "bones" multiplos/variáveis.
- Pipelines de skinning em software ou hardware com compartilhamento de buffer inteligente.
- Controle de bones manual.
- Modos de interpolação configurável, troca de precisão por velocidade.
- Suporte de animação de formas flexíveis.
- Morph animation para aplicativos onde você deseja fazer simples combinações lineares entre formatos.
- Pose animation para animação de superfícies modernas, permitindo 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.
- Ambas as técnicas podem ser implementadas em hardware ou software dependendo do suporte de hardware.
- 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 para possibilitar animar qualquer parâmetro de qualquer objeto ao longo do tempo.
Características de Cena
- Administração flexível de cenas, altamente personalizável, liago a nenhum tipo de cena. Use classes pré-definidas para organização das cenas se elas servirem ou então coloque suas próprias subclasses para ganhar controle total sobre a organização das cenas.
- Vários plugins exemplo demonstram várias formas de manipulação da cena específica para um tipo particular de layout (ex: BSP, Octree).
- Gráfico de cena hierárquico; nodes permitem objetos serem anexados uns aos outros e seguir o movimento dos outros, estruturas articuladas e etc.
- 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 qualquer aceleração de hardware disponível.
- Características de consulta de cena.
Efeitos Especiais
- Sistema de "Compositor", permitindo que efeitos de postprocessing em tela-cheia sejam definidos facilmente, via scripts se desejado.
- Sistema de Partículas, incluindo emissores extensíveis, affectors e renderizadores (personalizá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.
- Suporte a Skyboxes, Skyplanes e Skydomes, muito fácil de usar.
- Billboarding para sprites.
- Ribbon trails (rastro).
- Objetos transparentes administrados automaticamente (ordem de renderização e depth buffer todos já configurados para você).
Outras Características
- Infraestrutura comum de recursos para administração de memória e carregamento de arquivos comprimidos (ZIP, PK3).
- Arquitetura de plugins flexível permite a engine ser estendida sem precisar recompilar.
- "Controllers" permitem organizar valores derivados entre objetos de forma fácil, ex: mudar a cor de uma nave baseado nos escudo restante.
- Debugging memory manager para identificar vazamento de memória (memory leak).
- ReferenceAppLayer provê um exemplo de como combinar o OGRE com outras bibliotecas, por exemplo ODE para colisão e física.
- XMLConverter para converter formatos eficientes em binário para/de arquivos XML.
Homenagens
"Nós estamos atualmente usando o Ogre3D em nosso simulador naval. Depois de testar outras engines gráficas em 3d, Ogre3D foi de longe a melhor combinação de qualidades: código limpo e legível, documentação excelênte, e uma grande comunidade.
Estas três características me fizeram escolher ele e até agora, depois de quase um ano e meio, Eu nunca me arrependi desta decisão. Ogre3D nos ajudou muito ao acelerar a fase de protótipo, testar novas técnicas para os algorítimos de física de forma realmente rápida, e como parte de minha Argo Engine, servindo realmente bem como módulo de apresentação."
Alvaro Pereyra Rabanal
Consultor Independente para a Marinha Peruana
"As características completas do Ogre, junto com a API bem feita e bem documentada foi a escolha perfeita para nossos próximos títulos. A engine nos possibilita usar tecnologia de ponta sem precisar gastar centenas de milhões de dólares para taxas de licenciamento que é inviável para pequenos times com o orçamento apertado. As questões nos fóruns nuca ficaram sem ser respondidas, o suporte também deixa pouco a desejar. E se ainda tem algo que você não pode fazer por si mesmo, sempre tem a Torus Knot Software em volta para te ajudar."
Thorsten Lange
Deck13 Interactive GmbH
"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
"Ogre nós proveu com uma sólida e confiável base para criar uma poderosa plataforma comercial. Ele provê um nível suficiente de abstração dos sistemas de renderização subjacentes para prover uma interface muito simples balanceada com o poder de chegar até o hardware se necessário.
Como uma aprovação para sua estabilidade, ele funcionou notávelmente bem em um ambiente embutido. A portabilidade transparente pemitiu o desenvolvimento em um ambiente Microsoft e subsequente desenvolvimento no Linux com uma facilidade sem sofrimentos. Com o constante desenvolvimento em uma comunidade crescente e cada vês mais encorajadora, nós temos planos em usar essa engine ainda por muitos anos a vir."
Chris Pratt
Diretor Técnico, AGD Design Ltd.
"Quando nós estávamos criando o Blink 3D nós sabiamos que para levar o 3D da Web para um próximo nível nós precisaríamos de uma engine com gráficos de ponta e de alta performance. Em nossa pesquisa nós examinamos e instantâneamente descartamos um número de engines gráficas respeitadas tanto comerciais quanto código aberto.
Quando olhamos para o Ogre nós notamos na hora, ele facilmente preencheu nosso critério e ainda mais. A arquitetura limpa, extensível e orientada a objetos se adaptava as nossas necessidades. Alguns projetos de código aberto freqüentemente consistem de códigos espaguete, não-mantíveis e obscuros. Eu acho que a coisa que mais gostei sobre o Ogre, é que eu não me sinto forçado a tomar banho cada vez que eu toco no coódigo."
Clive Jackson
CEO, Pelican Crossing, Inc.
"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 Backman
ShortHike.com
"Durante o desenvolvimento de Supremacy: Four Paths to power eu tive o prazer de usar Ogre para criar os efeitos de partículas e a funcionalidade do GUI que nosso jogo precisava. Devido a seu design orientado a objetos, foi fácil pegar o Ogre e começar a gerar o conteúdo funcional rápidamente. Por exemplo, se você pode aprender agora como usar um tipo de gerador de partículas no Ogre, você já sabe 90% do que você precisa usar para todos os outros tipos.
Em adição, criar scripts para componentes da interface é uma brisa desde que o jeito do Ogre é limpo e avançado. Em quando você pode (e nós fizemos) manipular os componentes do GUI através de código para efeitos avançados, é fácil colocar o GUI para rodar rápidamente. O design bem documentado do Ogre faz ele ótimo tanto para protótipo e para costumização de um produto já pronto."
Vance Vagell
Supremacy: Four Paths To Power